PPP协议

PPP (Point-to-Point Protocol)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。

PPP协议是在SLIP 协议的基础上发展而来的,它既可以在异步线路上传输,又可在同步线路上使用; 不仅用于Modem链路,也用于租用的路由器到路由器的线路。

背景: SLIP主要完成数据报的传送,但没有寻址、数据检验、分组类型识别和数据压缩等功能,只能传送IP分组。如果上层不是IP协议,那么无法传输,并且此协议对一些高层应用也不支持,但实现比较简单。为了改进SLIP的缺点,于是制定了点对点协议(PPP)。

PPP协议有三个组成部分:

  1. 链路控制协议(LCP)。一种扩展链路控制协议,用于建立、配置、测试和管理数据链路
  2. 网络控制协议(NCP)。PPP 协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的NCP来配置,为网络层协议建立和配置逻辑连接
  3. 一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元(MTU)的限制。

PPP帧的格式如图3.34所示。PPP帧的前3个字段和最后2个字段与HDLC帧是一样的,标志字段(F)仍为7E(01111110),前后各占1字节,若它出现在信息字段中,就必须做字节填充,使用的控制转义字节是7D(01111101)。但在PPP中,地址字段(A))占1字节,规定为OxFF,控制字段(C)占1字节,规定为0x03,两者的内容始终是固定不变的。

PPP是面向字节的,因而所有PPP帧的长度都是整数个字节。

计算机网络:PPP协议与HDLC协议_链路

第4个字段是协议段,占2字节,在HDLC中没有该字段,它是说明信息段中运载的是什么种类的分组

  • 以比特0开始的是诸如IP、IPX和AppleTalk这样的网络层协议;
  • 以比特1开始的被用来协商其他协议,包括LCP及每个支持的网络层协议的一个不同的NCP。

第5段信息段的长度是可变的,大于等于0且小于等于1500B。为了实现透明传输,当信息段中出现和标志字段一样的比特组合时,必须采用一些措施来改进。

注意:因为PPP是点对点的,并不是总线形,所以无须采用CSMA/CD协议,自然就没有最短帧,所以信息段占0~ 1500字节,而不是46~1500字节。另外,当数据部分出现和标志位一样的比特组合时,就需要采用一些措施来实现透明传输。

第6个字段是帧检验序列(FCS),占2字节,即循环冗余码检验中的冗余码。检验区包括地址字段、控制字段、协议字段和信息字段。

下面是PPP链路建立、使用、撤销所经历的状态图。当线路处于静止状态时,不存在物理层连接。当线路检测到载波信号时,建立物理连接,线路变为建立状态。此时,LCP开始选项商定,商定成功后就进入身份验证状态。双发身份验证通过后,进入网络层协议状态。这时,采用NCP配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态。

计算机网络:PPP协议与HDLC协议_字段_02

注意:

  1. PPP 提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC校验)。它是不可靠的传输协议,因此也不使用序号和确认机制。
  2. 它仅支持点对点的链路通信,不支持多点线路。
  3. PPP只支持全双工链路
  4. PPP的两端可以运行不同的网络层协议,但仍然可使用同一个PPP进行通信。
  5. PPP是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP有两种不同的处理方法:若PPP用在异步线路(默认),则采用字节填充法; 若PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成比特填充(和HDLC 的做法一样)。

HDLC协议

高级数据链路控制(HDLC) 协议是面向比特的数据链路层协议。该协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的 “0比特插入法” 易于硬件实现; 全双工通信,有较高的数据链路传输效率; 所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高; 传输控制功能与处理功能分离,具有较大的灵活性。

标志字段F,为01111110。在接收端只要找到标志字段就可确定一个帧的位置。HDLC协议采用比特填充的首尾标志法实现透明传输。

计算机网络:PPP协议与HDLC协议_PPP_03

地址字段A,共8位,根据不同的传送方式,表示从站或应答站的地址。

控制字段C,共8位,HDLC的许多重要功能都靠控制字段来实现。

PPP帧和HDLC帧的格式有以下几点不同:

  1. PPP协议是面向字节的,HDLC协议是面向比特的。
  2. PPP帧比HDLC帧多一个2字节的协议字段。当协议字段值为0x0021时,表示信息字段是IP数据报。
  3. PPP协议不使用序号和确认机制,只保证无差错接收(CRC检验),而端到端差错检测由高层协议负责。HDLC 协议的信息帧使用了编号和确认机制,能够提供可靠传输。

参考资料:

谢希仁.计算机网络(第8版)[M].北京:电子工业出版社,2021.

James F.Kurose,Keith W.Ross.计算机网络:自顶向下方法[M].北京:机械工业出版社,2019.

2023年王道计算机复习指导[M].北京:电子工业出版社,2021.