Ping命令 原理 详解(图)
ping命令 背后涉及网络层的ARP->ICMP->IP协议
!如图所示,有3台机器ABC ,分两情况,一种是A ping B同网段的情况,另一种A ping C不同网段的情况。
1.A ping B同网段的情况
Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“1.1.1.3”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“1.1.1.3”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到1.1.1.3的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建数据帧。 “想办法找到B的MAC地址”就是通过ARP 协议。首先A找自己的ARP缓存表有没有缓存B的MAC地址,没有,A就发ARP请求 到交换机找,交换机发现自己的ARP缓存表也没有,就发ARP广播给自己所有连接的机器找,其它主机收到后,发现不是在找自己,就纷纷丢弃了该报文,不去理会。。直到主机B收到了报文后,就立即相应,我的MAC地址是多少,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。
各阶段简化报文如下:
1>>A想办法找到B的MAC地址 ARP广播 : A->交换机->子机器
*其中OP表示:1:表示ARP请求;2:表示ARP应答;3:表示RARP请求;4:表示RARP应答。 2>>B回复自己的mac给A ARP回复 : B->交换机->A
3>>A拿到MAC地址后开始ping ICMP报文: A->交换机
4>>B回应A的ping ICMP报文: B->交换机->A
2.A ping C不同网段的情况
各阶段简化报文如下:
1>>A通过ARP协议找到路由器的MAC地址 2>>A发ICMP报文到路由器(Aping路由器) ICMP报文: A->交换机->路由器
4>>C回复ping到路由器 ICMP报文: C->路由器->A
参考: