如何计算IP数据包的长度

时间:2015-12-06 23:35:19

标签: networking ip datagram

没有选项的IP数据包,分为3个片段。

片段1 - 偏移量为0 片段2 - 偏移358 片段3 - 偏移510和总长度120

如何计算原始IP数据包的持续时间?

1 个答案:

答案 0 :(得分:1)

我认为你有一些无效的片段偏移数字,因为IP必须在64位边界上分段。

如有疑问,请参阅RFC(RFC 791, INTERNET PROTOCOL):

  

碎片

     

互联网数据报的碎片化是必要的       起源于允许大数据包大小的本地网络       遍历本地网络,将数据包限制为更小的范围       它的目的地。

     

互联网数据报可以标记为“不会碎片化”。"任何互联网       如此标记的数据报不会被互联网支离破碎       情况。如果互联网数据报标记为不是片段,则不能       传送到目的地而不会破坏它,它就是       丢弃了。

     

通过本地网络进行分段,传输和重组       调用互联网协议模块不可见的       内网碎片可以使用[6]。

     

互联网碎片和重组程序需要能够       将数据报分成几乎任意数量的碎片       可以稍后重新组装。片段的接收者使用       识别字段,以确保不同数据报的片段       没有混合。片段偏移字段告诉接收器       片段在原始数据报中的位置。片段       offset和length确定原始数据报的部分       被这个片段覆盖。更多片段标志表示(通过       被重置)最后一个片段。这些字段提供足够的       重新组装数据报的信息。

     

标识字段用于区分一个片段       来自另一个人的数据报。原始协议模块       互联网数据报将标识字段设置为一个值       对于该源 - 目标对和协议必须是唯一的       数据报在互联网系统中处于活动状态的时间。该       完整数据报的始发协议模块设置       more-fragments标记为零,片段偏移为零。

     

片段化长互联网数据报,互联网协议模块       (例如,在网关中),创建两个新的互联网数据报和       从长整理复制互联网标题字段的内容       数据报到两个新的互联网标题。长期的数据       数据报在8个八位位组(64位)边界上分成两部分       (第二部分可能不是8个八位字节的整数倍,       但第一个必须是)。调用中的8个八位字节块的数量       第一部分NFB(用于碎片块数)。首先       部分数据放在第一个新的互联网数据报中,       并且总长度字段设置为第一个的长度       数据报。更多片段标志设置为1。第二       部分数据放在第二个新的互联网数据报中,       并且总长度字段设置为第二个的长度       数据报。更多片段标志带有与之相同的值       长数据报。第二个新互联网的片段偏移字段       数据报设置为long数据报加中该字段的值       NFB。

     

此过程可以推广为n路分割,而不是       所描述的双向分裂。

     

汇集互联网数据报的片段,互联网       协议模块(例如在目标主机上)组合       互联网数据报对于四个字段都具有相同的值:       识别,来源,目的地和协议。组合       通过将每个片段的数据部分放在相对片段中来完成       由该片段中的片段偏移指示的位置       互联网标题。第一个片段将具有片段偏移量       零,最后一个片段将重置更多片段标志       为零。