问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IPv4报文格式和IP分片及计算详解

创作时间:
作者:
@小白创作中心

IPv4报文格式和IP分片及计算详解

引用
CSDN
1.
https://blog.csdn.net/lovemelovefish/article/details/138158307

IPv4报文格式和IP分片是计算机网络中的重要概念,本文将详细介绍这两个方面的知识。

1. IPv4报文格式

IPv4报文格式由多个字段组成,每个字段都有其特定的含义和作用:

  • 版本:占用4位,用于标识IP协议的版本。对于IPv4,该字段的值为0100(即4);对于IPv6,该字段的值为0110(即6)。

  • 头部长度(IHL):占用4位,表示IP头部的长度。最小值为5,最大值为15,单位为4字节。IPv6的头部长度固定为40字节。

  • 区分服务(TOS):占用8位,用于区分服务类型,即QoS(服务质量)字段,表示数据包的优先级。

  • 总长度字段:占用16位,表示IPv4数据报的总长度,最大值为65535字节(2的16次方)。

  • 标识:占用16位,用于标识主机发送的IP报文序号,每发送一次加1。

  • 生存期(TTL):占用8位,用于设置数据包可经过的路由器数量的上限,每经过一台路由器减1(范围:0~255)。IPv6中对应的字段是“跳数限制”(Hop Limit)。

  • 协议字段:占用8位,包含一个数字,标识数据报有效载荷部分的数据类型。最常用的值为1(ICMP)、17(UDP)和6(TCP)。

  • 头部校验和:占用16位,用于计算IPv4头部的校验和,不检查数据有效载荷部分的正确性。当TTL减一时,头部校验和必须重新计算。IPv6没有首部校验和字段。

IPv4报文的最大长度是65535字节,其中数据部分最大为65515字节,头部为20字节。

2. IP分片及计算

在实际网络传输中,数据包的大小可能超过下层数据链路层的MTU(最大传输单元)。当这种情况发生时,就需要对数据包进行分片处理。

  • 最大传输单元(MTU):表示数据链路层能够接受的最大数据包大小。例如,以太网的MTU通常为1500字节。

  • 片偏移:占用13位,表示较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,这意味着每个分片的长度一定是8字节的整数倍。

  • 标志字段:最低位记为MF(More Fragments)。MF=1表示后面还有分片的数据报;MF=0表示这是数据报片中的最后一个。

分片计算示例

假设以太网发送一个IP分组,长度为3000字节(包含数据2980字节+20字节头部),发送IP分组(MTU=1500字节),则发送需要分成几片?

总长度
数据
头部
剩余
偏移量offset
MF
3000
2980
20
0
1500
1480
20
1500
0
1
1500
1480
20
20
1480/8=185
1
40
20
20
0
2960/8=370
0

所以总计需要分三次,最后一片的偏移量为370。

假设以太网发送一个IP分组,长度为4000字节(包含数据3980字节+20字节头部),发送IP分组(MTU=1500字节),则发送需要分成几片?

总长度
数据
头部
剩余
偏移量offset
MF
4000
3980
20
0
1500
1480
20
2500
0
1
1500
1480
20
1020
1480/8=185
1
1040
1020
20
0
2960/8=370
0

所以总计需要分三次,最后一片的偏移量为370。

假设以太网发送一个IP分组,长度为1500字节(包含数据1480字节+20字节头部),发送IP分组(MTU=1024字节),则发送需要分成几片?

总长度
数据
头部
剩余
偏移量offset
MF
1500
1480
20
0
1024
1000
20
480
0
1
500
480
20
0
1000/8=125
0

所以总计需要分两次,最后一片的偏移量为125。

需要注意的是,在计算偏移量时,应将剩余数据量除以8而不是除以20(头部长度)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号