IPv4首部格式
IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础
。
在TCPIP标准中,各种数据格式常常以32比特(即4字节)为单位
来描述。
-
首部长度
- 长度为4个比特,该字段的取值
以4字节为单位
,用来表示IPv4数据报的首部长度。 最小取值
为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分
。最大取值
为二进制的1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分
。
- 长度为4个比特,该字段的取值
-
区分服务
-
长度为8个比特,用来获得更好的服务。
-
该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组ETF把这个字段改名为区分服务。利用该字段的不同取值可提供不同等级的服务质量。
-
只有在使用区分服务时该字段才起作用,一般情况下都不使用该字段。
-
总长度
- 长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)。最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报)。
引入概念—IPv4数据报分片
下面介绍的 标识
字段,标志
字段,片偏移
字段,共同用于IPv4数据报分片
-
标识
- 长度为16个比特,属于同一个lPv4数据报的
各分片数据报应该具有相同的标识
。 - IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。
- 长度为16个比特,属于同一个lPv4数据报的
-
标志
- 最低位(More Fragment,MF)
- MF=1表示本分片后面还有分片
- MF=0表示本分片后面没有分片
- 中间位(Don’t Fragment,DF)
- DF=1表示不允许分片
- DF=0表示允许分片
- 最高位为保留位,必须设置为0
- 最低位(More Fragment,MF)
-
片偏移
- 长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远。
-
生存时间(Time To Live,TTL)
- 长度为8个比特,最大取值为二进制的111111,即十进制的255。该字段的取值最初以秒为单位。因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为0就转发,否则就丢弃。
-
协议
- 长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU.
- 长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU.
-
首部检验和
- 长度为16个比特,用于检测IPv4数据报在传输过程中其
首部是否出现了差错
。 - IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此
路由器都要重新计算一下首部检验和
。
首部检验和的计算方法:
- 长度为16个比特,用于检测IPv4数据报在传输过程中其
首部检验和计算的重点在于二进制反码求和的运算:
两个数
进行二进制反码求和的运算规则是从低位到高位逐列进行计算:- 0和0相加是0
- 0和1相加是1
- 1和1相加是0,但要产生一个进位1,加到下一列(再进行+1操作)
- 若最高位相加后产生进位,则最后得到的结果要加1
举例
:
可变部分组成
-
可选字段
- 长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。
- 虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。
-
填充
- 用来确保lPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。
- 用来确保lPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。
真题演练
【2021年题36】若路由器向MTU=800B的链路转发一个总长度为1580B的IP数据报(首部长度为20B)时,进行
了分片,且每个分片尽可能大,则第2个分片的总长度字段和MF标志位的值分别是(B)。
A.796,0
B.796,1
C.800,0
D.800,1
注意
分片长度要满足能被8整除