IP
IP数据包结构
1. 版本:IP协议的版本, IPV4or IPV6
2. 首部长度:IP数据包首部的长度,以4字节为单位。因为有“可选项”,所以首部长度是可变的,长度范围在 >=20字节(4*5) <= 60字节(4*15)。
3. 服务类型:Type ofservice, TOS, 它指定了应当如何处理数据包。一般会定义数据包的优先级,服务类型,关于该字段的解释请参照最新的标准。
4. 总长度:定义数据包的总长度(首部+数据)。总长度字段为16位,所以IP数据包长度限制在65535字节。
5. 标识,标志,分片偏移:这三个字段主要用于分片,请参考分片的总结。
6. 生存时间TTL: 这个字段用来控制数据包经过的最大跳数(路由器)。
7. 协议: 保存使用该IP层服务的上层协议,如, TCP, UDP, ICMP…
8. 检验和:对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
9. 源地址,目的地址
10. 选项字段:
MTU最大传输单元
1. 每个数据链路都有自己一次最大传输的数据长度。
2. 只有数据包中的数据部分是可分片的,不会对头部进行分片。
分片
分片涉及3个IP头部字段:标识,标志和分片偏移。
标识:该字段功能如下:
1. 由源主机在发出数据包时生成这个标识;
2. 该标识和源IP地址的组合能唯一地确定这个数据包;
3. 在数据包分片时,标示字段的值会复制到所有的分片中。所有的分片都具有相同的标识号,这也是原始数据包的标识号;
4. 这个标识号会在终点重装数据包时使用,终点知道具有相同标识号的分片必须被组装到一个数据包中。
标示:该字段共三位,功能如下:
1. 第一位保留;
2. 第二位区分该数据包是否可以分片;=1说明该数据包不能被分片;
3. 第三位是否还有分片;=1表示该数据包不是最后的分片,后面还有更多的分片;=0则表示这是最后的或唯一的分片。
分片偏移:
1. 该分片在整个数据包中的相对位置;
2. 该偏移值始终是相对于原始数据包的;
3. 偏移值以8字节为单位;
可参考下图理解该字段:
重装
1. 重装发生在数据包的最终目的地;
2. 预定时间到期,还有分片未到位,则将收到的该数据包的其他分片全部丢弃。