HDLC与PPP(串行链路协议)

时间:2024-03-10 13:10:13

广域网中经常会使用串行链路来提供远距离的数据传输,串行链路普遍用于广域网中。典型的串口封装协议有以下两种:

  高级数据链路控制HDLC( High-Level Data Link Control )

  点对点协议PPP( Point to Point Protocol)

串行链路的数据通信方式

  

 

 

 

 

串行链路中定义了两种数据传输方式:异步同步
异步传输以字节为单位来传输数据,并且需要采用额外的起始位和停止位来标记每个字节的开始和结束。起始位为二进制值0,停止位为二进制值1。在这种传输方式下,开始和停止位占据发送数据的相当大的比例,每个字节的发送都需要额外的开销
同步传输以帧为单位来传输数据,在通信时需要使用时钟来同步本端和对端的设备通信。DCE数据通信设备,它提供了一个用于同步DCE设备和DTE设备之间数据传输的时钟信号。DTE数据终端设备,它通常使用DCE产生的时钟信号

时钟同步具体描述:https://zhidao.baidu.com/question/214609545.html

DTE与DCE:https://zhidao.baidu.com/question/173232881.html

HDLC协议

  High-level Data Link Control,高级数据链路控制,简称HDLC,是一种面向比特的链路层协议。

 

 

 

  HDLC是一种面向比特的通信规则。HDLC传送的信息单位为帧。作为面向比特的同步数据控制协议的典型,HDLC具有如下特点:

  1. 协议不依赖于任何一种字符编码集;
  2. 数据报文可透明传输,用于透明传输的“0比特插入法”易于硬件实现;
  3. 全双工通信,不必等待确认可连续发送数据,有较高的数据链路传输效率;
  4. 所有帧均采用CRC校验,并对信息帧进行编号,可防止漏收或重收,传输可靠性高;
  5. 传输控制功能与处理功能分离,具有较大的灵活性和较完善的控制功能。

  0比特插入法:https://baike.so.com/doc/24788927-25712150.html

  CRC:https://baike.baidu.com/item/CRC/1453359?fr=aladdin

HDLC帧结构

  

 HDLC有三种类型的帧:信息帧 I、监控帧 S 、无编号帧 U 。

 

  • 信息帧(I帧)用于传送有效信息或数据,通常简称为I帧。
  • 监控帧(S帧)用于差错控制和流量控制,通常称为S帧。S帧的标志是控制字段的前两个比特位为“10”。S帧不带信息字段,只有6个字节即48个比特。
  • 无编号帧(U帧)简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能。

 

完整的HDLC帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成。

  • 标志字段为01111110,用以标志帧的开始与结束,也可以作为帧与帧之间的填充字符。
  • 地址字段携带的是地址信息。
  • 控制字段用于构成各种命令及响应,以便对链路进行监视与控制。发送方利用控制字段来通知接收方来执行约定的操作;相反,接收方用该字段作为对命令的响应,报告已经完成的操作或状态的变化。
  • 信息字段可以包含任意长度的二进制数,其上限由FCS字段或通讯节点的缓存容量来决定,目前用得较多的是1000-2000比特,而下限可以是0,即无信息字段。监控帧中不能有信息字段。
  • 帧检验序列字段可以使用16位CRC对两个标志字段之间的内容进行校验。

HDLC配置

[RTA]interface Serial 1/0/0 
[RTA-Serial1/0/0]link-protocol hdlc                                 // 接口下使能HDLC协议
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]:y 
[RTA-Serial1/0/0]ip address 10.0.1.1 30
[RTA-Serial1/0/0]ip address unnumbered interface loopBack 0                   //  IP地址借用:从其它接口借用IP地址,一般建议借用loopback接口的IP地址    

 PPP协议

 

 

 

  • PPP协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。

PPP协议有如下优点:

  • PPP既支持同步传输又支持异步传输,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步传输,SLIP仅支持异步传输。
  • PPP协议具有很好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE。
  • PPP提供了LCP(Link Control Protocol)协议,用于各种链路层参数的协商。
  • PPP提供了各种NCP(Network Control Protocol)协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持了网络层协议。
  • PPP提供了认证协议CHAP(Challenge-Handshake Authentication Protocol)PAP(Password Authentication Protocol),更好的保证了网络的安全性。
  • 无重传机制,网络开销小,速度快

PPP组件

  

 

 

 

  • 链路控制协议LCP:LCP可以自动检测链路环境,如是否存在环路;协商链路参数,如最大数据包长度,使用何种认证协议等等。与其他数据链路层协议相比,PPP协议的一个重要特点是可以提供认证功能,链路两端可以协商使用何种认证协议来实施认证过程,只有认证成功之后才会建立连接
  • 网络层控制协议NCP:每一个NCP对应了一种网络层协议,用于协商网络层地址等参数,例如 IPCP用于协商控制IP协议,IPXCP用于协商控制IPX协议等。

  IPCP:https://wenku.baidu.com/view/545316f4700abb68a982fb5c.html

  IPX:https://baike.baidu.com/item/IPX/609379?fr=aladdin

PPP建立过程

  

  • 协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。
  • LCP参数协商成功后会进入Opened状态,表示底层链路已经建立。
  • Authenticate阶段 和 Network阶段 再次收到了Configure-Request报文,则又会返回到链路Establish阶段。
  • 协商成功后(Network阶段),如果物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
  • 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段。

