关于ping包第一个丢包的那些事
之前就有关于为什么我们ping包的时候第一个包总是显示逗点,也就是超时的困惑。很多人的解答就是因为ARP啊,然后就没有下文了。继续追问那么为什么ARP就要是逗点呢?然后就又有一些人说因为要ARP解析,所以时间太长了,超过了时延就显示超时不通,然后就是逗点了。总结来说就是因为ARP解析超时了所以就显示ping包的第一个包不通了。百度上很多解答也是这样子不过今天晚上看了视频得到了启发,ping包的第一个包并不是因为超时所以显示不通,因为当我使用扩展ping将数据包的延时设置位50秒的时候,第一个包还是不通。所以绝对不是因为延时。
那么是为什么呢?
是因为第一个包根本就没有发出去,做实验抓包的时候只能够抓到ping包的后面四个echo,reply。
那么为什么第一个包没有发出去呢?
因为第一个包还没有ARP解析,也就是没有对应的mac地址,在尚无mac地址的情况下,系统内核是不会发包的,路由器在一段链路中是使用mac地址的。,无mac地址的数据包根本就不会发出去,所以不知道mac地址,首先先发ARP解析mac地址,同时第一个包还没有发出去就被自己kill了。后续的包因为有了对应的mac地址就顺利的发出去了。
以上纯属个人做实验的理解~~~~
CCNP交换里面有说,ARP RFC 826文档中解释是第一个ARP解析时,没有ARP对应的MAC表会被丢弃{:6_269:} 我开始觉得是cef里面的arp御制,会丢弃未得到响应前的数据包 {:6_282:} {:6_289:}一直没做过这个实验 。别人说不如自己做一次真实。 下来看看 挣点分儿 下来看看 挣点分儿 {:6_299:}{:6_299:} {:6_267:} 斗胆问一句,“第一个包没有ARP解析,没有对应的MAC地址,”
那这个MAC是自己的MAC地址还是对方的MAC地址?{:6_282:} 拿了橘子跑 发表于 2014-5-20 23:30
斗胆问一句,“第一个包没有ARP解析,没有对应的MAC地址,”
那这个MAC是自己的MAC地址还是对方的MAC地 ...
没有别人的MAC地址 {:6_282:}{:6_282:}你们太刁了 good 认同,做实验。。。。