ping命令工作过程.docx
我们以下面一个网络为例:有A、B、C、D四台主机,一台路由Router,子网掩码均为255.255.255.0, A、B两台主机的默认网关为 192.168.0.1, C、D两台主机的默认网关为192.168.1.1,四台主机 的IP地址分别如下:A: 192.168.0.2 B: 192.168.0.3C: 192.168.1.2 D: 192.168.1.3网络拓扑图如下所示:两台主机通信过程(OSI封装与解封装):发送方应用腾表示唇会活层传输博故据簪签层物理层1 .在同一网段内(主机A ping主机B)在主机A上运行“Ping 192.168.0. 3”后,都发生了些什么呢? 首先,ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP 协议将这个数据包连同地址“192.168.0. 3” 一起交给IP层协议,IP 层协议将以地址“192.168.0.3”作为目的地址,本机IP地址作为源 地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得 到192.168.0.3的MAC地址(即物理地址),以便交给数据链路层构 建一个数据帧。关键就在这里,IP层协议通过目标IP地址(即 192.168.0.3)和主机A的子网掩码(255.255.255.0)作“逻辑与” 运算,发现得到的网络地址(192.168.0.0)与主机A的网络地址(192.168.0.0)相同,就直接在本网络内查找目标主机的MAC,如果 以前两机有过通信,在主机A的ARP缓存表应该有主机D的IP与其 MAC地址的映射关系;如果没有,就发一个ARP请求广播包,得到主 机D的MAC地址,并交给数据链路层,并由其构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。主机B收到这个数据帧后,先检查它的目的地址,并和本机的物 理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查 后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一 个ICMP应答数据包,发送给主机A,其过程与主机A发送ICMP请求 数据包到主机B一模一样。2.不在同一网段内(主机A ping主机C)在主机A上运行“Ping 192.168.1.3”后,开始跟上面一样,到 了怎样得到目标主机的MAC地址时,IP协议通过目标主机的IP地址 与本机的子网掩码(255.255.255.0)作“逻辑与”运算,发现得到 的网络地址(192.168.1.0)与自己的网络地址(192.168.0.0)不在 同一网段内,就直接通过默认网关(192.168.0.1)将交由路由器处 理,通过ARP协议获取到路由器接口 A(IP地址为192.168.0.1)的 MAC地址,封装成数据帧最终转交给路由器,路由器得到这个数据帧 后,再跟主机C进行通信,如果找不到,就向主机A返回一个超时 ICMP应答信息;如果找到,则向主机A回送正常的ICMP应答信息。