3.1. ESP Header Location (ESP 头部位置)
3.1. ESP Header Location (ESP 头部位置)
ESP 可以通过两种方式使用: 传输模式或隧道模式。
3.1.1. Transport Mode Processing (传输模式处理)
在传输模式下, ESP 被插入到 IP 头部之后和下一层协议 (例如 TCP, UDP, ICMP 等) 之前。在 IPv4 的上下文中, 这意味着将 ESP 放置在 IP 头部 (及其包含的任何选项) 之后, 但在下一层协议之前。(如果 AH 也应用于数据包, 它将应用于 ESP 头部, Payload, ESP 尾部和 ICV (如果存在)。) (请注意, "传输" 模式这个术语不应被误解为将其使用限制在 TCP 和 UDP。) 以下图表以 "前后对比" 的方式说明了典型 IPv4 数据包的 ESP 传输模式定位。(本节中的这个图表和后续图表都显示了 ICV 字段, 其存在与否取决于安全服务以及所选择的算法/模式。)
应用 ESP 之前
----------------------------
IPv4 |orig IP hdr | | |
|(any options)| TCP | Data |
----------------------------
应用 ESP 之后
-------------------------------------------------
IPv4 |orig IP hdr | ESP | | | ESP | ESP|
|(any options)| Hdr | TCP | Data | Trailer | ICV|
-------------------------------------------------
|<---- encryption ---->|
|<-------- integrity ------->|
在 IPv6 上下文中, ESP 被视为端到端有效载荷, 因此应该出现在逐跳, 路由和分片扩展头部之后。目的地选项扩展头部可以出现在 ESP 头部之前, 之后, 或者在 ESP 头部之前和之后都出现, 这取决于所需的语义。然而, 由于 ESP 仅保护 ESP 头部之后的字段, 通常将目的地选项头部放置在 ESP 头部之后是更可取的。以下图表说明了典型 IPv6 数据包的 ESP 传输模式定位。
应用 ESP 之前
---------------------------------------
IPv6 | | ext hdrs | | |
| orig IP hdr |if present| TCP | Data |
---------------------------------------
应用 ESP 之后
---------------------------------------------------------
IPv6 | orig |hop-by-hop,dest*,| |dest| | | ESP | ESP|
|IP hdr|routing,fragment.|ESP|opt*|TCP|Data|Trailer| ICV|
---------------------------------------------------------
|<--- encryption ---->|
|<------ integrity ------>|
* = 如果存在, 可以在 ESP 之前, ESP 之后, 或两者都有
请注意, 在传输模式下, 对于安全架构文档中定义的 "bump-in-the-stack" 或 "bump-in-the-wire" 实现, 入站和出站 IP 分片可能需要 IPsec 实现执行额外的 IP 重组/分片, 以便既符合本规范又提供透明的 IPsec 支持。当使用多个接口时, 在这些实现中执行此类操作需要特别小心。
3.1.2. Tunnel Mode Processing (隧道模式处理)
在隧道模式下, "内部" IP 头部携带最终的 (IP) 源地址和目的地址, 而 "外部" IP 头部包含 IPsec "对等方" 的地址, 例如安全网关的地址。允许混合的内部和外部 IP 版本, 即 IPv6 over IPv4 和 IPv4 over IPv6。在隧道模式下, ESP 保护整个内部 IP 数据包, 包括整个内部 IP 头部。隧道模式下 ESP 相对于外部 IP 头部的位置与传输模式下 ESP 的位置相同。以下图表说明了典型 IPv4 和 IPv6 数据包的 ESP 隧道模式定位。
应用 ESP 之前
----------------------------
IPv4 |orig IP hdr | | |
|(any options)| TCP | Data |
----------------------------
应用 ESP 之后
-----------------------------------------------------------
IPv4 | new IP hdr* | | orig IP hdr* | | | ESP | ESP|
|(any options)| ESP | (any options) |TCP|Data|Trailer| ICV|
-----------------------------------------------------------
|<--------- encryption --------->|
|<------------- integrity ------------>|
应用 ESP 之前
---------------------------------------
IPv6 | | ext hdrs | | |
| orig IP hdr |if present| TCP | Data |
---------------------------------------
应用 ESP 之后
------------------------------------------------------------
IPv6 | new* |new ext | | orig*|orig ext | | | ESP | ESP|
|IP hdr| hdrs* |ESP|IP hdr| hdrs * |TCP|Data|Trailer| ICV|
------------------------------------------------------------
|<--------- encryption ---------->|
|<------------ integrity ------------>|
* = 如果存在, 外部 IP 头部/扩展的构造和内部 IP 头部/扩展的修改
将在安全架构文档中讨论。