题目
IP 首部包含哪些字段
答案
![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/image-20230329151927232.png) IP 数据报 = 首部 + 数据部分 **IP 首部包含 20 字节的固定部分**(重点字段下面我加粗了) 1)固定部分的第一个 4 字节(也就是第一行): - **版本号**(Version),4 位;用于标识 IP 协议版本,IPv4是0100,IPv6是0110,也就是二进制的4和6。 - **首部长度**(Internet Header Length),4位;用于标识首部的长度,单位为 4 字节,所以首部长度最大值为:(2^4 - 1) * 4 = 60 字节,但一般只推荐使用 20 字节的固定长度 - 服务类型(Type Of Service),8位;用于标识IP包的优先级,但现在并未使用 - 总长度(Total Length),16位;标识 IP 数据报的总长度,最大为:2^16 - 1 = 65535 字节 2)固定部分的第二个四字节(也就是第二行): - **标识**(Identification),16位;用于标识 IP 数据报 > 如果因为数据链路层帧数据段长度限制(也就是MTU,支持的最大传输单元),IP 数据报需要进行分片发送,则每个分片的 IP 数据报标识都是一致的。 - 标志(Flag,也可以简单记忆为禁止分片的标志位),3 位,但目前只有 2 位有意义;最低位为 MF,MF=1 代表后面还有分片的数据报,MF=0 代表当前数据报已是最后的数据报。次低位为 DF,DF = 1 代表不能分片,DF=0 代表可以分片 - 片偏移(Fragment Offset),13位;代表某个分片在原始数据中的相对位置 3)固定部分的第三个四字节: - 生存时间(TTL),8位;以前代表 IP 数据报最大的生存时间,现在标识 IP 数据报可以经过的路由器数 - 协议(Protocol),8位;代表上层传输层协议的类型,1 代表 ICMP,2 代表 IGMP,6 代表 TCP,17 代表 UDP - **校验和**(Header Checksum),16 位;用于验证数据完整性,计算方法为,首先将校验和位置零,然后将每 16 位二进制反码求和即为校验和,最后写入校验和位置。 4)**固定部分的第四个四字节:源 IP 地址** 5)**固定部分的第五个四字节:目的 IP 地址**