本节将IPv4数据包简称为IP数据报,省去版本号

    • IP数据报由20字节的固定部分和40字节的可变部分组成,某些IP数据报的首部还包含一些可选的字段来增加IP数据报的功能
    • IP数据报的首部常以32个比特即4个字节为单位进行描述,图中每一行都是32个比特,每个格子称为字段或者域,每个字段或某个字段的组合用来表达IP协议的相关功能。

    image.png

    • 版本:占4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。
    • 首部长度:占4个比特,表示IP数据报的首部长度。该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分;最大十进制取值为15,表示IP数据报首部包含20字节固定部分合最大40字节可变部分。
    • 可选字段:长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。可选字段增加了IP数据报的功能,但这通识使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少使用。
    • 填充字段:确保首部长度是4字节的整数倍,用全0进行填充。
    • 区分服务:占8比特,用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用,一般情况下不使用该字段。
    • 总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。实际应用中,很少传输这么大的IP数据报。
    • 标识,标志,片偏移:这三个字段共同用于IP数据报分片:

    IP数据报讲在数据链路层封装成帧,每一种数据链路层协议都规定了帧的数据载荷的最大长度,称为最大传输单元MTU,以太网的数据链路层规定MTU的值为1500字节。当某个IP数据报的总长度超过MTU时,将无法封装成帧,这就需要分片,将原IP数据报分片为更小的IP数据报,再将个IP数据报封装成帧。

    1. - 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
    2. - 标志:占3比特,各比特含义如下:
    3. - DF位:1表示不允许分片,0表示允许分片
    4. - MF位:1表示本分片后面是否还有分片,0表示这是最后一个分片
    5. - 保留位:必须为0
    6. - 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。这里的值以8为单位。

    举例:对IPv4数据报进行分片
    假设有这样一个IP数据报:固定首部+3800字节的数据载荷=3820字节 通过以太网传送
    image.png
    以太网MTU为1500字节需要分片,
    如何分片:

    1. - 将原IP数据报数据载荷部分的每一个字节都编上号,第一个字节编号为0,最后一个为3799.
    2. - 将数据载荷分成3个更小的分片:
    3. - 第一个从0~1399 1400
    4. - 第二个从1400~2799 1400
    5. - 第三个从2800~3799 1000
    6. - 给各分片分别添加首部,使之称为IP数据报

    image.png
    这里DF为0表示还可以再分片
    假设分片2在通过一个网络时,还要再分片,一部分800字节,一部分600字节
    image.png
    image.png

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

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

    1. - 生存时间的作用:防止IP数据报在网络中永久兜圈
    • 协议字段:占8个比特,指明IPv4数据报的数据部分是何种协议数据单元。

    image.png

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

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

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

    • 源IP地址和目的IP地址:

    各占32比特,用来填写发送该IP数据报地源主机的IP地址和接收该IP数据报的目的主机的IP地址。