我有一个 3600 字节的数据报,一个 800 字节的 MTU,所以我的片段数是 5。
我发现前 4 个片段将是 800 字节(包括 IP 头的 20B),最后一个片段将是 480 字节(包括 IP 头)。
第一个偏移量当然是 0,但是当我计算第二个片段的偏移量时,我得到了这个:
fragment 2 offset = 780 Bytes / 8 = 97.5
我该如何处理非整数?我要取它的上限吗?
答案1
好的,我明白了,您应该选择一个可以被 8 整除的有效载荷大小,并将剩余空间留给标头。
对于我的问题,我得到了 97.5,因为 780 不能被 8 整除,所以我将有效载荷大小降低到 776,除以 8 后得到 97。
然后我使用该值来计算片段偏移量。
如果您的 MTU 为 800 字节,则第二个片段的偏移量当然是 97,其在实际数据包中的工作方式如下:
- IP 报头 = 20 字节
- 有效载荷 = 776 字节
- 未使用空间 = 4 字节