趣谈网络协议(四)ICMP与ping

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/84281227
ICMP协议的格式

(1)ping是基于ICMP协议工作的。ICMP就是互联网控制报文协议

(2)ICMP报文是封装在IP包里面的。本身很简单。
在这里插入图片描述
(3)ICMP报文有很多类型,不同类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为0


ping:查询报文类型的使用

(1)ping的发送和接收过程
在这里插入图片描述

(2)ping命令在执行的时候,源主机首先会构建一个ICMP请求包,ICMP数据包内包含多个字段。最重要的两个,第一个是类型字段,对于请求的数据包而言这个字段是8;另外一个是顺序号,主要用于区分连续ping的时候发出的多个数据包。每发出一个请求的数据包,顺序号会自动加1.为了能够计算往返时间RTT,它会在报文的数据部分插入发送时间

(3)然后,由ICMP协议将这个数据包连同地址192.168.1.2一起交给IP层。IP层将以192.168.1.2作为目的地址,本机IP地址作为源地址,加上一些其他控制信息,构建一个IP数据包

(4)接下来,需要加入MAC头。如果本节ARP映射表中查找出IP地址192.168.1.2所对应的MAC地址,则可以直接使用;如果没有,则需要发送ARP协议查询MAC地址,获得MAC地址之后,由数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址则是本机的MAC地址;还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去

(5)主机B收到这个数据帧后,先检查它的目的MAC地址,并和本机的MAC地址做对比,如符合,则接收,否则就丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层。同样,IP层检查后,将有用的信息提取之后交给ICMP协议

(6)主机B会构建一个ICMP数据包,应答数据包的类型字段为0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机A

(7)在规定的时间内,源主机如果没有接到ICMP的应答包,则说明目标主机不可达;如果接收到了ICMP的应答包,则说明目标主机可达。此时,源主机会检查,用当前时刻减去该数据包最初从源主机上发出的时刻,就是ICMP数据包的时间延迟

(8)这是最简单的同一局域网里面的情况。如果跨网段的话,会涉及到网关的转发、路由器的转发等等。但是对于ICMP的头来讲,没什么影响。会影响的是根据目标IP地址,选择路由的吓一跳,还是每经过一个路由器到达一个新的局域网,需要换MAC头里面的MAC地址


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/84281227