IP协议 — IP协议头部

什么是 IP 协议

IP 作为整个 TCP/IP 协议族中至关重要的协议,主要负责将数据包发送给最终的目标计算机,为上层协议提供无状态、无连接、不可靠的服务。

  • 无状态:无状态是指 IP 通信双方是不同步传输数据的状态信息。所有 IP 数据报的发送、传输和接收都是相互独立。
  • 无连接:无连接是指IP通信双方都不长久地维持对方的任何信息。上层协议每次发送数据的时候,都需要明确指出对方的IP地址。
  • 不可靠:不能保证 IP 数据报准确到达接收端,它只承诺尽最大努力交付。IP 模块一旦检测到数据报发送失败,就通知上层协议,而不会试图重传。

IP 协议头部

通过 IP 进行通信时,需要在数据的前面加入 IP 首部信息。IP 首部包含着用于 IP 协议进行发包控制时所有的必要信息。

IP协议 — IP协议头部_第1张图片

  1. 版本

    由 4 比特构成,用来标识 IP 首部的版本号。IPv4 版本号就是 4。关于 IP 所有版本如下图所示:

    IP协议 — IP协议头部_第2张图片

  2. 首部长度

    表示 IP 首部的大小,单位是 4字节(32bit)。IP 头部的长度也就是 length * 4 的字节数. 当没有可选项时,length 是 5,也就是20字节。

  3. 区分服务(TOS)

    用来表示服务的质量。可划分为 DSCP 和 ECN,DSCP 用来进行质量控制,ECN 用来报告网络拥堵情况。

  4. 总长度

    表示的是 IP 首部 与数据部分合起来的总字节数,最大长度是 65535 字节。

  5. 标识

    用于分片重组。同一个分片的标识值是相同的,不同分片的标识值不同。每发送一个 IP 包,它的值也会逐渐递增。

  6. 标志

    表示包被分片的相关信息。每一位的具体含义如下图。

    IP协议 — IP协议头部_第3张图片

  7. 片偏移

    用来标识被分片的每一个分段相对于原始数据的位置。

  8. 生存时间(TTL)

    这个不是一个时间的概念,实际上是指可以中转多少个路由器的意思,每经过一个路由器,TTL会减少 1,直到变成0 则丢弃该包。

  9. 协议

    表示 IP 首部的下一个首部属于哪个协议。

  10. 首部校验和

    该字段只会校验数据包的首部,不会去校验数据部分。这个字段主要目的是用来确保 IP 数据包不被破坏。

  11. 源地址

    表示发送端的 IP 地址。

  12. 目标地址

    表示接收端的 IP 地址。

  13. 可选字段

    长度可变,通常只在进行实验或诊断时使用。

  14. 填充

    在有可选字段的情况下,首部长度可能不是 32 比特的整数倍。通过向字段填充 0,调整为 32 比特的整数倍。

  15. 数据

    用来存入实际要传输的数据,同时将 IP 上层协议的首部也作为数据进行处理。

    IPv6 协议首部

    IPv6 相比 IPv4 已经发生了巨大变化。IPv6 中为了减轻路由器的负担,省略了首部校验和字段。提高了包转发的效率。

    IP协议 — IP协议头部_第4张图片

    1. 版本

      与 IPv4 是一样的,其版本号是 6。

    2. 通信量类

      相当于 IPv4 的 TOS 字段。

    3. 流标号

      由 20 比特构成,准备用于服务质量的控制。在进行服务质量控制时,将流标号设置为一个随机数,然后利用一种可以设置流的协议在路由器上进行服务质量设置。

    4. 有效载荷长度

      有效载荷是指包的数据部分。这个是不包含首部的,只表示数据部分的长度,

    5. 下一个首部

      相当于 IPv4 的协议字段。通常表示 IP 的上一层协议是 TCP 或 UDP。

    6. 跳数限制

      与 IPv4 中的 TTL 相同,表示可通过路由器的个数。数据每经过一次路由器就减1,减到 0 则丢弃数据。

    7. 源地址

      表示发送端的 IP 地址。

    8. 目标地址

      表示接收端的 IP 地址。

    9. 扩展首部

      IPv6 首部长度是固定的,无法将可选项加入其中。取而代之的是通过扩展首部对功能进行了有效扩展。

      在需要对 IP 数据报进行分片时,可以使用扩展首部。

你可能感兴趣的:(网络,tcp/ip,网络,网络协议)