第 8 章. 点对点协议

目录
8.1. Linux 上的 PPP
8.2. 运行 pppd
8.3. 使用选项文件
8.4. 使用 chat 自动化拨号
8.5. IP 配置选项
8.5.1. 选择 IP 地址
8.5.2. 通过 PPP 链路路由
8.6. 链路控制选项
8.7. 一般安全注意事项
8.8. 使用 PPP 进行身份验证
8.8.1. PAP 与 CHAP 的比较
8.8.2. CHAP 密钥文件
8.8.3. PAP 密钥文件
8.9. 调试您的 PPP 设置
8.10. 更高级的 PPP 配置
8.10.1. PPP 服务器
8.10.2. 按需拨号
8.10.3. 持久拨号

像 SLIP 一样,PPP 是一种用于通过串行连接发送数据报的协议;然而,它解决了一些 SLIP 的缺陷。首先,它可以承载大量的协议,因此不限于 IP 协议。它在链路本身上提供错误检测,而 SLIP 接受并转发损坏的数据报,只要损坏没有发生在头部。同样重要的是,它允许通信双方协商选项,例如启动时的 IP 地址和最大数据报大小,并提供客户端授权。这种内置的协商允许可靠地自动化连接建立,而身份验证消除了 SLIP 所需的笨拙的用户登录帐户的需要。对于这些功能中的每一个,PPP 都有一个单独的协议。在本章中,我们将简要介绍 PPP 的这些基本构建块。对 PPP 的讨论远非完整;如果您想了解更多关于 PPP 的信息,我们建议您阅读其 RFC 规范以及十几个左右的配套 RFC。[1] 还有一本关于 使用和管理 PPP 的综合 O'Reilly 书籍,作者是 Andrew Sun。

在 PPP 的最底层是 高级数据链路控制 (HDLC) 协议,它定义了各个 PPP 帧周围的边界,并提供 16 位校验和。[2] 与更原始的 SLIP 封装相反,PPP 帧能够容纳来自 IP 以外协议的数据包,例如 Novell 的 IPX 或 Appletalk。PPP 通过在基本的 HDLC 帧中添加一个协议字段来实现这一点,该字段标识帧携带的数据包类型。

链路控制协议 (LCP) 在 HDLC 之上使用,用于协商与数据链路相关的选项。例如,最大接收单元 (MRU) 指出链路的一侧同意接收的最大数据报大小。

PPP 链路配置阶段的一个重要步骤是客户端授权。虽然这不是强制性的,但对于拨号线路来说,这确实是防止入侵者的必要措施。通常,被叫主机(服务器)要求客户端通过证明它知道一些密钥来授权自己。如果呼叫者未能提供正确的密钥,则连接将被终止。使用 PPP,授权是双向的;呼叫者也可以要求服务器验证自身。这些身份验证程序彼此完全独立。有两种用于不同类型授权的协议,我们将在本章中进一步讨论:密码认证协议 (PAP) 和 挑战握手认证协议 (CHAP)。

跨数据链路路由的每个网络协议(如 IP 和 AppleTalk)都使用相应的 网络控制协议 (NCP) 进行动态配置。为了通过链路发送 IP 数据报,运行 PPP 的双方必须首先协商它们各自使用的 IP 地址。用于此协商的控制协议是 互联网协议控制协议 (IPCP)。

除了通过链路发送标准 IP 数据报外,PPP 还支持 IP 数据报的 Van Jacobson 头部压缩。这种技术将 TCP 数据包的头部缩小到只有三个字节。它也用于 CSLIP,更通俗地称为 VJ 头部压缩。压缩的使用也可以在启动时通过 IPCP 进行协商。

注释

[1]

相关的 RFC 列在本手册末尾的参考文献中。

[2]

事实上,HDLC 是国际标准组织 (ISO) 设计的一种更通用的协议,也是 X.25 规范的重要组成部分。