Linux 系统中 PPP 协议的深入解析与配置指南
1. PPP 协议概述
PPP(Point - to - Point Protocol)与 SLIP 类似,用于通过串行连接发送数据报,但它解决了 SLIP 的一些不足。PPP 能承载多种协议,不仅限于 IP 协议,还能在链路上进行错误检测。此外,它允许通信双方在启动时协商选项,如 IP 地址和最大数据报大小,并提供客户端授权功能。
PPP 基于高级数据链路控制(HDLC)协议,该协议定义了 PPP 帧的边界并提供 16 位校验和。与 SLIP 封装相比,PPP 帧能容纳除 IP 之外的其他协议的数据包,如 Novell 的 IPX 或 Appletalk,这通过在基本 HDLC 帧中添加协议字段来实现。
在 HDLC 之上,链路控制协议(LCP)用于协商数据链路的相关选项,例如最大接收单元(MRU),它规定了链路一方同意接收的最大数据报大小。客户端授权是 PPP 链路配置阶段的重要步骤,对于拨号线路尤为必要,以防止入侵者。PPP 有两种授权协议:密码认证协议(PAP)和挑战握手认证协议(CHAP)。
每个通过数据链路路由的网络协议(如 IP 和 AppleTalk)都使用相应的网络控制协议(NCP)进行动态配置。发送 IP 数据报时,双方需使用互联网协议控制协议(IPCP)协商各自使用的 IP 地址。此外,PPP 还支持 Van Jacobson 头部压缩技术,可将 TCP 数据包的头部缩小至仅三字节。
2. Linux 系统中的 PPP 功能实现
在 Linux 系统中,PPP 功能分为两部分:内核组件处理底层协议(如 HDLC、IPCP、IPXCP 等),用