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 不变的过程。
有兴趣的同学,可以仔细看看上面的流程图,文字不再赘述。谢谢。
评论