IP数据报的整体格式:
- 版本:IPv4、IPv6。下述包头是IPv4的包头,版本为4
- 首部长度:占4个bit,首部大小 = 首部长度 * 4
- 区分服务:一般不使用
- 总长度:首部+数据的长度,16字节最大为65535。长度不可超过MTU
MTU就是数据报的最大长度,MTU<=65535
- 标识:它是一个随机数,相同标识的数据报代表为一组
- 标志:MF=1代表之后有分片,MF=0代表该数据报为最后一个分片,DF=0代表允许分片
- 片偏移:偏移单位8字节。片偏移 = TCP中位置 / 8分析见"片偏移过程"
- 生存时间:TTL,指示数据报在网络中可通过的路由器个数的最大值。防止出现循环路由但到达不了目标地址的情况。
- 协议:TCP、UDP,标注了是运输层的谁传给的网络层
什么是分片:
就像TCP接收应用层数据将数据抽象成一字节一字节并以一段一段的方式进行传输一样,IP接收到TCP的数据,也会将大的数据抽象成一段一段的数据进行处理。这一段一段的数据就叫IP数据报分片。
分片的过程:
假设TCP传输的本次数据共有3800个字节,IP数据报的长度MTU为1400个字节。那么第一个分片就是0~1399,第二个就是1400~2799,第三个就是2800~3799。偏移就是首地址/4