计算机网络:PPP 协议与 HDLC 协议
PPP 协议
PPP (Point-to-Point Protocol)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。
PPP 协议是在 SLIP 协议的基础上发展而来的,它既可以在异步线路上传输,又可在同步线路上使用; 不仅用于 Modem 链路,也用于租用的路由器到路由器的线路。
背景: SLIP 主要完成数据报的传送,但没有寻址、数据检验、分组类型识别和数据压缩等功能,只能传送 IP 分组。如果上层不是 IP 协议,那么无法传输,并且此协议对一些高层应用也不支持,但实现比较简单。为了改进 SLIP 的缺点,于是制定了点对点协议(PPP)。
PPP 协议有三个组成部分:
链路控制协议(LCP)。一种扩展链路控制协议,用于建立、配置、测试和管理数据链路。
网络控制协议(NCP)。PPP 协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的 NCP 来配置,为网络层协议建立和配置逻辑连接。
一个将 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 帧的长度都是整数个字节。
第 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 提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行 CRC 校验)。它是不可靠的传输协议,因此也不使用序号和确认机制。
它仅支持点对点的链路通信,不支持多点线路。
PPP 只支持全双工链路。
PPP 的两端可以运行不同的网络层协议,但仍然可使用同一个 PPP 进行通信。
PPP 是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP 有两种不同的处理方法:若 PPP 用在异步线路(默认),则采用字节填充法; 若 PPP 用在 SONET/SDH 等同步线路,则协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。
HDLC 协议
高级数据链路控制(HDLC) 协议是面向比特的数据链路层协议。该协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的 “0 比特插入法” 易于硬件实现; 全双工通信,有较高的数据链路传输效率; 所有帧采用 CRC 检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高; 传输控制功能与处理功能分离,具有较大的灵活性。
标志字段 F,为 01111110。在接收端只要找到标志字段就可确定一个帧的位置。HDLC 协议采用比特填充的首尾标志法实现透明传输。
地址字段 A,共 8 位,根据不同的传送方式,表示从站或应答站的地址。
控制字段 C,共 8 位,HDLC 的许多重要功能都靠控制字段来实现。
PPP 帧和 HDLC 帧的格式有以下几点不同:
PPP 协议是面向字节的,HDLC 协议是面向比特的。
PPP 帧比 HDLC 帧多一个 2 字节的协议字段。当协议字段值为 0x0021 时,表示信息字段是 IP 数据报。
PPP 协议不使用序号和确认机制,只保证无差错接收(CRC 检验),而端到端差错检测由高层协议负责。HDLC 协议的信息帧使用了编号和确认机制,能够提供可靠传输。
参考资料:
谢希仁.计算机网络(第 8 版)[M].北京:电子工业出版社,2021.
James F.Kurose,Keith W.Ross.计算机网络:自顶向下方法[M].北京:机械工业出版社,2019.
2023 年王道计算机复习指导[M].北京:电子工业出版社,2021.
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/1293c0e375236aac50900d534】。未经作者许可,禁止转载。
评论