在 Linux 上,PPP 功能分为两个部分:一个内核组件,负责处理底层协议(HDLC、IPCP、IPXCP 等),以及用户空间的 pppd 守护进程,负责处理各种更高级别的协议,例如 PAP 和 CHAP。当前 Linux 的 PPP 软件版本包含 PPP 守护进程 pppd 和一个名为 chat 的程序,该程序可以自动化拨号到远程系统。
PPP 内核驱动程序由 Michael Callahan 编写,并由 Paul Mackerras 重新制作。pppd 源自 Drew Perkins 和其他人为 Sun 和 386BSD 机器编写的免费 PPP 实现[1],并由 Paul Mackerras 维护。它由 Al Longyear 移植到 Linux。chat 由 Karl Fox 编写。[2]
与 SLIP 类似,PPP 是通过特殊的线路规程实现的。要将串行线路用作 PPP 链接,您首先像往常一样通过调制解调器建立连接,然后将线路转换为 PPP 模式。在这种模式下,所有传入的数据都传递给 PPP 驱动程序,该程序检查传入的 HDLC 帧的有效性(每个 HDLC 帧都带有 16 位校验和),并解包和分派它们。目前,PPP 能够传输 IP 协议(可选择使用 Van Jacobson 标头压缩)和 IPX 协议。
pppd 辅助内核驱动程序,执行在实际网络流量可以通过链接发送之前必要的初始化和身份验证阶段。可以使用许多选项来微调 pppd 的行为。由于 PPP 相当复杂,因此不可能在一个章节中解释所有这些选项。因此,本书无法涵盖 pppd 的所有方面,而只能为您提供入门介绍。有关更多信息,请查阅 Using & Managing PPP 或 pppd 手册页,以及README 在 pppd 源代码发行版中的 s,这应该有助于您解决本章未能讨论的大多数问题。PPP-HOWTO 也可能有用。
在配置 PPP 时,您能获得的最大帮助可能来自同一 Linux 发行版的其他用户。PPP 配置问题非常常见,因此请尝试您本地的用户组邮件列表或 IRC Linux 频道。如果您的问题在阅读文档后仍然存在,您可以尝试 comp.protocols.ppp 新闻组。在这里您可以找到大多数参与 pppd 开发的人员。
[1] | 如果您对 PPP 有任何一般性问题,请在 vger.rutgers.edu 的 Linux-net 邮件列表中询问。 |
[2] | 可以通过 karl@morningstar.com 联系 Karl。 |