在通信线路质量较差的年代,能够实现可靠传输的高级数据链路控制(High-level Data Link Control, HDLC)协议曾是比较流行的数据链路层协议。HDLC是一个较复杂的协议,实现了滑动窗口协议,并支持点对点和点对多点两种连接方式。然而,对于现在误码率已非常低的点对点有线链路,HDLC协议已较少使用,而简单得多的点对点协议(Point-to-Point Protocol, PPP)则是目前使用最广泛的点对点数据链路层协议。
互联网用户通常需要连接到某个ISP才能接入互联网。用户计算机和ISP进行通信时,所使用的数据链路层协议通常就是PPP。PPP是IETF在1992年制定的,经过1993年和1994年的修订,现在PPP已成为互联网的正式标准(RFC1661,RFC1662)。
3.2.1 PPP的特点
PPP的主要特点如下:
- 简单:数据链路层的PPP非常简单。接收方每收到一个帧,就进行CRC(循环冗余校验)。如果CRC正确,就收下这个帧;反之,就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务。如需要可靠传输,则由传输层来完成。
- 封装成帧:PPP规定了特殊的字符作为帧定界符,使接收端能准确地找出帧的开始和结束位置。
- 透明性:PPP能够保证透明传输。
- 多种网络层协议和多种类型链路:PPP能够在同一条物理链路上同时支持多种网络层协议(如IP和IPX)的运行,并能够在多种类型的点对点链路上运行,例如拨号电话线路、SONET/SDH链路、X.25连接或ISDN电路等。
- 差错检测:PPP能够对接收端收到的帧进行差错检测,并立即丢弃有差错的帧。
- 检测连接状态:PPP具有一种机制,能够及时(不超过几分钟)自动检测链路是否处于正常工作状态。
- 最大传送单元(MTU) :PPP对每一种类型的点对点链路设置MTU的标准默认值。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。
- 网络层地址协商:PPP提供了一种机制,使通信的两个网络层实体能够通过协商知道或配置彼此的网络层地址。
3.2.2 PPP的组成
PPP有三个组成部分:
- 封装方法:PPP支持面向字符的异步链路和面向比特的同步链路。IP数据报在PPP帧中作为数据部分被传输,数据部分的长度受MTU的限制。
- 链路控制协议(LCP) :用于建立、配置和测试数据链路连接。通信双方可协商一些选项,RFC1661中定义了11种LCP分组类型。
- 网络控制协议(NCP) :每个协议支持不同的网络层协议,如IP、OSI的网络层协议、DECnet和AppleTalk等。
3.2.3 PPP的帧格式
PPP的帧格式如图3-19所示。PPP帧的首部和尾部分别为四个字段和两个字段。
PPP帧的首部第一个字段和尾部第二个字段都是标志字段F,规定为0x7E。标志字段表示一个帧的开始或结束。连续两帧之间只需要用一个标志字段,如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
首部中的地址字段A规定为0xFF,控制字段C规定为0x03。这两个字段实际上并没有携带PPP帧的信息。
PPP首部的第四个字段是2字节的协议字段,指明信息字段承载的是哪个协议的分组。当协议字段为0x0021时,信息字段是IP数据报;0xC021表示信息字段是PPP链路控制协议(LCP)的分组;0x8021表示信息字段是网络控制协议(NCP)的分组。
信息字段的长度是可变的,不超过1500字节。尾部的第一个字段是使用CRC的帧检验序列(FCS)。
当信息字段中出现和标志字段一样的比特组合(0x7E)时,必须采取措施使这种比特组合不出现在信息字段中。在面向字符的异步传输链路上,使用字节填充法实现透明传输,转义符定义为0x7D。填充方法如下:
- 将信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
- 若信息字段中出现一个0x7D字节,则转变为2字节序列(0x7D,0x5D)。
- 若信息字段中出现ASCII码的控制字符,则在该字符前面添加一个0x7D字节,并对该字符的编码加以改变。
在面向比特的同步传输链路上,采用零比特填充方法来实现透明传输。
3.2.4 PPP的工作状态
PPP链路的起始和终止状态是“静止”状态,此时物理层连接不存在。在检测到调制解调器的载波信号,并建立物理层连接后,PPP进入“链路建立”状态。LCP开始协商一些配置选项,发送LCP的配置请求帧。这时,链路的另一端可以发送以下几种响应:
- 配置确认帧(Configure-Ack) :所有选项都接受。
- 配置否认帧(Configure-Nak) :所有选项都理解但不能接受。
- 配置拒绝帧(Configure-Reject) :有些选项无法识别或不能接受,需要协商。
协商结束后进入 “鉴别”状态,若通信双方鉴别身份成功,则链路进入“网络”状态,即PPP链路的两端互相交换网络层特定的网络控制分组。如果在PPP链路上运行的是IP,则使用IP控制协议(IPCP)来配置IP模块。网络层配置完毕后,链路进入可进行数据通信的“打开”状态。
数据传输结束后,链路的一端发出终止请求LCP分组,链路则转到“终止”状态。载波停止后,链路回到“静止”状态。
补充内容
-
PPP over Ethernet(PPPoE) :PPP能够适应多种类型的链路,其中一个典型例子是1999年公布的在以太网上运行的PPP,即PPP over Ethernet(PPPoE)。PPPoE使ISP可以通过DSL、光纤等宽带接入技术为用户提供接入服务。PPPoE的典型应用场景是家庭宽带用户通过DSL调制解调器连接到ISP。
-
差错检测:PPP能够对接收端收到的帧进行差错检测(但不进行纠错),并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么已出现差错的无用帧,就还要在网络中继续向前转发,白白浪费网络资源。
-
网络层地址协商:PPP提供了一种机制,使通信的两个网络层(如两个IP层)实体能够通过协商知道或配置彼此的网络层地址。这对拨号连接的链路特别重要,因为在链路层建立了连接后,用户需要配置一个网络层地址,才能在网络层传送分组。
-
最大传送单元(MTU) :PPP对每一种类型的点对点链路设置MTU的标准默认值。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以承载的数据部分的最大长度,而不是帧的总长度。
-
LCP配置选项:LCP配置选项包括链路上的最大帧长、所使用的鉴别协议(Authentication Protocol)的规约(如果有的话),以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP帧的首部中省略这两个字节)。
-
NCP的作用:NCP的作用是对PPP链路的每一端配置网络层模块(如分配IP地址)。和LCP分组封装成PPP帧一样,NCP分组也封装成PPP帧在PPP链路上传送。
总结
通过本文的详细解析,你应该已经对PPP协议有了深入的了解,包括其特点、组成部分、帧格式、工作状态和应用场景。PPP协议的灵活性和适应性使其成为点对点数据链路层协议的首选。希望这些内容能为你的学习和工作提供有力的支持。计算机网络是一个不断发展的领域,保持学习和探索的热情是进步的关键。如果你有任何疑问或需要进一步的讨论,欢迎随时联系我。祝你学习愉快,前程似锦!
图文来源:《计算机网络教程》