4.7 IPv4数据报的首部格式.pdf
IP协议的组成:
image.png

在IP协议中分为两部分:

固定部分:
由20子节组成,是每个IP数据报都必须包含的部分。

可变部分:
可选字段,由40个子节组成,用来增加IP数据报的功能。

IP数据报的首部的每一行都由32个比特(4个子节)组成。

在图中的每个小个子称为字段或者。每个字段或者某个字段的组合用来表示IP协议的相关功能

相关字段功能解释:
版本字段:
image.png
4×5=20;
4×15=20+40;
首部长度字段:
image.png
可选字段:
image.png
image.png
填充字段:
image.png

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

    因为IP地址首部的可选字段的长度为1个子节到40个子节不等。为了确保首部长度整体是4字节的倍数,因此需要用首部填充字段进行填充。

区分服务字段:
image.png
总长度字段:
image.png
首部字段和总长度字段的区别和联系:
image.png

在该IP数据报中,由首部和数据载荷部分组成,这两部分是怎么跟IP数据报首部格式联系起来的呢?

例如:
IP数据报首部长度字段值为:0101(十进制为5)。总长度字段为000000111111100(十进制为1020).

image.png
标识、标志、片偏移字段:
image.pngimage.png

  • 这三个字段共同用户数据报分片,此时就引起了数据报分片的概念。

    数据报分片:

  • 简单来说,数据报分配就是数据报长度超过最大传输单元时,将数据报进行分割的操作

  • 数据报长度超过最大传输单元(MTU)时,将无法封装成帧,因此就将原IP数据报进行分片,使其成为更小的IP数据报。再逐个分配IP数据报封装成帧进行递交给物理层处理。

image.png

  • 以太网规定MTU的值为1500子节

标识、标志、片偏移含义:
image.png
对IP数据报进行分片举例:
image.png

对于该数据报,长度为数据载荷子节+固定首部子节 = 3800子节。

若在以太网进行传输时,明显是超过以太网MTU的,此时便无法正常封装成帧,因此需要对其及进行分片

image.png

在分片时,首先给数据载荷个字节进行编号

编号完毕后根据合适的大小将其进行分组

分组完毕后再给其加上一个新的首部

然后就要开始填写分组各首部的数据,也就是图中表格的填写。

首先回忆一下各个标识的含义:

MF:标识后面还有没有分片数据报,即自己是不是最后一个分片。

DF:标识可否进行分片

片偏移记录片偏移的地址量(就是分片首部地址编号跟原首部地址的编号偏移了多少个地址)

我们对分片数据报1的首部各个字段进行解释:

总长度字段:由于分片长度为数据载荷长度+分片首部 = 1400 + 20 = 1420

标识字段:用于标识本个分片,设置为12345

MF:由于这是分片1,后面还有分片2,因此该标识位为1

DF:该分片可以继续分片,因而其值为0

片偏移量:
标识分片首部相对于原数据报首部的偏移地址,计算方式为:分片首部地址/片偏移量单位

因此此处的数据为0/8 = 0,标识标识与原数据报的首部地址偏移地址为0,也就是没有偏移。

表格中其他数据大同小异,不再进行赘述。

此时若需要,还可以对某分片进行再度分片,例如,对分片2进行再度分片:
image.png

image.png

生存时间字段:
image.png

  • 生存时间字段TTL的一个重要作用:防止IP数据报在网络中永久兜圈

    举例:

    image.png
    假设错误配置成了R1
    image.png

    在此图中,由于人工设置静态路由条目出现错误,很明显会出现路由环路问题,导致IP数据报在路由环路之间循环传输,永久兜圈。

此时TTL就可以在一定时间走过后没有到达目的路由器就会将其进行丢弃,防止IP数据报出现永久兜圈。

image.png
协议字段:
image.pngimage.png

若协议字段为1,则其为ICMP封装的协议数据单元。

image.png
首部检验和字段:
image.png

值得注意的是,由于其计算过程耗时,在IPv6中已不再计算首部校验和。

源IP地址、目的IP地址字段:
image.png

练习:

image.png
image.pngimage.pngimage.pngimage.png