好多人站在路由器的角度回答了,我再從主機角度解釋一下,當你ping時本地IP層幹了什麼。
1. 如果目標IP地址是本地地址,就送回本地上層處理,根本不會發到網絡卡去
2. 如果目標IP地址是同一網段中的其他地址,查ARP表,找到目標IP對應的MAC地址(如果ARP快取裡沒有,發ARP請求去獲取)。把MAC地址填寫到報文裡傳送出去,如果找不到對應的ARP項,就會發送失敗。
注意:報文是要靠MAC地址才能找到目標主機的。
3. 如果目標IP地址不在同一網段,將gateway的MAC地址作為目標MAC地址傳送。
所以你說的情況可以分成幾種情況:
1. A配置為192.168.1.1/24,B配置為192.168.1.1/16。從A ping B,能ping通,但ping的是A自己。
2. A配置為192.168.1.1/24,B配置為192.168.1.2/16。從A ping B,如果在A的局域網裡還有一個C也是192.168.1.2,那麼實際ping通了C。否則A的ARP裡查不到B的MAC地址,傳送失敗。
3. A配置為192.168.1.1/24,B配置為192.168.2.1/16。從A ping B,A可以發出ping的請求報文到B。但B無法發出響應報文到A,或者把響應報文發給了另一臺主機(自己想一下為什麼)。A收不到響應報文,所以ping不通。
好多人站在路由器的角度回答了,我再從主機角度解釋一下,當你ping時本地IP層幹了什麼。
1. 如果目標IP地址是本地地址,就送回本地上層處理,根本不會發到網絡卡去
2. 如果目標IP地址是同一網段中的其他地址,查ARP表,找到目標IP對應的MAC地址(如果ARP快取裡沒有,發ARP請求去獲取)。把MAC地址填寫到報文裡傳送出去,如果找不到對應的ARP項,就會發送失敗。
注意:報文是要靠MAC地址才能找到目標主機的。
3. 如果目標IP地址不在同一網段,將gateway的MAC地址作為目標MAC地址傳送。
所以你說的情況可以分成幾種情況:
1. A配置為192.168.1.1/24,B配置為192.168.1.1/16。從A ping B,能ping通,但ping的是A自己。
2. A配置為192.168.1.1/24,B配置為192.168.1.2/16。從A ping B,如果在A的局域網裡還有一個C也是192.168.1.2,那麼實際ping通了C。否則A的ARP裡查不到B的MAC地址,傳送失敗。
3. A配置為192.168.1.1/24,B配置為192.168.2.1/16。從A ping B,A可以發出ping的請求報文到B。但B無法發出響應報文到A,或者把響應報文發給了另一臺主機(自己想一下為什麼)。A收不到響應報文,所以ping不通。