A 不能 ping 通 B 是因为收不到 B 给出的 echo-reply ,实际上 A 发出的 echo-request 是正常到达 B 的
echoless
2023-02-09 19:31:16 +08:00
@iBugOne 我 wireshark 抓包确实是这样的, 为什么 B 给出的 echo reply 到不了 A 呢?
A 10.10.15.129, 网段 (0)1-254(255) B 10.10.15.3, 网段 (0)1-62(63)
B 给出的 echo reply 以为 A 是一个子网的, 直接就发包了, 但实际上要通过 gateway 才行.
这样理解好像是通了.
ThirdFlame
2023-02-09 20:16:56 +08:00
你说反了。 B 给出的 echo reply 以为 A 不在一个子网的,就把数据包(目的 IP 是 A ,目的 MAC 是网关)发给了网关( gateway )。 网关( gateway )收了之后发现,说 B 你是不是傻了,你和 A 同一个网段,你自己发去。(当然也有的网关配置的可以提替转发)
paradoxs
2023-02-09 20:25:37 +08:00
B 给出的 echo reply 到不了 A 是因为 A 和 B 属于不同的网段:A 的网段为 10.10.15.129 (0)1-254(255),而 B 的网段为 10.10.15.3 (0)1-62(63)。 两个网段之间的数据传输需要通过路由器,因此,A 和 B 之间的通信需要通过路由器进行转发才能实现。另外,A 的子网掩码 255.255.255.192 也决定了它和 B 不属于同一网段,因此 B 向 A 发送的 echo reply 也不会收到响应。
echoless
2023-02-09 20:35:00 +08:00
@ThirdFlame 我从 B 抓包看了一下, 大佬说的是正确的. 的确发给了 gateway, ip 是 A 的. 但是为什么 gateway 认为 B 和 A 同一个网段呢? 多谢!
echoless
2023-02-09 20:40:46 +08:00
@paradoxs A, B 属于不同的子网这个理解的, 问题在于, 是 B ping A 是通的, A ping B 是不通的.
ysc3839
2023-02-09 21:45:15 +08:00
@wuhaoecho “为什么 gateway 认为 B 和 A 同一个网段” 要看 gateway 上面是怎么配置的
>B 收到了 A 发出的 ARP 广播,这个广播查询的是 B 的 MAC 地址。这是因为在 A 看来,B 属于相同子网,同子网通信无需默认网关的参与,只要通过 ARP 获得对方 MAC 地址就行了。这个包也表明默认网关成功地把 B 发出的 ping 请求转发给 A 了,否则 A 不会无缘无故尝试和 B 通信。