聊一聊ICMP协议以及ping的过程

      最后更新:2022-08-01 08:33:14 手机定位技术交流文章

      谈谈 pinging的过程

      ICMP协议

      ping是基于ICMP协议的,首先我们理解了ICMP

      什么是ICMP协议

      互联网控制消息协议(英语:Internet Control Message Protocol)是互联网控制消息协议。

      那么它是如何控制的?

      在复杂的网络传输环境中,网络包遇到各种问题,我们需要知道每次遇到的问题是什么。 因此,信息需要传输,报告遇到任何问题,因此,传输策略可以调整以控制整个情况。

      ICMP的功能是什么?

      ICMP的主要功能:验证IP包是否成功交付到目标地址,报告为什么IP包在发送过程中被丢弃的原因,并改进网络设置等。

      在通信中,如果因某种原因IP包无法到达目标地址,则IMP负责通知具体原因。

      工作流程如下图所示

      在这里插入图片描述

      宿主A发送像宿主B一样的包,但由于某种原因,路由器2无法在途中检测宿主B的存在,路由器2发送像宿主A那样的 ICMP目标不可访问的包,表明它未能发送包到宿主B。

      ICMP的此通知消息使用IP发送。

      因此,从路由器2返回的ICMP包通过路由器1传递到主机A,按照通常的路由器控制。 接收ICMP主机A分解了ICMP的第一个部分和数据区域,并了解问题的具体原因。

      ICMP包类型字段

      类是用于诊断的查询消息,即“查询消息类型”

      另一个类别是通知错误原因的错误消息,即“错误消息类型”。

      在这里插入图片描述

      查看报文类型

      返回消息-类型0和8

      返回消息用于在主机或路由器之间通信,以确定发送的数据包是否成功到达相反端,并使用 ping 命令实现此消息。

      在这里插入图片描述

      返回请求消息(类型8)可以发送到最终主机,返回响应消息(类型0)可以从最终主机接收。

      在这里插入图片描述

      与原始ICMP相比,还有两个领域:

      标识符:用于区分哪些应用程序发送ICMP包,例如处理PID作为标识符;

      序列数:序列数以0开始,每次发送新的返回请求时增加1,可以用于验证网络包是否丢失。

      在选项数据中, ping还存储发送请求的时间值,以计算返回时间和返回时间,指示路径的长度。

      差错报文类型

      常用的差错报文类型

      • 目标不可访问消息-类型3
      • 源抑制消息-类型4
      • 重新分配的邮件-类型5
      • 加班邮件-第11类

      目标不可达消息

      当一个IP路由器无法将IP包发送到目标地址时,它将返回一个无法访问目标的ICMP消息给发送器主机,并显示无法访问的具体原因,该原因记录在ICMP包头的代码字段中。

      因此,根据特定信息ICMP不可访问的,发送器主机也可以理解该不可访问的特定原因。

      • 无法触及的网络代码为0
      • 主机不可访问代码为1
      • 不兼容代码为2
      • 港口不可访问代码为3
      • 你需要分开,但设置非分开的位码为4

      原点抑制消息

      在使用低速广域线路的情况下,连接WAN的路由器可能会遇到网络拥堵的问题。

      ICMP源抑制消息的目的是减慢拥堵.

      当路由器发送数据到低速线时,其发送队列的缓存值为0,无法发送出去时,可以发送ICMP源抑制器消息到IP包的源地址。

      接收消息的主机知道在线路上某个地方存在交通堵塞,从而增加IP包的传输间隔,减少网络交通堵塞。

      然而这种ICMP可能会引起不公平的网络通信,一般不被使用。

      重定向消息

      如果路由器发现发送器主机使用数据不是发送的最佳路径,它将返回一个ICMP重新向主机发送的消息。

      该消息包含最适当的路由信息和源数据。 这主要发生在路由器有更好的路由信息时。 路由器将通过这种ICMP消息通知发送者,允许它下一次发送到另一个路由器。

      超时消息

      在IP包中有一个叫做TTL(Time To Live)的字段,每当路由器通过它时,该字段的值都会减少1,直到它降低到0,然后丢弃IP包。

      此时,路由器将向端口主机发送ICMP超时消息,并通知丢弃的包。

      设置IP包生存困难周期的主要目的是避免在路由控制遇到发生周期问题时,IP包在网络上连续传输。

      在这里插入图片描述

      此外,有时也可以设置TTL控制包的到达范围,例如设置一个较小的TTL值

      Ping的发送与接收过程

      在同样的子网中,A和B主机,A主机执行PingB主机,让我们看看在这段时间里发生什么。

      在这里插入图片描述

      当 ping 命令执行时, 源主机首先构建一个 ICMP 返回请求消息包.

      ICMP包包含几个领域,其中最重要的两个是:

      • 第一个是类型,返回消息的字段为8;
      • 另一个是序列数,它主要用于区分在连续拨号中发射的多个数据包。

      每次发送请求包时,序列编号都会自动添加到1。为了计算返回时间RTT,它将发送时间插入消息的数据部分。

      在这里插入图片描述

      然而,由 ICMP 协议将这个数据包连通地址192.168.1.2 一起交给 IP 层。IP 层将以192.168.1.2 作为目标地址,作为源地址的机器IP地址,设置为1的协议字段表示一个ICMP协议,添加一些其他控制信息,构造IP数据包。
      在这里插入图片描述

      接下来你需要添加MAC头。如果在本地 ARP 映射表中查找出 IP 地址 192.168.1.2 所对应的 MAC 地址,则可以直接使用,如果没有,然后向MAC地址发送ARP协议查询,取得MAC地址后,从数据链层构造了一个数据框架,当目的地地址传递到IP层时,源地址是机器的MAC地址;也增加了一些控制信息,其中一个是Ethernet媒体访问规则,将他们传送出去。

      在这里插入图片描述

      接收此数据帧后,首先检查其MAC地址,然后与主机的MAC地址进行比较,如果匹配,然后接收,否则丢弃。

      接收后,检查数据帧,从帧中提取IP包,并将其传递到主机IP层。 类似地,检查IP层后,可以提取有用的信息并将其传递到ICMP协议。

      主机 B 会构建一个 ICMP回送响应消息数据包,回送响应数据包的类型字段为0,序号为接收到的请求数据包中的序号,然后再发送出去给主机A。

      在这里插入图片描述

      在规定的时候间内,源主机如果没有接到 ICMP 的答应包,则说明目标主机不可达;如果接收到了ICMP 回送响应消息,则说明目标主机可达。

      此时,源主机的机会被检查,而当前的时间减少了从源主机最初发送的包的时间,即ICMP包的时间延迟。

      对以上所发出的资料,总结如下:

      在这里插入图片描述

      当然,在同一本地网络中,这是最简单的事情,如果它是跨网络的段落,它也涉及开关的继电器,路由器的继电器等等。

      然而,对于ICMP头没有影响,受影响的取决于目标IP地址,路径的下一个跳跃,以及每个通过路由器进入新的本地网络,需要在MAC头内更改MAC地址。

      说了这么多,可以看出 ping 这个程序是使用了 ICMP 里面的ECHO REQUEST(类型为 8) 和ECHO REPLY (类型为0)。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31098.html

          热门文章

          文章分类