Ping:ICMP协议的应用

版权声明:转载请注明出处 https://blog.csdn.net/ty13572053785/article/details/85265062

       互联网控制消息协议(Internet Control Message Protocol,ICMP):是互联网协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种情况反馈,通过这些信息,使管理者可以对所发生的情况作出判断,然后采取适当地措施解决。ICMP依靠IP来完成它的任务,它是IP的主要部分。
       ICMP协议大致分为两类,一种是查询报文,一种是差错报文。查询报文的主要用途有ping查询、子网掩码查询、时间戳查询;差错报文则产生在数据传送发生错误的时候,如Traceroute查询。

一、ping:查询报文类型的使用

ping的发送和接收过程。
在这里插入图片描述
       假设主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,它们都在同一个子网。当你再主机A上运行"ping 192.168.1.2"后,会发生什么呢?
       ping命令执行的时候,源主机首先会构建一个ICMP请求数据包,ICMP数据包内包含多个字段。最重要的是两个,第一个是类型字段,对于请求数据包而言该字段为8;另外一个是顺序号,主要用于区分连续ping的时候发出的多个数据包。每发出一个请求数据包,顺序号会自动加1.为了能够计算往返时间RTT,它会在报文的数据部分插入发送时间。
       然后,由ICMP协议将这个数据包连同地址192.168.1.2一起交给IP层。IP层将以192.168.1.2作为目的地址,本机IP地址作为源地址,加上一起其他控制消息,构建一个IP数据包。
       接下来,加入MAC头。如果在本地ARP映射表中查找出IP地址192.168.1.2所对应的MAC地址,则可以直接使用;如果没有,则需要发送ARP协议查询MAC地址,获得MAC地址后,由数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址;还要加上一些控制消息,将他们发送出去。
       主机B收到这个数据帧后,先检查它的目的MAC地址,并和本机的MAC地址对比,如符合,则接受,否则丢弃。接收后检查数据帧,将IP数据包从帧中提取出来,交给本机的IP层。同样,IP层检查后,将有用的信息提取后交给ICMP协议。
       主机B会构建一个ICMP应答包,应答数据包的类型字段为0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机A。
       在规定的时间内,源主机如果没有接到ICMP的应答包,则说明目标主机不可达;如果接收到了ICMP应答包,则说明目标主机可达。此时,源主机会检查,用当前时刻减去最初从源主机上发出的时刻,就是ICMP数据的延迟时间。
       当不在同一个局域网里面。如果垮网段的话,还会涉及网管的转发、路由器的转发等等。但是对于ICMP的头来说,是没有什么影响的。会影响的是根据目标IP地址,选择路由的下一跳,还有每经过一个路由器到达一个新的局域网,需要换MAC头里面的MAC地址。
       ping使用了ICMP里面的ECHO REQUEST和ECHO REPLY类型。

二、Traceroute:差错报文类型的使用

1、Traceroute的第一个作用是故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器
2、Traceroute第二个作用是故意设置不分片,从而确定路径的MTU。

猜你喜欢

转载自blog.csdn.net/ty13572053785/article/details/85265062