【概述】
点对点协议(Point-to-Point Protocol,PPP),是广域网的数据链路层的链路控制协议,直接应用在两个直接连接的结点的链路上,既能在异步线路上传输,也能在同步线路上使用,是面向字节的串行链路协议
早期数据报的传送是采用串行线路网际协议(Serial Line Internet Protocol,SLIP),但由于 SLIP 主要用来完成数据报的传送,没有寻址、数据校验功能,只能传送 IP 分组,因此若上层没有采用 IP 协议则无法传输数据
为改进 SLIP 的缺点,于是制定了点对点协议
PPP 提供差错检测,但只是使用硬件来进行 CRC 检验,没有序号与确认机制,因此只能保证无差错接收,是不可靠的传输协议
此外,PPP 只支持全双工链路,其两端可以运行不同的网络层协议,但仍然可使用同一个 PPP 进行通信
【组成】
PPP 有三个组成部分:
- 链路控制协议 LCP:扩展链路控制协议,用于建立、配置、测试、管理数据链路
- 网络控制协议 NCP:PPP 允许同时采用多种网络层协议,每个不同的网络层协议用一个相应 NCP 来配置,为网络层协议建立和配置逻辑连接
- 将 IP 数据报封装到串行链路的方法:IP 数据报在 PPP 帧中为其信息部分,该部分长度受最大传送单元 MTU 限制
【PPP 帧】
PPP 是面向字符的,因此所有的 PPP 帧的长度均是整数个字节,其格式如下图所示
默认情况下,PPP 帧采用字符填充法进行首尾定界,因此,其首部的第一个标志字段 $F$ 为帧起始标志,固定为 0x7E
,尾部的最后一个标志字段 $F$ 为帧终止标志,同样固定为 0x7E
首部的第二个字段 $A$ 为地址字段,规定为 0xFF
,第三个字段 $C$ 为控制字段,规定为 0x03
,这两个字段的内容始终是固定不变的
首部的第四个字段为协议字段,占两个字节,用于说明信息段中运载的是何种类型的分组,以比特 0
开始的是 IP、IPX、AppleTalk 等网络层协议,以比特 1
开始的被用来协商其他协议,包括 LCP 以及每个所支持的网络层协议的一个不同的 NCP
信息部分的长度是可变的,其最大长度不超过 $1500B$,同时由于采取了字符填充法,为了透明传输,当其中出现 0x7E
时,再其前要填充控制转移字符 0x7D
尾部的第一个字段为帧检验序列 FCS,即 CRC 中的冗余码,检验部分包括地址字段 A、控制字段 C、协议字段、信息字段
需要说明的是,PPP 默认使用在异步线路上,此时采用字符填充法进行首尾定界;若 PPP 用在同步线路上,则采用零比特填充法进行首尾定界
【PPP 链路状态】
当线路处于静止状态时,不存在物理层连接
当线路检测到有载波信号时,建立物理连接,线路变为建立状态,此时 LCP 开始选项商定,商定成功后就进入身份验证状态
在双方身份验证通过后,进入网络状态,此时,使用 NCP 配置网络层,在配置完成后,进入打开状态,即可进行数据传输
在数据传输完成后,线路转为终止状态,等到载波停止,则会回归到静止状态
下图给出了 PPP 链路建立、使用、撤销所经历的状态图