IPv4协议:Internet网络层最核心的协议。定义了如何封装上层协议( 如UDP、 TCP) 的报文段;定义了Internet网络层寻址( IP地址) 以及如何转发IP数据报等内容。
1. IP数据报格式
1. 版本号:4位,IP的版本号。
2. 首部长度:4位,IP数据报的首部长度: 20B - 60B。
3. 区分服务:8位,在旧标准种称为服务类型(Type Of Service,TOS)字段, 用来指示期望获得哪种类型的服务。
4. 数据长度:16位,IP数据报的总字节数。
5. 标识:16位, 标识一个IP数据报。 每产生一个IP数据报, IP协议的计数器加1。该字段的重要用途: 在IP数据报分片和重组过程中用于标识属于同一IP数据报。该字段不可唯一标识一个IP数据报。
6. 标志:3位,其结构如图:
7. 片偏移量:以8B为单位,表示一个IP数据报分片与原IP数据报的数据的相对当该字段值为0时, 且MF=1, 则表示这是一个IP分片, 且是第一个分片。
8. 生存时间:8位,Time-To-Live ,TTL。 表示IP数据报在网络中可以通过的路由器数(或跳步数)。
9. 上层协议:8位, 指示该IP数据报封装的是哪个上层协议。 TCP为6,UDP为17。
10. 首部校验和:16位,利用校验和实现对IP数据报首部的差错检测。
11. 源IP地址:32位, 发出IP数据报的源主机的IP地址。
12. 目的IP地址:32位,IP数据报的需要送达的主机的IP地址。
13. 选项:长度可变。
14. 数据:存放IP数据报所封装的传输层报文段。
2. IP数据报分片
1. 最大传输单元(Maximum Transmission Unit,MTU): 数据链路层帧能承载的最大数据量。因为在网络层数据报分组再分片之后要传输给数据链路层,所以必须要考虑最大传输单元。
2. IP数据报分片的原则:尽可能少分片,一个最大分片可封装的数据字节数最好是8的倍数。
3. IP数据报分片的计算:
分片例题:
通过PingPlotter工具发送一个总长度为3400字节的IP数据报, 通过MTU=1500字节的链路转发。 试求以下内容:
第一步:每个分片最多可以封装多少字节的数据。
因为MTU=1500字节,对于一个分片来说包括两部分内容: 首部 数据,那么, 一个分片可以封装的数据字节数: 1500 - 20=1480字节。
第二步: 分片数。
一个分片可以封装的数据字节数: 1500 - 20 = 1480字节。
IP数据报的总长度: 3400字节。
IP数据报的数据长度: 3400 - 20 = 3380字节。
分片数: 3380 ÷ 1480 = 2.28( 2片封装不完, 所以需要3片)。
第三步: 标志位。
MF: 更多分片。
第四步: 片偏移量( 单位为8字节)。