博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IP分片中偏移单位为8B的解释
阅读量:6078 次
发布时间:2019-06-20

本文共 1015 字,大约阅读时间需要 3 分钟。

最近遇到一个问题:为什么IP中的偏移单位是8B而不是4或16等其他字节?上网查了一下,发现回答往往是RFC的规定,IP的规定,并没有做出实质性的解释。

再仔细研究一下IP头中每个字段的含义,终于发现偏移单位定为8B是有其原因的。它是由IP头部格式中的“总长度(16bit)”和“偏移(13bit)”两个字段所决定的。总长度定义了IP包的最大长度为2^16=64KB,偏移说明了IP分片时它最多能表示2^13个偏移单位,这样偏移单位就是2^16/2^13=2^3,即为8B了。如果偏移单位不是8B,如选4B,则13bit的"偏移"就不能表示出IP的最大长度了,而如果选16B,只需要12bit的"偏移"就能表示出IP的最大长度了,即偏移单位小于8B时,“偏移”不能够表示出IP的最大长,偏移单位大于8时,“偏移”不会被完全利用。以8B做为偏移单位正好合适。

转自:

由于链路MTU(maxiun transmit unit)大小的约束,ip报文要分片。

IP首部包含了分片和重组所需的信息:

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  | Identification |R|DF|MF| Fragment Offset |

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  |<-------------16-------------->|<--3-->|<---------13---------->|

  Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。

  R:保留未用。

  DF:Don't Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。

  MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。

  Fragment Offset:该片偏移原始开始处的位置。偏移的字节数是该值乘以8。

  另外,当数据报被分片后,每个片的总长度值要改为该片的长度值

转载于:https://www.cnblogs.com/sqmlinux/archive/2012/12/04/2801643.html

你可能感兴趣的文章
幼儿园小朋友可以教创业者的事
查看>>
SharePoint Server 2013 之二:准备数据库
查看>>
db link的查看创建与删除
查看>>
perl学习5--子程序中自动识别参数
查看>>
C#--GDI+的PathGradientBrush类的使用
查看>>
sql server 查询任务管理器数据
查看>>
让office2007支持公司痕迹保留
查看>>
【android】使用handler更新UI
查看>>
提取图标
查看>>
C++中的static
查看>>
BMP图像存储格式
查看>>
信息的传递 认识自身5
查看>>
Apache将整合Google Wave功能
查看>>
PowerDesigner 的简单使用(逻辑模型转物理模型和生成sql语句)
查看>>
H凹变换—lhMorpHConcave
查看>>
通配符 与 正则表达式
查看>>
mochiweb 源码阅读(十五)
查看>>
JavaScript中的内置对象--Number对象
查看>>
10 个方便的创建 CSS 特效的工具
查看>>
把二元查找树转变成排序的双向链表
查看>>