请教ping命令是如何工作的,我晕了,请指点!谢谢!
这个是我搜索到的信息
http://www.enet.com.cn/article/2009/0122/A20090122419303.shtml
Ping命令幕后过程及其返回信息分析
对于第2种情况
2.不在同一网段内
在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。
我的想法:如果不在同一网段内,且arp被清空,路由器指向错误,还能ping通吗?我觉得应该不行了,但是我在家测试又是可以ping通。搞不懂了。求指点啊!
在家测试如下:
电脑2台,A,和B,路由器一个R,
A:192.168.1.103/24,网关192.168.1.1
B:192.168.1.100/27,网关192.168.1.88
R:192.168.1.1
此时A、B不在同一网段,并且B到网关设置错误,然后在B机器上运行arp -d *,清空了arp表,此时B已经断网。
在B上运行 ping 192.168.1.103 可以ping通,为什么呢?
[解决办法]
如果你确认AB不在同一个网段,而且B的网关是不存在的IP,那么就不好解释了
建议WireShark抓包分析
正常情况B在ping A的时候,如果不在一个网段,那么首先会发ARP Request到192.168.1.88,这个显然是没有回应的,第一步就没有回应,怎么会Ping通
[解决办法]
103 二进制表示为: 0110 0111
100 二进制表示为: 0110 0100
你确定A B不在同一个网段?
你设定的B网关:192.168.1.88 你确定网络上没有这个IP的机器?
arp-d 清空了ARP表,没什么影响吧,路由表会自动更新,只是时间长了点而已。。
[解决办法]
1,ping时如果没有mac表,会发广播学习。
2,能不能ping不在于是不是同一网段,
三层上要看路由是否可达
二层上要看广播包是否互为可达。
互为包含的不同子网,位于小子网内的所有ip是可以ping通的