0%

计网网络层L4

  • IPv4数据报的首部格式

★★★4.7 IPv4数据报的首部格式

  • IPv4 数据报(以下简称 IP 数据报)的首部由 20 字节的固定部分和最大 40 字节的可变部分组成

    • 固定部分:每个 IP 数据报首部都必须包含的部分;
    • 可变部分:该部分的长度不固定,可变。

    IP 数据报的首部常以 32 个比特为单位进行描述,下图中的每一行都由 32 个比特构成。每一个小格子称为字段或者域,每个字段或某些字段的组合用来表达 IP 协议的相关功能:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-95.jpg)

版本字段

  • 版本字段:占 4 个比特,表示 IP 协议的版本,通信双方使用的 IP 协议的版本必须一致,目前广泛使用的 IP 协议版本号为 4(即 IPv4);

★首部长度字段

  • 首部长度字段:占 4 比特,表示 IP 数据报首部的长度,该字段的取值以 4 字节为单位,最小十进制取值为 5,表示 IP 数据报首部只有 20 字节固定部分;最大十进制取值为 15,表示 IP 数据报首部包含 20 字节固定部分和最大 40 字节可变部分。

区分服务字段

  • 区分服务字段:占 8 比特,用来获得更好的服务,该字段在旧标准中叫作服务类型,但实际上一直没有被使用过,利用该字段的不同数值可提供不同等级的服务质量,只有在使用区分服务时,该字段才起作用,一般情况下都不使用该字段。

★总长度字段

  • 总长度字段:占 16 比特表示 IP 数据报的总长度(首部 + 数据载荷)。最大取值为十进制的 65535,以字节为单位

    首部长度和总长度的关系(见下图例子):

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-94.jpg)

★标识、标志、片偏移

  • 标识、标志、片偏移共同占 32 比特,用于进行 IP 数据报分片(IP 数据报分片的原因是帧的数据载荷有一个最大传输单元 MTU,当 IPv4 数据报长度超过 MTU 时,就无法封装,需要进行分片)。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-96.jpg)

  • 标识字段:占 16 比特属于同一个数据报的各分片数据报应该具有相同的标识,IP 软件维持一个计数器,每产生一个数据报,计数器值加 1,并将此值赋给标识字段。

  • 标志字段:占 3 比特,各比特含义可见下图(MF:More Fragment;DF:Don’t Fragment)。

  • 片偏移字段:占 13 比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位(以 8 个字节为单位)。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-97.jpg)

  • 分片例子:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-98.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-99.jpg)

★生存时间字段

  • 生存时间字段 TTL (Time To Live):占 8 比特

    最初以秒为单位,最大生存周期为 255 秒;路由器转发 IP 数据报时,将IP数据报首部中的该字段的值减去 IP 数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。

    现在以 “跳数” 为单位,路由器转发 IP 数据报时,将 IP 数据报首部中的该字段的值减 1,若不为 0 就转发,否则就丢弃。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-100.jpg)

    生存时间字段的作用是可以解决路由环路问题

★协议字段

  • 协议字段:占 8 比特,指明 IPv4 数据报的数据部分是何种协议数据单元。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-101.jpg)

首部检验和字段

  • 首部检验和字段:占 16 比特,用来检测首部在传输过程中是否出现差错,比 CRC 检验码简单,称为因特网检验和。

    IP 数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。

    由于网络层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在 IPv6 中,路由器不再计算首部校验和,从而更快转发 IP 数据报。

★源IP地址字段

  • 源 IP 地址字段:占 32 比特,用来填写发送该 IP 数据报的源主机的 IP 地址

★目的IP地址字段

  • 目的 IP 地址字段:占 32 比特,用来填写接收该 IP 数据报的目的主机的 IP 地址

可选字段

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

填充字段

  • 填充字段:确保首部长度为字节的整数倍,使用全 0 进行填充。

★★★例题

  • 例题1:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-102.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-103.jpg)

    注意:片偏移量必须为整数

  • 例题2:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-104.jpg)

    IP 数据报的首部紧接在以太网帧的帧首之后,所以目的 IP 地址是从以太网帧的第 31 个字节开始的(14 + 16 = 30 B)。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-105.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C4-106.jpg)

    注意:MAC 地址的长度为 48 比特(6 字节);IP 地址的长度为 32 比特(4 字节)

---------------The End---------------