3.2.1 PPP协议的特点
- 对于点对点的链路目前使用得最广泛的数据链路层协议是点对点协议 PPP。
- PPP协议在1994年就已成为互联网的正式标准[RFC1661,STD51]。
1. 用户到ISP的链路使用PPP协议
2. PPP协议应满足的需求
- 简单——首要要求。
- 封装成帧——必须规定特殊的字符作为帧定界符。
- 透明性——必须保证数据传输的透明性。
- 多种网络层协议——能够在同一条物理链路上同时支持多种网络层协议。
- 多种类型链路——能够在多种类型的链路上运行。
- 差错检测——能够对接收端收到的帧进行检测,井立即丢弃有差错的帧。
- 检测连接状态——能够及时自动检测出链路是否处于正常工作状态。
- 最大传送单元 ——必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值,促进各种实现之间的互操作性。
- 网络层地址协商——必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
- 数据压缩协商——必须提供一种方法来协商使用数据压缩算法。
3. PPP协议的组成
三个组成部分:
-
一个将IP数据报封装到串行链路的方法。 PPP既支持异步链路(无奇偶检验的8比 特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部 分的长度受最大传送单元MTU的限制。 -
一个链路控制协议LCP。 一个用来建立、配置和测试数据链路连接的链路控制协议LCP。通信的双方可协商一些选项。在RFC1661中定义了11种类型的LCP分组。 -
网络控制协议NCP。 一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet和AppleTalk等。
3.2.2 PPP协议的帧格式
1. 各字段的含义
首部:4个字段
- 标志字段F:0x7E。表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
- 地址字段A:只置为0xFF。实际上不起作用。
- 控制字段C:通常置为0x03。实际上不起作用。
- 协议字段:2字节。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。
尾部:2个字段。
2. 透明传输问题
- 当PPP用在异步传输时,使用字节填充法。
- 当PPP用在同步传输链路时,采用零比特填充法。
<1>字节填充
当PPP使用异步传输时,它把转义符定义为0x7D(即01111101),并使用字节填充, RFC1662规定了如下所述的填充方法:
- 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。
- 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D,0x5D)。
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)。
由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
<2>零比特填充
3.2.3 PPP协议的工作状态
1. PPP链路初始化过程
- 用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。
- 用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP 帧),以便建立LCP连接。
- 之后进行网络层配置。网络控制协议NCP给新接入的用户个人电脑分配一个 临时的IP地址。
- 当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。 LCP释放数据链路层连接。最后释放的是物理层的连接。
2. PPP协议状态图
参考资料:《计算机网络(第8版)》—— 谢希仁。
|