网络层
网络层数据包(IP 数据包,Packet)由首部、数据两部分组成。
数据部分:很多时候是传输层传递下来的数据段(Segment)。
(1)首部
1. 版本
占 4 位
0b0100:IPv4
0b0110:IPv6
2. 首部长度
占 4 位,二进制乘以 4 才是最终长度
0b0101:20(最小值)
0b1111:60(最大值)
3. 区分服务
占 8 位
可以用于提高网络的服务质量(QoS,Quality of Service)
4. 总长度
占 16 位
首部 + 数据的长度之和,最大值是 65535
由于帧的数据不能超过 1500 字节,所以过大的 IP 数据包需要分片(fragments)传输给数据链路层,每一片都有自己的网络层首部(IP 首部)
5. 标识
占 16 位
数据包的 ID。当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的
有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1
6. 标志
占 3 位
第 1 位(Reserved Bit):保留
第 2 位(Don’t Fragment):1 代表不允许分片,0 代表允许分片
第 3 位(More Fragments):1 代表不是最后一片,0 代表是最后一片
7. 片偏移
占 13 位
片偏移乘以 8:字节偏移
每一片的长度一定是 8 的整数倍
8. 生存时间
占 8 位
每个路由器在转发之前会将 TTL 减 1,一旦发现 TTL 减为 0,路由器会返回错误报告
观察使用 ping 命令后的 TTL,能够推测出对方的操作系统、中间经过了多少个路由器
9. 协议
占 8 位
表明所封装的数据是使用了什么协议
10. 首部校验和
用于检查首部是否有错误