简单的局域网内PING的过程+几种PING不通的情况
一、一个常规的局域网内主机相互PING的过程描述
首先,假设局域网下有三台主机A、B、C,B的ip是192.168.1.12,C的ip是192.168.1.13。
本机A的ip地址 192.168.1.166,子网掩码255.255.255.0,不设置网关;
注:下面的wireshark抓包图的ip地址和测试的假设案例是不匹配的,只是为了说明是个什么样子的包。
1.A ping 192.168.1.12
1>假设A主机上本地的ARP缓存为空,A将先在局域网内发送ARP广播,问谁有192.168.1.12的MAC地址呀,有的话告诉我192.168.1.166!!!
2>B收到了这个广播之后,就向A发送ARP回包,告诉A,192.168.1.12的MAC地址是xxxxxxx。
3>A收到了这个ARP回包后,知道了要向B发包需要填写什么目的MAC,于是填好后发icmp报文:
4>B收到了A的icmp包,再给A回了一个icmp回包。over!
二、几种ping不通的情况
以下情况基于没有设置网关时的情形:
情况1: A ping 了一个本地ARP缓存里没有的与本机ip在同一网段的地址,于是它会发送一个ARP广播包;如果A没有收到任何包的回复,那因为无法得知目的MAC,所以就不会发送icmp包。这时反馈ping的结果一般是: 来自 [本机ip地址] 的回复:无法访问目标主机。
情况2 A ping 了一个本地ARP缓存里没有的与本机ip不在同一网段的地址,首先这个ip地址不与本机同网段,所以会认为与本机不在同一个局域网内,没有发送arp广播的必要,所以不会发送ARP广播,记住,此时的情况是没有网关,那A觉得我没啥办法可以找到这个ip的MAC地址了,直接放弃!!这时ping反馈的结果一般是: PING:传输失败。常见故障。
以下情况基于设置了网关,且网关可达时的情形:
情况1(与上面不设置网关效果一样的): A ping 了一个本地ARP缓存里没有的与本机ip在同一网段的地址,于是它会发送一个ARP广播包;如果A没有收到任何包的回复,那因为无法得知目的MAC,所以就不会发送icmp包。这时ping反馈的结果一般是: 来自 [本机ip地址] 的回复:无法访问目标主机。
情况2: A ping 了一个本地ARP缓存里没有的与本机ip不在同一网段的地址,首先这个ip地址不与本机同网段,所以会认为与本机不在同一个局域网内,没有发送arp广播的必要,所以不会发送ARP广播,记住,此时的情况是有网关,那A就把目的MAC填网关的MAC地址,目的ip填写自己ping的这个ip,然后发送一个icmp包!如果这时候没有收到icmp回包。ping反馈的结果一般是: 请求超时。