Ping和ARP流程解析
Ping在计算机网络里,属于非常基础、常用的功能。每逢疑似网络问题时,经常的反应就是:ping对方看看。
ARP协议用来根据IP地址获取MAC地址。在链路层传输报文时,依据的就是MAC地址。如果没有对方的MAC地址,那么一个报文是无法从一端传到另一端的。
这两个非常常见的功能,里面的细节真要抠起来其实也不少。今天正好在整理里面的步骤,所以顺便分享一下。如果内容有什么不准确的地方,欢迎指正。
文中假设的网络拓扑如下所示,两个计算机属于不同的网段、通过交换机、路由器进行连接。PC1的默认路由指向路由器的eth0,PC2的默认路由指向路由器的eth1。
那么,在这个拓扑下,从PC1发送ping报文到PC2,它们之间会经过哪些步骤呢?
简单的回答是,PC1构造一个ICMP报文,目标是PC2,然后就这么发出去了。
复杂的回答则如下图所示:
具体的文字,我就不从流程图里copy出来了。只能说,流程其实还是挺复杂的,里面涉及到ARP表、交换机上的MAC地址表、路由表这计算机网络的三大表格;以及在报文传输过程中,源MAC地址、目的MAC地址一直在变化,而源IP、目的IP不变的过程。
有兴趣的同学,可以仔细看看上面的流程图,文字不再赘述。谢谢。