IP数据报格式

在这里插入图片描述

每一行都由32位比特,即4个字节组成,每个格子称为字段或者域。IP数据报由20字节的固定部分和最大40字节的可变部分组成。

总长度
总长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)最大取值为二进制的16个比特1,即十进制的65535。
在这里插入图片描述
tip:IP数据报的分片概念
在这里插入图片描述

为了让不同分片知道自己属于同一个IPv4数据报,因此需要
标识
标识长度为16个比特,属于同一个IPv4数据报的各分片数据报应该具有相同的标识。IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。

标志
最低位(More Fragment,MF)
MF=1表示本分片后面还有分片
MF=0表示本分片后面没有分片
中间位(Don’t Fragment, DF)
DF=1表示不允许分片
DF=0表示允许分片
最高位为保留位,必须设置为0

片偏移
片偏移长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远

举例:
在这里插入图片描述

在这里插入图片描述
特殊举例:
在这里插入图片描述
在这里插入图片描述

生存时间(Time To Live,TTL)
长度为8个比特,最大取值为二进制的11111111,即十进制的255。
生存时间字段后来改为以“跳数”为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃。

在这里插入图片描述
协议
长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。
常用的一些协议和相应的协议字段值
|
------|------|—|-||

协议名称 ICMP IGMP TCP UDP IPv6
协议字段值 1 2 6 17 41

首部校验和
在这里插入图片描述
首部检验和
长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错
IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和
由于网际层并不向其高层提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。
两数进行二进制反码求和运算规则:
从低位到高位逐列计算
00相加为0
01相加为1
11相加为0,进1到下一位
若最高位相加后产生进位,最后得到的结果要加1

可选字段
长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。
实际上,可选字段很少被使用

填充
当首部长度(20字节固定部分+可变部分)的长度不是4字节整数倍时,填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 08:46:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 08:46:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 08:46:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 08:46:01       18 阅读

热门阅读

  1. 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit

    2024-03-11 08:46:01       22 阅读
  2. 套接字编程 --- 二

    2024-03-11 08:46:01       16 阅读
  3. 使用Pytorch进行梯度下降的计算

    2024-03-11 08:46:01       19 阅读
  4. pytorch保存和加载模型以及如何load部分参数

    2024-03-11 08:46:01       21 阅读
  5. 精通SpringBoot单元测试

    2024-03-11 08:46:01       20 阅读
  6. 浅谈单元测试和JUnit4使用

    2024-03-11 08:46:01       20 阅读
  7. k8s中replication controller组件

    2024-03-11 08:46:01       22 阅读
  8. iOS 实现悬浮跟手滚动效果

    2024-03-11 08:46:01       21 阅读
  9. C++从零开始的打怪升级之路(day47)

    2024-03-11 08:46:01       18 阅读
  10. BJFU|计算机网络期末复习考前速记

    2024-03-11 08:46:01       17 阅读
  11. Go微服务:基于net/rpc模块实现微服务远程调用

    2024-03-11 08:46:01       26 阅读
  12. 嵌入式学习-FreeRTOS-Day2

    2024-03-11 08:46:01       20 阅读