Skip to content

会话层协议

IPsec(Internet Protocol Security,互联网协议安全)是一套用于确保 IP 通信安全的协议和标准。它通过加密和认证机制来提供机密性、数据完整性和数据源认证。IPsec 可用于保护 IP 层上的所有应用协议,并且能够在 IPv4 和 IPv6 网络中使用。

  1. 数据加密:确保数据在传输过程中不被未经授权的第三方读取。
  2. 数据完整性:确保数据在传输过程中未被篡改。
  3. 身份认证:验证通信双方的身份,确保数据来自可信来源。
  4. 防重放攻击:防止攻击者截取并重放数据包。

IPsec 有两种主要的工作模式:

  1. 传输模式(Transport Mode)

    • 仅加密 IP 数据包的有效载荷部分,IP 头部保持不变。
    • 常用于端到端通信,例如客户端与服务器之间的通信。
  2. 隧道模式(Tunnel Mode)

    • 加密整个 IP 数据包,并在其外部添加一个新的 IP 头部。
    • 常用于网关到网关的通信,例如 VPN(虚拟专用网)。

IPsec 由以下三个主要协议组件组成:

  1. 认证头(Authentication Header,AH)

    • 提供数据完整性和源身份验证,但不提供加密。
    • 确保数据包在传输过程中未被篡改,并验证数据包的发送者。
  2. 封装安全有效负载(Encapsulating Security Payload,ESP)

    • 提供数据加密、数据完整性和源身份验证。
    • 确保数据的机密性,并验证数据的完整性和发送者身份。
  3. 互联网密钥交换(Internet Key Exchange,IKE)

    • 用于协商和建立 IPsec 安全关联(SA)。
    • 动态生成加密和认证所需的密钥。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Payload Len | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Parameters Index (SPI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number Field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Authentication Data (variable) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Next Header:8 位,表示下一个头部的类型。
  • Payload Len:8 位,表示 AH 头部的长度。
  • Reserved:16 位,保留字段。
  • Security Parameters Index (SPI):32 位,标识安全关联。
  • Sequence Number:32 位,防止重放攻击。
  • Authentication Data:可变长度,包含认证数据。
封装安全有效负载(ESP)报文格式
Section titled “封装安全有效负载(ESP)报文格式”
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Parameters Index (SPI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number Field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Data (variable) |
~ ~
| |
+ Padding (0-255 bytes) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pad Length | Next Header | Integrity Check Value (ICV) (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • SPI:32 位,标识安全关联。
  • Sequence Number:32 位,防止重放攻击。
  • Payload Data:可变长度,包含加密后的数据。
  • Padding:0-255 字节,用于对齐数据。
  • Pad Length:8 位,表示填充的长度。
  • Next Header:8 位,表示下一个头部的类型。
  • Integrity Check Value (ICV):可变长度,包含数据完整性检查值。
  1. 建立安全关联(SA)

    使用 IKE 协议协商并建立安全关联,包括加密算法、认证算法和密钥。

  2. 数据加密和认证

    使用 ESP 或 AH 协议对数据进行加密和认证,确保数据的机密性、完整性和来源可信。

  3. 数据传输

    加密和认证后的数据通过 IP 网络进行传输,接收方使用相同的密钥和算法进行解密和认证。

  4. 安全关联维护和删除

    安全关联在使用一段时间后会被删除,新的安全关联需要重新协商。

假设一个使用 IPsec 保护的 VPN 连接,客户端和服务器之间的通信如下:

  1. 建立安全关联(SA)

    客户端和服务器使用 IKE 协议协商安全关联,生成共享密钥和选择加密、认证算法。

  2. 数据加密和传输

    客户端发送加密和认证后的数据包到服务器:

    Client -> Server: ESP Header + Encrypted Payload
  3. 数据解密和验证

    服务器接收到数据包后,使用共享密钥进行解密和认证,确保数据完整性和来源可信。

  1. 高安全性:提供数据加密、认证和完整性检查,确保数据安全。
  2. 灵活性:支持多种加密和认证算法,适应不同的安全需求。
  3. 广泛应用:可用于 VPN、远程访问、安全通信等多种场景。
  1. 配置复杂:需要配置密钥、算法和安全策略,增加管理复杂性。
  2. 性能开销:加密和认证过程增加了 CPU 和内存负担,影响传输性能。
  3. 兼容性问题:不同厂商的 IPsec 实现可能存在兼容性问题。

IPsec(Internet Protocol Security)是一套用于确保 IP 通信安全的协议和标准,通过加密和认证机制提供机密性、数据完整性和数据源认证。IPsec 支持传输模式和隧道模式,主要包括认证头(AH)和封装安全有效负载(ESP)两个协议组件。尽管配置复杂且性能开销较大,但 IPsec 在 VPN 和安全通信中广泛应用,提供了高水平的安全保障。理解 IPsec 的工作原理和应用场景,有助于在网络安全中有效利用这一协议。

PPTP(Point-to-Point Tunneling Protocol,点对点隧道协议)是一种用于承载 PPP 会话的隧道协议,可用于远程访问和企业 VPN。PPTP 本身主要定义控制连接和 GRE 封装,不能单独等同于安全 VPN;加密和认证依赖 PPP/MPPE 等额外机制,现代高安全场景通常不再优先选择 PPTP。

  1. 隧道创建:通过公共网络建立点对点的虚拟隧道,连接远程用户与企业网络。
  2. 数据加密:通过 PPP 协议的加密机制(如 MPPE)确保数据传输的机密性。
  3. 用户认证:支持多种认证协议(如 PAP、CHAP、MS-CHAP)确保用户身份的合法性。
  4. 数据封装:将 PPP 帧封装在 IP 数据包中,通过互联网进行传输。

PPTP 使用控制通道和数据通道两种通道来实现 VPN 功能:

  1. 控制通道:使用 TCP 连接,主要用于控制消息的传输,包括隧道的建立、维护和终止。
  2. 数据通道:使用 GRE(通用路由封装)协议封装 PPP 帧,进行数据的传输。
  1. 建立 TCP 控制连接

    • 客户端与 PPTP 服务器建立 TCP 连接(默认端口 1723),用于传输控制消息。
  2. PPTP 隧道创建

    • 客户端发送 PPTP 启动请求,服务器响应,创建 PPTP 隧道。
  3. PPP 会话建立

    • 在 PPTP 隧道内,客户端和服务器进行 PPP 协商,包括认证和加密。
  4. 数据传输

    • 使用 GRE 协议封装 PPP 帧,通过 PPTP 隧道传输数据。
  5. 终止连接

    • 客户端或服务器发送断开请求,终止 PPP 会话和 PPTP 隧道。

控制消息通过 TCP 连接传输,包含多个字段用于控制隧道的建立和维护。以下是 PPTP 控制消息的基本格式:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Magic Cookie | Control Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message-Specific Fields |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Length:16 位,消息长度。
  • Message Type:16 位,消息类型(1 表示控制消息)。
  • Magic Cookie:32 位,固定值 0x1A2B3C4D,用于验证消息。
  • Control Message Type:16 位,控制消息类型(如启动请求、启动应答等)。
  • Message-Specific Fields:可变长度,根据不同的控制消息类型包含不同的字段。

数据消息使用 GRE 协议封装 PPP 帧,通过 PPTP 隧道进行传输。以下是 GRE 封装的基本格式:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|R|K|S|s|Recur| Flags | Ver | Protocol Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum (optional) | Reserved (0) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Payload Data |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • C:1 位,校验和存在标志。
  • R:1 位,路由存在标志。
  • K:1 位,密钥存在标志。
  • S:1 位,序列号存在标志。
  • Flags:5 位,标志字段。
  • Ver:3 位,版本号。
  • Protocol Type:16 位,协议类型(PPP 为 0x880B)。
  • Checksum:16 位,校验和(可选)。
  • Key:32 位,密钥(可选)。
  • Sequence Number:32 位,序列号(可选)。
  • Acknowledgment Number:32 位,确认号(可选)。
  • Payload Data:可变长度,实际传输的数据(PPP 帧)。
  1. 易于配置:PPTP 协议简单,配置方便,特别是在 Windows 平台上。
  2. 兼容性好:广泛支持,许多操作系统和设备都支持 PPTP。
  3. 效率高:由于其简单的结构,PPTP 具有较高的传输效率。
  1. 安全性较低:PPTP 的加密机制较弱,容易受到攻击,不推荐用于需要高安全性的应用。
  2. 不适合复杂网络环境:在 NAT 和防火墙环境下,PPTP 的 GRE 协议可能会遇到传输问题。
  3. 过时:随着更安全的 VPN 协议(如 L2TP/IPsec 和 OpenVPN)的出现,PPTP 的使用逐渐减少。

PPTP(Point-to-Point Tunneling Protocol)是一种用于承载 PPP 的隧道协议。它具有易于配置和广泛兼容的历史优势,但不应被描述为现代安全 VPN 的默认选择;在需要高安全性的应用中,应优先选择当前仍被维护和审计的 VPN 方案。

  1. RFC 4301: Security Architecture for the internet Protocol(访问日期:2026-05-31)
  2. RFC 4303: IP Encapsulating Security Payload (ESP)(访问日期:2026-05-31)
  3. RFC 2637: Point-to-Point Tunneling Protocol (PPTP)(访问日期:2026-05-31)
  4. RFC 3078: Microsoft Point-To-Point Encryption (MPPE) Protocol(访问日期:2026-05-31)