在 上,PPP 功能被分为两个部分:一个位于内核的底层 HDLC 驱动程序,以及处理各种控制协议的用户空间 pppd 守护进程。 当前的 PPP 版本是 linux-ppp-1.0.0,其中包含内核 PPP 模块、pppd 以及一个名为 chat 的程序,用于拨号连接到远程系统。
PPP 内核驱动程序由 Michael Callahan 编写。pppd 衍生自 Sun 和 386BSD 机器的免费 PPP 实现,由 Drew Perkins 等人编写,并由 Paul Mackerras 维护。 它由 Al Longyear 移植到 。
正如 SLIP 一样,PPP 是通过特殊的线路规程来实现的。 要将某个串行线路用作 PPP 链路,您首先像往常一样通过调制解调器建立连接,然后将线路转换为 PPP 模式。 在此模式下,所有传入数据都将传递给 PPP 驱动程序,该驱动程序检查传入的 HDLC 帧的有效性(每个 HDLC 帧都带有 16 位校验和),并解包和分发它们。 目前,它能够处理 IP 数据报,可以选择使用 Van-Jacobson 头部压缩。 一旦 支持 IPX,PPP 驱动程序也将扩展以处理 IPX 数据包。
内核驱动程序由 pppd(PPP 守护进程)辅助,它执行在实际网络流量可以通过链路发送之前所需的整个初始化和身份验证阶段。 pppd 的行为可以使用许多选项进行微调。 由于 PPP 相当复杂,因此不可能在一章中解释所有选项。 因此,本书无法涵盖 pppd 的所有方面,而只能给您一个介绍。 有关更多信息,请参阅 pppd 源代码发布包中的手册页和 README 文件,这些文件应有助于您解决本章未能讨论的大多数问题。 如果您在阅读所有文档后问题仍然存在,则应转向新闻组 comp.protocols.ppp 寻求帮助,在那里您可以联系到大多数参与 pppd 开发的人员。