设为首页收藏本站language 语言切换
楼主: PASSINGCCIE
收起左侧

[其他] 关于ping包第一个丢包的那些事

  [复制链接]
发表于 2014-8-9 23:44:13 | 显示全部楼层
学习了,不错不错
16# 2014-8-9 23:44:13 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-8-13 16:13:13 | 显示全部楼层
有态度的学习,
17# 2014-8-13 16:13:13 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-7-14 11:05:14 | 显示全部楼层
看来我还是太天真了。。。你们厉害
20# 2015-7-14 11:05:14 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-7-16 22:20:46 | 显示全部楼层
例子
假定在一个10Mbit以太网电缆上存在两台机器X和Y,它们具有以太网地址EA(X)和EA(Y),并具有DOD Internet地址IPA(X)和IPA(Y)。令Internet的以太网类型为ET(IP)。机器X刚刚启动,并早晚需要发送一个Internet数据包给机器Y。X知道它需要发送数据给IPA(Y)并告诉硬件驱动(具备以太网驱动)IPA(Y)。驱动参考地址解析协议模块将 ET(IP)-IPA(Y) 对转换为48位以太网地址,然而因为X刚刚启动,它并没有这些信息。X丢弃了Internet数据包,反而创建了一个地址解析协议包如下:
(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = don’t care
(ar$tpa) = IPA(Y)
并将此包广播到电缆上的全部机器。
Y机器获取这个包,并确定它理解硬件类型(以太网)并使用相同的协议(Internet)且包是发送给它的((ar$tpa)=IPA(Y))。Y设置(或者替换现存项) ET(IP)-IPA(X)映射到EA(X),Y随后注意到这是一个请求包,因此交换其字段,将EA(Y)送入新的发送者以太网地址字段(ar$sha),将操作码设置为应答,并将包直接(而非广播)到EA(X)。此时Y已经知道该如何发送给X,而X还不知道如何抵达Y。
X由Y获取应答包,将ET(IP)-IPA(Y)映射到EA(Y),注意到这是应答包并将其舍弃。下一次X的网络模块尝试通过以太网向Y发送包时,转换将会成功,包将直接抵达目标。如果Y的网络模块想要与X通信,它同样会成功,因为Y已经通过X的请求记住了X的地址解析信息。
----------------------------------------------------------------------------------------------------------------
粘贴自RFC 826 z中文
21# 2015-7-16 22:20:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-5-13 17:34:12 | 显示全部楼层
第一个包是发出去的,关键是第一个包没有reply。我理解有两个原因,一是b收到request之后要回复reply,但是没有网关mac地址,打包失败,转而去解析mac了;二是a发来的第二个icmp-request覆盖了request1,就没有必要回复1了。
22# 2016-5-13 17:34:12 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-5-13 17:47:20 | 显示全部楼层
sharklover 发表于 2016-5-13 17:34
第一个包是发出去的,关键是第一个包没有reply。我理解有两个原因,一是b收到request之后要回复reply,但是 ...

当所有设备刚启动的时候,当第一个包会在网关处被丢弃
23# 2016-5-13 17:47:20 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-6-19 23:31:14 | 显示全部楼层
A和B通信,A对B发ping包时如果A arp缓存里没有B的MAC地址,此时会发ARP 广播获取B的mac地址,B对A的arp广播进行发响应消息时除了带有自己的MAC地址之外,应该不会在自己的ARP里记录A的mac地址,只是当A侧获取B端MAC地址后封装ICMP包进行通信时,B端对ICMP echo包进行回应时会再次发送ARP广播获取A端的mac地址,过程是同A一样的。
截图01.jpg
25# 2016-6-19 23:31:14 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-11-17 13:29:07 | 显示全部楼层
是我想要的答案,谢谢。
26# 2016-11-17 13:29:07 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2017-5-17 10:24:25 | 显示全部楼层
wdweida 发表于 2014-5-26 23:24
没有别人的MAC地址

arp不就是用来学习别人的MAC地址么,你这解释不是意味着,应该5个包都是丢弃的?
28# 2017-5-17 10:24:25 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2017-5-17 10:43:01 | 显示全部楼层
本帖最后由 CSQ 于 2017-5-17 10:45 编辑
wdweida 发表于 2014-5-26 23:24
没有别人的MAC地址

可能是我断章取义了,您的理解是对的,我误解了你的解释。此处引用crazzz在另一个帖子里的回复 @crazzz :

在发出第一个ping包,准备要封装destination mac的时候,发现没有目标mac地址,于是封装失败(这个时候,就是导致第一个ping包失败的原因,这个跟超时,延迟都无关,可能根本不用0.0001s,发现封装失败,直接就返回一个“.”告诉ping目标不可达),然后后面的arp解析之类的过程,就不细说了。

-------------------我的理解-------------------
第一个ping包是属于正常发送icmp,但是在第二层解析时,发现没有目的mac地址,那么就进行了丢弃行为(导致第一个包丢弃),转而进行arp广播发送报文,寻找目的mac地址,所以之后就是arp过程了。
29# 2017-5-17 10:43:01 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2017-5-17 10:46:12 | 显示全部楼层
ping ip第一个包超时现象 http://bbs.hh010.com/thread-339846-1-1.html (出处: 鸿鹄论坛)
30# 2017-5-17 10:46:12 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-3 20:55 , Processed in 0.063476 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表