UDP数据报与ARP的问题

mystar_api 2006-12-19 05:44:02
我在看TCP/IP协议详解卷1的时候有个问题:
书中第11.9节介绍主机bsdi向svr4发送8192字节的UDP数据报时的TCPDUMP输出:
1 arp who-has svr4 tell bsdi
2 arp who-has svr4 tell bsdi
3 arp who-has svr4 tell bsdi
4 arp who-has svr4 tell bsdi
5 arp who-has svr4 tell bsdi
6 arp who-has svr4 tell bsdi
7 arp reply svr4 is-at 0:0:co.........(具体的物理地址就省略了)
8 arp reply svr4 is-at 0:0:co.........
9 bsdi > svr4: (frag 10863:800@7400)
10 arp reply svr4 is-at 0:0:co.........
11 arp reply svr4 is-at 0:0:co.........
12 arp reply svr4 is-at 0:0:co.........
13 arp reply svr4 is-at 0:0:co.........
14 arp reply svr4 is-at 0:0:co.........
这里有几个问题:
1:为什么发送的8192字节的数据报只发出了7400以后的差不多800个字节的最后一片数据报,前面的那几片丢失了?还要再重传的吗?(这点书上就是提到一下反正说就是要这样的,也没说个理由)
2:为什么前面只有6次ARP请求,而后面却有7次的ARP回复?
...全文
267 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sopro 2006-12-19
  • 打赏
  • 举报
回复
不是arp请求,是只发送最后一个IP数据报,在你的这个例子中,是最后这800个字节

我记得没错的话,ARP协议是工作在data link层,而ip数据报当然工作在network层,他们是不同的层次关系。

network层把ip数据报交给data link层,但是data link层没有把前面的n-1个数据把丢给physical层,而是选择了丢弃,只把最后一个ip数据报发出。

这个是我个人的感觉,也是看书得来的,毕竟我没做过TCP/IP的协议栈,也没看过相关源码,你可以参考下,再找找其他的资料:)
mystar_api 2006-12-19
  • 打赏
  • 举报
回复
在大多数实现中,在等待一个ARP应答时,只将最后一个报文发送给特定目的主机。
==========================================================================
这句话的意思是如果对同一IP高速发送ARP请求的话.只发送最后的ARP请求吗?
sopro 2006-12-19
  • 打赏
  • 举报
回复
1. 高速对同一IP地址发送ARP请求是一种ARP泛洪,ARP缓存为空的话,一个IP数据包将产生一个ARP请求。你有没有注意到书中说了:在大多数实现中,在等待一个ARP应答时,只将最后一个报文发送给特定目的主机。同时,这也是Host Requirement RFC规定的。我想,这个就是答案。

2. 7次ARP回复,在书中的解释是“无法解释的不正常现象”。我猜,这个可能是某个目的主机在收到ARP flooding下的一个不正常的行为。也许某个ARP回应在目的主机看起来不正常然后重发了这个回应,其实,ARP回应还是到达了ARP请求端。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