P(Internet Protocol,网际协议)是 TCP/IP 协议族中的核心协议之一,主要负责在网络中对数据包进行寻址和路由。以下是 IP 协议的主要特性:
一、IP 协议头部结构
- IPv4(重点)
IPv4 头部最小为 20 字节 ,最多可达 60 字节(含选项字段)。结构如下(按 32 位字对齐):
| 字段(位数) | 含义 | 说明 |
|---|---|---|
| Version (4 bits) | 4位版本号 | 指定 IP 协议的版本,对于 IPv4来说,就是 4 |
| IHL (Internet Header Length, 4 bits) | 4位首部长度 | 表示 IP 头部的长度,也就是 length*4 的字节数。4 bit表示的最大的数字是 15,因此 IP 头部的最大长度是 60 字节 |
| Type of Service / DSCP + ECN (8 bits) | 8位服务类型 / 区分服务 | 3 位优先权字段(已经弃用)、4 位 TOS 字段、1 位保留字段(必须置为0)。4 位 TOS 分别表示:最小延迟、最大吞吐量、最高可靠性、最小成本。这四者相互冲突,只能选择一个。对于 ssh/telnet 这样的应用程序,最小延迟比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。 |
| Total Length (16 bits) | 16位总长度 | 整个 IP 数据报长度(首部 + 数据),单位为 字节,最大 65535 字节 |
| Identification (16 bits) | 16位标识 | 用于标识属于同一数据报的分片,便于重组。唯一的标志主机发送的报文,如果IP报文在数据链路层被分片了,那么每一个片里面的这个 id 都是一样的。 |
| Flags (3 bits) | 3位标志位 | • 第 1 位:保留(必须为 0,保留的意思是现在不用,但是以后说不定要用) • 第 2 位(DF):如果是 1 表示禁止分片,这时候如果报文长度超过 MTU,IP模块就会丢弃报文。 • 第 3 位(MF):表示 "更多分片",如果分片了的化,最后一个分片置为 1, 其他是 0.类似一个结束标志 |
| Fragment Offset (13 bits) | 13位分片偏移 | 当前分片在原始数据报中的位置(以 8 字节 为单位) |
| Time to Live (TTL, 8 bits) | 8位生存时间 | 每经过一个路由器减 1,为 0 时丢弃并发送 ICMP 超时报文,防止无限路由循环 |
| Protocol (8 bits) | 8位上层协议 | 指示载荷使用的协议: • 1 = ICMP • 6 = TCP • 17 = UDP • 其他见 IANA 协议号列表 |
| Header Checksum (16 bits) | 16位首部校验和 | 利用 CRC 进行校验仅校验 IP 首部(不包括数据,来鉴别头部是否损坏,每跳重新计算(因 TTL 改变) |
| Source IP Address (32 bits) | 32位源 IP 地址 | 发送方的 IPv4 地址 |
| Destination IP Address (32 bits) | 32位目的 IP 地址 | 接收方的 IPv4 地址 |
| Options (0--40 bytes, 可选) | 选项字段 | 如记录路由、时间戳、严格源路由等(很少使用,影响性能) |
| Padding | 填充 | 保证首部是 32 位对齐 |
- IPv6
Pv6 简化了头部结构,固定为 40 字节,提高路由效率。不再包含校验和和分片字段(分片由扩展头处理)。
| 字段(位数) | 含义 | 说明 |
|---|---|---|
| Version (4 bits) | 版本号 | 固定为 6 |
| Traffic Class (8 bits) | 流类别 | 类似 IPv4 的 ToS,用于 QoS(前 6 位 DSCP,后 2 位 ECN) |
| Flow Label (20 bits) | 流标签 | 用于标识属于同一"流"的数据包,支持实时业务(如 VoIP) |
| Payload Length (16 bits) | 有效载荷长度 | 不包括 IPv6 首部,仅数据 + 扩展头长度(最大 65535 字节) |
| Next Header (8 bits) | 下一首部 | 类似 IPv4 的 Protocol 字段: • 若无扩展头,则指示上层协议(TCP/UDP/ICMPv6) • 若有扩展头,则指向下个扩展头类型 |
| Hop Limit (8 bits) | 跳数限制 | 等同于 IPv4 的 TTL,每跳减 1,为 0 则丢弃 |
| Source Address (128 bits) | 源 IPv6 地址 | 发送方地址 |
| Destination Address (128 bits) | 目的 IPv6 地址 | 接收方地址 |
二、无连接(Connectionless)
-
IP 协议在发送数据前不需要建立连接
-
每个数据包(IP数据报)独立处理,可能通过不同路径到达目的地
三、不可靠(Unreliable)
-
IP 协议不保证数据包的可靠传输
-
不需要提供确认、重传、排序或错误恢复机制
-
若需要实现可靠性,需依赖上层协议(如 TCP)
四、尽力而交互(Best-effort Delivery)
-
IP 尽最大努力将数据包送达目标,但不保证成功。
-
如果发生丢包、乱序或损坏,IP本身不会纠正
五、支持异构网络连
-
IP可以在各种物理网络(以太网、Wi-Fi、PPP等)上传输数据
-
通过统一的 IP 地址格式和封装机制,实现不同网络之间的互联互通
六、使用 IP 地址进行逻辑寻址
-
每台主机分配一个唯一的 IP 地址(IPv4 或 IPv6)
-
路由器根据目的 IP 地址决定转发路径
七、分片与重组(Fragmentation & Reassembly)
-
当数据包大小超过链路 MTU(最大传输单元时),IP 可对其进行分片
-
分片在目的主机处重组(IPv4),而 IPv6 通常避免中间节点分片,由源端处理。
八、协议版本
-
IPv4: 32位地址,约 43 亿地址空间,广泛使用
-
IPv6:128位地址,极大扩展地址空间,增强安全性、自动配置等
九、支持广播、组播和单播
-
单播(Unicast):一对一通信
-
广播(Broadcast):一对全体(限于本地网络,IPv4 支持,IPv6 不支持)
-
组播(Multicast):一堆一组(特定组成员),提高效率。