IP 首部
IP 首部是 TCP/IP 协议族中最为核心的协议,所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 提供不可靠、无连接的数据报传送服务,意味着它不能保证 IP 数据报能成功地到达目的地,任何要求的可靠性必须由上层来提供(如 TCP)。IP 首部长为 20 个字节,除非含有选项字段。
IP 首部中的字段包括版本号、首部长度、服务类型、总长度、标识、旗标、片偏移、生命周期、协议、头部校验和、源 IP 地址、目的 IP 地址、选项字段和填充字段。
版本号字段指的是协议的版本号,目前的协议版本号是 4,因此 IP 有时也称作 IPv4。首部长度字段指的是首部占 32 bit 字的数目,包括任何选项。
服务类型(TOS)字段包括一个 3 bit 的优先权子字段、4 bit 的 TOS 子字段和 1 bit 未用位但必须置 0。4 bit 的 TOS 分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
总长度字段是指整个 IP 数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道 IP 数据报中数据内容的起始位置。
IP 首部中的标识字段是一个 16 bit 的数字,用于标识 IP 数据报的唯一性。在分片传输时,标识字段的值保持不变,以便于在目的地重新组装数据报。
旗标字段是一个 3 bit 的字段,用于控制 IP 数据报的分片和重组。DF(Don't Fragment)位用于禁止分片,MF(More Fragment)位用于标识这是一个分片的最后一部分。
片偏移字段是一个 13 bit 的字段,用于指定数据报的偏移量,以便于在目的地重新组装数据报。
生命周期字段是一个 8 bit 的字段,用于指定 IP 数据报的生命周期,以避免数据报在网络中长时间循环传输。
协议字段是一个 8 bit 的字段,用于指定数据报所携带的上层协议的类型,如 TCP、UDP、ICMP 等。
头部校验和字段是一个 16 bit 的字段,用于校验 IP 首部的正确性。
源 IP 地址字段和目的 IP 地址字段分别指定了数据报的源地址和目的地址。
选项字段是一个可变长的字段,用于携带一些附加信息,如路由记录选项、时间戳选项等。
填充字段是一个可变长的字段,用于填充 IP 首部的末尾,以使得 IP 首部的长度是 4 的整数倍。
IP 首部中的这些字段共同作用,实现了 IP 协议的不可靠、无连接的数据报传送服务。