# IPv4 数据报选项字段

在 \[RFC0791] 中，介绍了 IPv4 数据报的大多数选项，但现在很多选项都不再实用，所以在 IPv6 中已经将大部分选项删除，更改放在 IPv6 首部之后的扩展首部中。因为 `IHL` 字段的要求， IPv4 首部始终是 `32` 位的倍数，所以在有必要的情况下，需要在末尾添加数值 `0` 作为填充字节。选项由一个 `8` 位的类型字段标识。 `8` 位的类型字段被细分为3个子字段：**复制(1位)**、**类别(2位)**&#x548C;**编号(5位)**。选项 `0` 和 `1` 的长度是 `1` 字节，多数的其他选项的长度可变。可变选项包括 `1` 字节的类型标识符、 `1` 字节的长度以及选项自身。特别指出的是，第 `1` (高序)位表示如果相关数据报被分片，该选项是否被复制到分片中。后面 `2` 位表示该选项的类别。目前，除了“时间戳”和“跟踪”使用类别 `2` (调试和测量)外，表中的所有选项使用类别 `0` (控制)。类别 `1` 和 `3` 被保留。

下表给出了保留的 IPv4 选项。

| 名称      | 选项编号          | 类型字段中的编号(值)       | 长度 | 描述                                                                       | 参考文献                            | 注释       |
| ------- | ------------- | ----------------- | -- | ------------------------------------------------------------------------ | ------------------------------- | -------- |
| 列表结尾    | 0             | 0                 | 1  | 表示没有更多选项                                                                 | \[RFC0791]                      | 如果需要     |
| 没有操作    | 1             | 1                 | 1  | 表示没有操作执行(用于填充)                                                           | \[RFC0791]                      | 如果需要     |
| 源路由     | <p>3<br>9</p> | <p>131<br>137</p> | 可变 | 发送方列出分组转发时遍历的路由器“航点”。松散意味着其他路由器可以包含在航点(3,131)中。严格意味着(9,137)中的所有航点都要接顺序遍历 | \[RFC0791]                      | 很少,经常被过滤 |
| 安全和处理标签 | <p>2<br>5</p> | <p>130<br>133</p> | 11 | 在美国军事环境下如何为IP数据报指定安全标签和处理限制                                              | \[RFC1108]                      | 历史的      |
| 记录路由    | 7             | 7                 | 可变 | 在分组的头部中记录经过的路由器                                                          | \[RFC0791]                      | 很少       |
| 时间戳     | 4             | 68                | 可变 | 在分组的源和目的地记录日期和时间                                                         | \[RFC0791]                      | 很少       |
| 流ID     | 8             | 136               | 4  | 携带16位的SATNET流标识符                                                         | \[RFC0791]                      | 历史的      |
| EIP     | 17            | 145               | 可变 | 扩展Internet协议(20世纪90年代早期的一个实验)                                            | \[RFC1385]                      | 历史的      |
| 跟踪      | 18            | 82                | 可变 | 增加一个路由跟踪选项和ICMP报文(20世纪90年代早期的一个实验)                                       | \[RFC1393]                      | 历史的      |
| 路由器警告   | 20            | 148               | 4  | 表示一个路由器需要解释数据报的内容                                                        | <p>\[RFC2113]<br>\[RFC5350]</p> | 偶然       |
| 快速启动    | 25            | 25                | 8  | 表示启动快速传输协议(实验性的)                                                         | \[RFC4782]                      | 很少       |
