我使用UDP套接字(IPv4)向终端系统发送64KB数据包。当我使用Wireshark捕获终端系统的数据包时,我发现重新组装的IP数据报的IP标识字段的范围是0x0000-0x7fff(0-32767)
,即当终端系统收到ID为0x7fff
的数据报时,下一个数据报保存id 0x0000
而不是0x8000
。
让我很困惑。为什么不0x0000-0xffff(0-65536)
?
我的发件人程序是用C#代码编写的,在Windows7上运行。网络接口卡品牌是英特尔。
请帮忙。
答案 0 :(得分:0)
标识字段的值是发件人的选择。它可以以发件人喜欢的任何方式分配。 RFC 791对此进行了说明(重点补充):
标识字段用于区分一个片段 来自另一个人的数据报。原始协议模块 互联网数据报将标识字段设置为一个值 对于该源 - 目标对和协议必须是唯一的 数据报在互联网系统中处于活动状态的时间。 完整数据报的始发协议模块设置 more-fragments标记为零,片段偏移为零。
所以发送系统可以自由地将其identification
值限制为0 - 0x7fff,只要任何一个数据报是"唯一的......数据报将处于活动状态。"