目录
1.IPV4报文格式
2.IP分片及计算
1.IPV4报文格式
- 版本:四位,IPV4 0100 =4 ;IPV6 0110 =6
- 头部长度(IHL):最小值是5,最大值为15,单位4字节。IPV6固定头部长度40字节
- TOS:为区分服务字段,用区分服务类型,即QoS字段,优先级。
- 总长度字段:IPv4数据报的总长度。
- 标识:主机发送IP报文的序号,每发送一次+1。
- 生存期(TTL):用于设置一个数据包可经过的路由器数量的上限,每经过一台路由器减1(范围:0~255)。与IPV4的TTL类似是IPV6【心跳限制-hop limit】;为了控制IP数据报在网络中无限转发,IPV4设置了生存期可以。
- 协议字段:包含一个数字,标识数据报有效载荷部分的数据类型。最常用的值为1(ICMP)17(UDP)和6(TCP)。
- 头部校验和:仅计算IPv4头部,不检查数据有效载荷部分的正确性。当TTL减一时,头部校验和必须重新计算。 IPV6没有【首部校验和】
- ipv4报文的最大长度是65535字节=2的16次方 =(数据65515+头部20字节)
2.IP分片及计算
- 已知道IP报文最大为65535字节,以太网MTU(最大传输单元Maximum Transmission Unit)为1500字节。
- 最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。
- 如果要发送的IP数据包比数据链路层的MTU大,则无法发送该数据包。对于来自于上一层的IP协议,当要求发送的IP数据包比数据链路层的MTU大时,必把该数据包分割成多个IP数据包才能发送。
- 片偏移:占13位。较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,这就是说,每个分片的长度一定8字节的整数倍。
- 标志字段中的最低位记为 MF。MF=1 表示后面“还有分片”的数据报。MF=0 表示这是数据报片中的最后一个。
假设以太网发送一个IP分组,长度3000字节(包含数据2980+20头部),发送IP分组(MTU=1500字节),则发送需要分成几片?
总长度 | 数据 | 头 | 剩余 | 偏移量offset | MF | |
原始 | 3000 | 2980 | 20 | 0 | ||
第一次 | 1500 | 1480 | 20 | 数据剩余待发送=2980-1480=1500 | 0 | 1 |
第二次 | 1500 | 1480 | 20 | 数据剩余待发送=1500-1480=20 | 1480/8=185 | 1 |
第三次 | 40 | 20 | 20 | 2960/8=370 | 0 |
所以总计需要分三次,最后一片的偏移370
假设以太网发送一个IP分组,长度4000字节(包含数据2980+20头部),发送IP分组(MTU=1500字节),则发送需要分成几片?
总长度 | 数据 | 头 | 剩余 | 偏移量offset | MF | |
原始 | 4000 | 3980 | 20 | 0 | ||
第一次 | 1500 | 1480 | 20 | 数据剩余待发送=3980-1480=2500 | 0 | 1 |
第二次 | 1500 | 1480 | 20 | 数据剩余待发送=2500-1480=1020 | 1480/8=185 | 1 |
第三次 | 1040 | 1020 | 20 | 2960/8=370 | 0 |
所以总计需要分三次,最后一片的偏移370
假设以太网发送一个IP分组,长度1500字节(包含数据1480+20头部),发送IP分组(MTU=1024字节),则发送需要分成几片?
总长度 | 数据 | 头 | 剩余 | 偏移量offset :指示每个分段在原报文的位置 | MF | |
原始 | 1500 | 1480 | 20 | 0 | ||
第一次 | 1024 | 1000 备注1024-20-1004,但是1004无法整除8,所以取1000 | 20 | 数据剩余待发送=1480-1000=480 | 0 | 1 |
第二次 | 500 | 480 | 20 | 1000/8=125 | 0 |
所以总计需要分三次,最后一片的偏移125