PPP帧格式

  

 

 

 

  • PPP采用了与HDLC协议类似的帧格式:
  • Flag域标识一个物理帧的起始和结束,该字节为二进制序列01111110(0X7E)。
  • PPP帧的地址域跟HDLC帧的地址域有差异,PPP帧的地址域字节固定为11111111 (0XFF),是一个广播地址
  • PPP数据帧的控制域默认为00000011(0X03),表明为无序号帧
  • 帧校验序列(FCS)是个16位的校验和,用于检查PPP帧的完整性。
  • 协议字段用来说明PPP所封装的协议报文类型,典型的字段值有:0XC021代表LCP报文,0XC023代表PAP报文,0XC223代表CHAP报文
  • 信息字段包含协议字段中指定协议的数据包。数据字段的默认最大长度(不包括协议字段)称为最大接收单元MRU(Maximum Receive Unit),MRU的缺省值为1500字节
  • 如果协议字段被设为0XC021,则说明通信双方正通过LCP报文进行PPP链路的协商和建立:
    • Code字段,主要是用来标识LCP数据报文的类型。典型的报文类型有:配置信息报文(Configure Packets: 0x01),配置成功信息报文(Configure-Ack: 0X02),终止请求报文(Terminate-Request:0X05)
    • Identifier域为1个字节,用来匹配请求和响应
    • Length域的值就是该LCP报文的总字节数据。
    • 数据字段则承载各种TLV(Type/Length/Value)参数用于协商配置选项,包括最大接收单元,认证协议等等。

LCP报文格式

  

  • Configure-Request(配置请求):链路层协商过程中发送的第一个报文,该报文表明点对点双方开始进行链路层参数的协商。
  • Configure-Ack(配置响应):收到对端发来的Configure-Request报文,如果参数取值完全接受,则以此报文响应。
  • Configure-Nak(配置不响应):收到对端发来的Configure-Request报文,如果参数取值不被本端认可,则发送此报文并且携带本端可接受的配置参数。
  • Configure-Reject(配置拒绝):收到对端发来的Configure-Request报文,如果本端不能识别对端发送的Configure-Request中的某些参数,则发送此报文并且携带那些本端不能认别的配置参数。

LCP链路协商参数

  

Configure-Nak报文中,只包含不能接受的链路层参数,并且此报文所包含的链路层参数均被修改为RTB上可以接受的取值(或取值范围)。
Configure-Reject报文中,只包含不能被识别的链路层参数。RTA需要重新发送一个Configure-Request报文,不再包含不被对端(RTB)识别的参数,也就是所有都要被识别

PPP认证模式

  PAP认证

  

  •  PAP认证的工作原理较为简单。PAP认证协议为两次握手认证协议,密码以明文方式在链路上发送。

  CHAP认证

  

CHAP认证 过程需要三次报文的交互。为了匹配请求报文和回应报文,报文中含有Identifier字段一次认证过程所使用的报文均使用相同的Identifier信息

  • LCP协商完成后,认证方发送一个Challenge报文给被认证方,报文中含有Identifier信息和一个随机产生的Challenge字符串,此Identifier即为后续报文所使用的Identifier
  • 被认证方收到此Challenge报文之后,进行一次加密运算,运算公式为MD5{ Identifier+密码+Challenge },意思是将Identifier、密码和Challenge三部分连成一个字符串,然后对此字符串做MD5运算,得到一个16字节长的摘要信息,然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发回认证方。
  • 认证方接收到被认证方发送的Response报文之后,按照其中的用户名在本地查找相应的密码信息,得到密码信息之后,进行一次加密运算,运算方式和被认证方的加密运算方式相同,然后将加密运算得到的摘要信息Response报文中封装的摘要信息比较相同认证成功,不相同则认证失败。
  • 使用CHAP认证方式时,被认证方的密码是被加密后才进行传输的,这样就极大的提高了安全性。

IPCP地址协商

  IP地址协商包括两种方式:静态配置协商和动态配置协商

  静态配置协商

  

 

 

  1. 每一端都要发送Configure-Request报文,在此报文中包含本地配置的IP地址
  2. 每一端接收到此Configure-Request报文之后,检查其中的IP地址,如果IP地址是一个合法的单播IP地址,而且和本地配置的IP地址不同(没有IP冲突),则认为对端可以使用该地址,回应一个Configure-Ack报文

  动态配置协商

  

 

  •  动态IP协商是双向都要确认的,也就是双方都要收到Configure-Ack报文才算成功。

 PPP认证配置实现

 

  

 

 

 

[RTA]aaa 
[RTA-aaa]local-user huawei password cipher huawei123
[RTA-aaa]local-user huawei service-type ppp               
[RTA]interface Serial 1/0/0  
[RTA-Serial1/0/0]link-protocol ppp
[RTA-Serial1/0/0]ppp authentication-mode pap
[RTA-Serial1/0/0]ip address 10.1.1.1 30
[RTB]interface Serial 1/0/0  
[RTB-Serial1/0/0]link-protocol ppp
[RTB-Serial1/0/0]ppp pap local-user huawei password cipher huawei123 
[RTB-Serial1/0/0]ip address 10.1.1.2 30