TCP/IP协议栈
IP数据报格式
数据报如果过大,那就分片!!!!
首部的格式
- 版本:IPv4、IPv6
- 首部
- 长度:4位比特,可以表示16个十进制数 0-15(横坐标)。但是单位是4B(纵坐标),所以要乘4,最后得60B,即首部最大可以达到60B。然而固定部分只有20B,所以可变部分还剩下40B。
- 不能是四个0,因为固定部分至少是20字节(Byte),所以至少从20/4=5开始。即0101
- 当首部长度不是4字节的整数倍时,填充字段,用于将首部填充成4字节的整数倍
- 首部长度一定是4字节的整数倍。
- 数据部分一定会在四字节的整数倍开始
- 区分服务:指示期望获得哪种类型的服务
- 总长度:首部+数据的长度,16位比特,最大长度为65535 单位是1B
- 标识标志片偏移:下节课
- 生存时间(TTL) : IP分组的保质期。经过一个路由器-1,变成0则丢弃。防止数据报一直跑
- 8位比特,是数据部分使用的协议。
- 首部检验和:只检验首部,不检验数据,每经过一个路由器都要检查
- 源地址、目的地址:32位
- 可选字段0~40B:用来支持排错,测量以及安全措施
- 填充:全写0,为了把首部补成4的整数倍,以便首部长度部分可以正确表示
IP数据报分片
最大传送单元MTU
链路层数据帧可封装数据的上限。(图中数据部分)
以太网是1500字节
要结合首部中标识,标志,片偏移
标识
同一数据报,分片后必须使用同一标识。
标志
虽然有3位字节,但是只有2位有意义。x_ _ ,最高位不允许使用
中间位DF (Don't Fragment) DF=1,禁止分片; DF=0,允许分片
最低位MF (More Fragment) : MF=0,代表最后一片/没分片 MF=1,后面“还有分片”,可以继续分
只有DF=0,MF才有意义。
片偏移
片偏移:指出较长分组分片后某片在原分组中的相对位置。以8B位单位。
除了最后一个分片,每个分片长度一定是8B的整数倍。
此处若要算“片偏移”,就算切割位置的字节数,除以8,即得片偏移。
例题
分:每次切割1400,加上首部20,总长1420
报片1:从0到1399字节。 片偏移=0/8 = 0
报片2:从1400-2799字节,片偏移=1400/8 = 175
报片3:从2800字节-3799字节,片偏移 = 2800/8 =350
关注一下:长度。MF。 DF。 片偏移
标签:字节,首部,IP,网络层,偏移,分片,数据 From: https://www.cnblogs.com/nekodream/p/18076381