PPP 协议
发布日期:2023-11-10 来源: 浏览次数: 作者:NIC


PPP协议(Point to Point Protocol)是点对点访问应用最多的协议。PPP协议其实是一个协议族,包含多个协议(LCP,NCP)

PPP协议的组成

PPP协议有三个组成部分:

(1)一种将封装了多种协议的数据报传输到串行链路的方法。

(2)链路控制协议(Link Control Protocol, LCP)LCP协议是PPP协议的一部分。它用于建立、配置、测试数据链路的连接。

(3)一套网络控制协议(Network Control Protocol, NCP)NCPs是一系列协议,用于建立和配置不同的网络层协议。每个NCP协议都支持不同的网络层协议,比如IP协议,OSI的网络层,苹果的Appple Talk等。

PPP协议的帧格式

1-PPP 协议.jpg

l帧开始符、帧结束符:0x7E

lAddress字段:图中的值是0xFF,形同虚设,点到点信道不需要源MAC、目标MAC

lControl字段:图中的值是0x03,目前没有什么作用

lProtocol字段:内部用到的协议类型

标志字段

标志(flag):首部的第一个字段和尾部的最后一个字段都是标志字段F(flag),规定的值用十六进制表示为:0x7E = 01111110。标志字段是PPP帧的定界符。连续两帧之间只有一个标志字段。如果数据字段碰巧出现了标志字段的值,则需要在数据字段进行字节填充,来消除这种歧义。

PPP协议可以应用在异步传输或者同步传输中,异步传输以字节为单位传输,同步传输以比特为单位传输。所以填充方式也分为字节填充和比特填充。

字节填充:

2-PPP 协议.jpg

规则如下:

当信息字段出现标志字段的0x7E这个字节时,PPP协议会把0x7E改为0x5E,并且在前面加上规定好的转义字符0x7D,也就是把0x7E变成0x7D5E

如果转移字符0x7D本身出现在帧中,就用2字节序列0x7D5D替换,把0x7D变成0x7D5E。也就是先把0x7D变成0x5D,再在前面加上一个0x7D

如果信息字段出现ASCII码的控制字符(即数值小于0x20 =小于十进制32的字符),则将该字节加上0x20,比如0x03(ASCII码的传输结束控制字符ETX)就变成0x23。然后再在前面加上转义字符0x7D。拿0x03举例,就变成字符序列0x7D23

当接收点接收到填充后的帧后,就采取相反的变换,恢复填充前的数据信息。

比特填充

比特填充:PPP协议在用在同步光纤网络等链路时,会使用同步传输(将一连串的比特连续传送,而不是按字节为单位传送)。这时候PPP协议采用比特填充。

PPP协议比特填充的规则如下图所示:

3-PPP 协议.jpg

规则如下:

发送端会扫描整个数据字段(用硬件实现),只要发现5个连续的1,就立即填入一个0。这就保证数据字段不会出现6个连续的1,也就不会出现和标志字段0111 1110相同的比特组合。

接收方在接受到帧之后,先找到首部的标志字段,然后也用硬件对之后的比特流进行扫描,每当发现5个连续1时,就把51之后的0删除,也就逆向操作还原了数据字段。等再次遇到0111 1110的标志字段后,就说明整个帧结束了。

PPP协议的工作状态

链路的连接是需要分阶段完成的,包括:闲置、建立、鉴别、联网、打开、终止再到再一次闲置。

在每个阶段PPP协议数据字段的协议都不同,理解链路连接的各个阶段才能完全理解PPP的工作模式。

1.闲置:此时链路没有被使用。发送方和接收方之间并不存在物理层和链路层的连接(比如个人用户刚开始还没有连接上本地ISP)

2.建立:如果双方想进行链路的连接,首选需要进入建立阶段。此阶段LCP协议会起作用(也就是PPP帧会封装LCP协议,双方通过交换包含LCP协议的PPP帧来完成建立工作)。发送方会和接收方交换LCP分组,用于协商一些选项的配置(比如帧的有效载荷大小,是否压缩PPP的协议字段等)(其实严格说,建立阶段需要物理层和数据链路层两层同时起作用,发送方一开始是先发送物理层的载波信号,等建立物理层连接后,再协商链路层连接需要的选项配置)

3.鉴别:鉴别阶段是可选的。主要目的是鉴别发送方的身份,根据鉴别报文的ID和口令等身份信息,接收方来决定是否要和发送方通信。如果发送方身份被接收方认可,就进入联网阶段,否则直接进入终止阶段。常用的鉴别协议是PAP协议和CHAP协议。

4.联网:联网阶段是对网络层协议的协商。通过对应的网络控制协议NCP来完成。因为PPP协议支持多种网络层协议,双方必须在进行数据报传输前,确定到底交换哪种网络层协议,对应网络层协议的相关规定也要达成一致。比如,如果PPP协议要封装IP数据报,那就需要在双方配置交换IP数据报需要的模块。双方会交换IP控制协议IPCP来完成配置工作。

5.打开:到打开阶段,连接的相关配置才算完成,双方才能正式进行数据分组的交换。直到连接终止前,双方都可以进行数据的传输。在打开阶段,双方也可以交换回声请求和回声应答LCP分组来检查链路的连接状态。

6.终止:如果双方不需要交换数据分组,则可以利用LCP协议完成终止连接的操作。双方会交换相关用于终止连接的LCP分组,来关闭链路。

PPP协议每个阶段如何相互转换可以参考下图:

4-PPP 协议.jpg