0

I used a UDP socket (IPv4) sending 64KB packet to an end-system. When I capture the packets of end-system using Wireshark, I found that the IP Identification field of the reassembled IP datagram range from 0x0000-0x7fff(0-32767), i.e, when the end-system received a datagram with ID 0x7fff, the next datagram holds the id value of 0x0000 rather than 0x8000.

It confused me a lot. Why not 0x0000-0xffff(0-65536)?

My sender program is written with C# code, running on Windows7. Network interface card brand is Intel.

Please help.

4

1 回答 1

0

标识字段的值是发送者的选择。它可以以发件人喜欢的任何方式分配。RFC 791 对此进行了说明(强调):

标识字段用于区分一个数据报的片段与另一个数据报的片段。互联网数据报的起始协议模块将标识字段设置为一个值,该值 对于该源-目的地对和协议必须是唯一的,以便数据报在互联网系统中处于活动状态。 完整数据报的始发协议模块将more-fragments 标志设置为零,并将片段偏移量设置为零。

因此,发送系统可以自由地将其identification值限制为 0 - 0x7fff,只要任何一个数据报是“唯一的......在数据报将处于活动状态的时间内”。

于 2018-06-05T14:24:29.530 回答