文章目录
- PPP 帧
- PPP帧的格式
- PPP帧的透明传输
- 面向字节的异步链路
- 面向比特的同步链路
- PPP帧的差错检测
- PPP 的工作状态
点对点协议(Point-to-Point Protocol,PPP
)是目前使用最广泛的点对点数据链路层协议,用于在两个节点之间进行数据传输。它通常用于建立在串行线路上的点对点连接,例如通过电话线或光纤的连接。
PPP
将上层交付下来的协议数据单元 PDU
封装成帧,为支持不同的网络层协议,PPP
协议包含了一套网络控制协议 NCP,链路控制协议 LCP,用于建立、配置以及测试数据链路的连接。PPP
协议能够在多种类型的点对点链路上运行,如面向字节的异步链路,面向比特的同步链路。
PPP 帧
PPP帧的格式
PPP
帧是在 PPP
点对点协议中用于传输数据的基本单元。它由帧首部、数据载荷和帧尾部三个部分组成:
-
标志(Flag)字段:PPP帧的定界符,取值为0x7E
-
地址(Address)字段:取值为0xFF
-
控制(Control)字段:取值为0x03
-
协议(Protocol)字段:其值用来指明帧的数据载荷应向上交付给哪个协议处理。
- P 取值为 0x0021 时,数据载荷封装的是 IP数据报
- P 取值为 0XC021 时,数据载荷封装的是 LCP分组
- P 取值为 0X8021 时,数据载荷封装的是 NCP分组
-
帧检验序列(Frame Check Sequence,FCS)字段:其值是使用[[数据链路层概述#循环冗余校验|循环冗余校验 CRC]] 计算出的检错码。
PPP帧的透明传输
在 PPP
帧的首部和尾部,均包含一个帧定界符,若帧的数据载荷中恰好包含有帧定界符,即 0x7E
或 0111 1110
。
面向字节的异步链路
当 PPP
协议使用的是面向字节的异步链路,使用字节填充来实现透明传输,将帧定界符看作取值为0x7E的一个字符:
发送方:
-
将数据载荷中出现的每一个
0x7E
减去0x20
(相当于异或0x20
),然后在其前面插入转义字符 0x7D -
若数据载荷中原来就含有
0x7D
,则把每一个0x7D
减去0x20
,然后在其前面插入转义字符 0x7D。 -
将数据载荷中出现的每一个 ASCII 码控制字符(即数值小于0x20的字符)加上
0x20
(相当于异或0x20
,将其转换成非控制字符),然后在其前面插入转义字符 0x7D。
接收方:进行与发送方相反的变换,就可以正确地恢复出未经过字节填充的原始数据载荷。
面向比特的同步链路
面向比特的同步链路使用零比特填充来实现透明传输,将帧定界符看作取值为0111 1110 的 8 比特定位串:
发送方:对帧的数据载荷进行扫描(一般由硬件完成),每出现 5 个连续的比特1,则在其后填充一个比特0。
接收方:对帧的数据载荷进行扫描,每出现 5 个连续的比特1时,就把其后的一个比特0删除。
PPP帧的差错检测
PPP
帧尾部的帧检验序列 FCS
字段,其值是使用[[数据链路层概述 循环冗余校验 CRC 计算出的检错码,CRC
采用的生成多项式为 CRC - CCITT = X 16 + X 12 + X 5 + 1 X^{16}+X^{12}+X^5+1 X16+X12+X5+1
接收方每收到一个 PPP
帧,就进行 CRC
检验:若 CRC
检验正确,就收下这个帧;否则,就丢弃这个帧。使用 PPP
的数据链路层,向上提供的是不可靠数据传输服务。
PPP 的工作状态
以用户主机拨号接入因特网服务提供者 ISP
的拨号服务器的过程为例:PPP
链路的开始和结束状态都是 静止 状态
PPP
的工作状态通常可以分为三个阶段:链路建立、网络层协议配置和数据传输。以下是 PPP
的工作状态:
-
链路建立(Link Establishment):
-
在这个阶段,当检测到载波并建立物理层连接之后,
PPP
使用链路控制协议(LCP)来建立、配置和测试数据链路连接。 -
在通信的起始阶段,发送方发送
LCP
配置请求,接收方收到请求后发送LCP
配置应答,进行链路参数的协商和确认。若协商成功,进入认证(鉴别)过程;若协商失败,回到静止状态。 -
这个阶段还包括认证过程,如果配置了认证机制的话,发送方可能会要求接收方进行认证。
-
-
网络层协议配置(Network Layer Protocol Configuration):
-
一旦链路建立完成,
PPP
使用网络控制协议(NCP)来协商和配置网络层协议的选项。 -
例如,对于
IP
协议,发送方发送IPCP
配置请求,接收方收到请求后发送IPCP
配置应答,协商 IP 地址、DNS 服务器等配置信息。
-
-
数据传输(Data Transmission):
-
在链路建立和网络层协议配置完成后,
PPP
进入数据传输阶段。 -
在这个阶段,
PPP
将封装好的网络层数据帧通过已建立的链路进行传输。 -
发送方将数据封装成
PPP
帧并发送,接收方接收到帧后进行解封装并将数据交给上层网络协议进行处理。
-
在数据传输阶段,PPP
还会持续进行链路的检测和维护,以确保链路的稳定性和可靠性。如果链路出现故障或中断,PPP
将会尝试重新建立连接或进行相应的错误处理。