就像 SLIP 一样,PPP 是一种通过串行连接发送数据报的协议,但弥补了前者的一些不足。它允许通信双方在启动时协商诸如 IP 地址和最大数据报大小等选项,并提供客户端授权。对于这些功能中的每一项,PPP 都有一个单独的协议。下面,我们将简要介绍 PPP 的这些基本组成部分。这个讨论远非完整;如果您想了解更多关于 PPP 的信息,我们建议您阅读 RFC-1548 中的规范,以及其他十几个相关的 RFC。
在 PPP 的最底层是高级数据链路控制协议,缩写为 HDLC, 它定义了各个 PPP 帧周围的边界,并提供 16 位校验和。与更原始的 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 协商。