侧边栏壁纸
  • 累计撰写 244 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论
隐藏侧边栏

IP 报文头格式

kaixindeken
2021-04-19 / 0 评论 / 0 点赞 / 64 阅读 / 1,273 字

我们主要来看下 IPv4 报文首部的格式。

通过 IP 协议进行网络通信时,需要在数据前面加上 IP 首部信息(有的地方称之为 IP 头,一个意思),IP 首部中包含着基于 IP 协议进行发包控制时所有的必要信息:

1.png

下面我们看具体看下每个字段表示的含义:

版本:用于标识 IP 首部的版本号,IPv4 的版本号即4,关于 IP 首部的版本信息可以参考这里:https://www.iana.org/assignments/version-numbers/version-numbers.xhtml。

  • 首部长度:IP首部的大小,单位为4字节。
  • 区分服务(TOS):用来表示服务质量,IP 协议本身是一种尽力服务的协议,无法保证通信质量,但是近年来随着音视频服务对实时性要求的提高,在使用 IP 通信过程当中保证服务质量的技术也有了蓬勃发展。DSCP 字段用于在通过 DiffServ 控制网络质量的时候设置包的优先级;ECN 则主要用于网络通信中的显式拥塞通知。
  • 总长度:IP首部与数据部分结合起来的总字节数,最大长度是65535。
  • 标识:用于 IP 包分片重组,不同分片标识值不同。
  • 标志:表示包被分片的相关信息。
  • 片偏移:用来标识被分片的每一个分段相对于原始数据的位置。以上三个字段用于 IP 包的分片与重组。
  • 生存时间:最初设计为网络包的有效时间,实际用于可以中转多少个路由器,每经过一个路由器,TTL值减1,直到为0则丢弃该包。
  • 协议:标识 IP 首部的上一层首部隶属于哪个协议,比如 TCP 或 UDP,具体支持的协议信息请参考这里:https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml。
    首部校验和:只校验数据报的首部,不校验数据部分,主要用来确保 IP 数据报不被破坏。
    源地址:发送端 IP 地址。
    目标地址:接收端 IP 地址。
    可选项:通常在实验或诊断时才使用。
    填充:在有可选项的情况下,首部长度可能不是32位的整数倍,通过向该字段填充0,将其调整为32位整数倍,以方便计算机进行处理。
    数据:传输的具体数据(并不是首部的一部分)。
    感兴趣的话,可以试试通过 WireShark 对网络请求进行抓包,就可以看到对应的 IP 首部信息了:

1.png

可以看到,和我们上面介绍的 IP 头格式完全一致,只是没有可选字段和填充项。

在实际通信中,仅凭 IP 协议还不够,还要借助众多支持 IP 协议的相关技术才能更好地实现最终通信。

0

评论区