一些Linux中常用操作指令及大鲨鱼的使用(一):ping的过程

问题:两台服务器A和B的网络配置如下(见下图),B的子网掩码本该是255.255.255.0,被不小心配成了255.255.255.254.他们还能正常通信吗?

接下来,利用大鲨鱼分析数据流向,确定最终结果。

如图,分析上述数据包,得结论!

1号包(见下图):

服务器B通过ARP广播查询默认网关192.168.26.2的MAC地址,为什么ping服务器的A的IP,B却会去查询默认网关的MAC地址呢?这是因为B根据自己的子网掩码,计算出A属于不同子网掩码,而跨子网通信需要通过默认网关的转发。要和默认网关通信,就需要获得其MAC地址。

2号包(见下图):

默认网关192.168.26.2向B回复了自己的MAC地址。为什么这些MAC地址的开头明明是“00:50:56”或者“00:0c:29”,Wireshark上显示出来却都是“Vmware”?这是因为MAC地址的前3个字节表示厂商。而00:50:56和00:0c:29都被分配给Vmware公司。这是全球统一的标准,所以干脆显示厂商名字。

3号包(见下图):

B发出ping包,指定目标IP为A,即192.168.26.129.但目标MAC确是默认网关的00:50:56:e7:2f:88(Destination MAC 可以在3号包 中的 Packet
Details 中看到)。这表明B希望网关把包转发给A。至于默认网关有没有转发,我们目前无从得知,除非在网关上也抓个包。

4号包(见下图):

B收到了A发来的ARP广播,这个广播查询的是B的MAC地址。这是因为在A看来,B属于相同子网,同子网通信无需默认网关的参与,只需要通过ARP获得对方MAC地址就行了。这个包也表明默认网关成功的把B发出的Ping请求转发给A了,否则A不会无缘无故尝试和B通信。

5号包(见下图):

B回复了A的ARP请求,把自己的MAC地址告诉了A。这说明B在执行ARP回复时并不考虑子网。虽然ARP来自其他子网,但是也照样回复。

6号包(见下图):

B 终于收到了 A 的 ping 回复。从 MAC 地址 00:0c:29:0c:22:10 可以看出,这
个包是从 A 直接过来的,而不是通过默认网关的转发。

7、8、9、10 号包(见下图 ):

都是重复的 ping 请求和 ping 回复。因为 A 和 B 都已经知道对方的联系方式,
所以就没必要再发 ARP 了。

通过分析这几个数据包,我们可以得出最终答案。原来其中通信过程是这样:B先把ping请求交给默认网关,默认网关再转发给A。而A收到请求后直接把ping回复给B,形成一个三角形环路,如下图。

阅读剩余
THE END