文章目录

  • HDLC
  • HDLC基本配置
  • PPP协议
  • PPP链路建立过程
  • PPP报文和数据帧
  • PPP配置
  • PAP认证过程
  • CHAP认证过程
  • IPCP地址协商

广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制HDLC(High-Level Data Link Control)和点对点协议PPP( Point to Point Protocol)是两种典型的串口封装协议。

串行链路普遍用于广域网中。串行链路中定义了两种数据传输方式:异步和同步。

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

HDLC

ISO制定的HDLC是一种面向比特的通信规则。HDLC传送的信息单位为帧。作为面向比特的同步数据控制协议的典型,HDLC具有如下特点:
协议不依赖于任何一种字符编码集;
数据报文可透明传输,用于透明传输的“0比特插入法”易于硬件实现;
全双工通信,不必等待确认可连续发送数据,有较高的数据链路传输效率;
所有帧均采用CRC校验,并对信息帧进行编号,可防止漏收或重收,传输可靠性高;
传输控制功能与处理功能分离,具有较大的灵活性和较完善的控制功能。

完整的HDLC帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成。
标志字段为01111110,用以标志帧的开始与结束,也可以作为帧与帧之间的填充字符。
地址字段携带的是地址信息。
控制字段用于构成各种命令及响应,以便对链路进行监视与控制。发送方利用控制字段来通知接收方来执行约定的操作;相反,接收方用该字段作为对命令的响应,报告已经完成的操作或状态的变化。
信息字段可以包含任意长度的二进制数,其上限由FCS字段或通讯节点的缓存容量来决定,目前用得较多的是1000-2000比特,而下限可以是0,即无信息字段。监控帧中不能有信息字段。
帧检验序列字段可以使用16位CRC对两个标志字段之间的内容进行校验。
HDLC有三种类型的帧:
信息帧(I帧)用于传送有效信息或数据,通常简称为I帧。
监控帧(S帧)用于差错控制和流量控制,通常称为S帧。S帧的标志是控制字段的前两个比特位为“10”。S帧不带信息字段,只有6个字节即48个比特。
无编号帧(U帧)简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能。

HDLC基本配置

用户只需要在串行接口视图下运行link-protocol hdlc命令就可以使能接口的HDLC协议。华为设备上的串行接口默认运行PPP协议。用户必须在串行链路两端的端口上配置相同的链路协议,双方才能通信。

[RTA]interface Serial 1/0/0
[RTA-Serial1/0/0]link-protocol 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

一个接口如果没有IP地址就无法生成路由,也就无法转发报文。IP地址借用允许一个没有IP地址的接口从其它接口借用IP地址。这样可以避免一个接口独占IP地址,节省IP地址资源。一般建议借用loopback接口的IP地址,因为这类接口总是处于活跃(active)状态,因而能提供稳定可用的IP地址。
本例中,在RTA的S1/0/0接口配置完接口地址借用之后,还需要在RTA上配置静态路由,以使RTA能够转发数据到10.1.1.0/24网络。

[RTA]interface Serial 1/0/0
[RTA-Serial1/0/0]link-protocol hdlc
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]:y
[RTA-Serial1/0/0]ip address unnumbered interface loopBack 0
[RTA]ip route-static 10.1.1.0 24 Serial 1/0/0

执行display ip interface brief命令可以查看路由器接口简要信息。如果有IP地址被借用,该IP地址会显示在多个接口上,说明借用loopback接口的IP地址成功。

[RTA]display ip interface brief
*down: administratively down ^down: standby (l): loopback
(s): spoofing
……
Interface                IP Address/Mask    Physical   Protocol
LoopBack0                10.1.1.1/32          up         up(s)
Serial1/0/0              10.1.1.1/32          up         up
Serial1/0/1              unassigned           up         down

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协议的一个重要特点是可以提供认证功能,链路两端可以协商使用何种认证协议来实施认证过程,只有认证成功之后才会建立连接。
PPP定义了一组网络层控制协议NCP,每一个NCP对应了一种网络层协议,用于协商网络层地址等参数,例如IPCP用于协商控制IP协议,IPXCP用于协商控制IPX协议等。

PPP链路建立过程

对于PPP链路建立过程的描述如下:
Dead阶段也称为物理层不可用阶段。当通信双方的两端检测到物理线路激活时,就会从Dead阶段迁移至Establish阶段,即链路建立阶段。
在Establish阶段,PPP链路进行LCP参数协商。协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。LCP参数协商成功后会进入Opened状态,表示底层链路已经建立。
多数情况下,链路两端的设备是需要经过认证阶段(Authenticate)后才能够进入到网络层协议阶段。PPP链路在缺省情况下是不要求进行认证的。如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段双方进行协商的。如果在这个阶段再次收到了Configure-Request报文,则又会返回到链路建立阶段。

在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到了Configure-Request报文,也会返回到链路建立阶段。
NCP协商成功后,PPP链路将保持通信状态。PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。

PPP报文和数据帧

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

LCP协商参数过程
LCP报文携带的一些常见的配置参数有MRU,认证协议,以及魔术字。
在VRP平台上,MRU参数使用接口上配置的最大传输单元(MTU)值来表示。
常用的PPP认证协议有PAP和CHAP,一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息。
LCP使用魔术字来检测链路环路和其它异常情况。魔术字为随机产生的一个数字,随机机制需要保证两端产生相同魔术字的可能性几乎为0。
收到一个Configure-Request报文之后,其包含的魔术字需要和本地产生的魔术字做比较,如果不同,表示链路无环路,则使用Confugure-Ack报文确认(其它参数也协商成功),表示魔术字协商成功。在后续发送的报文中,如果报文含有魔术字字段,则该字段设置为协商成功的魔术字。

如图所示,RTA和RTB使用串行链路相连,运行PPP。当物理层链路变为可用状态之后,RTA和RTB使用LCP协商链路参数。本例中,RTA首先发送一个Configure-Request报文,此报文中包含RTA上配置的链路层参数。当RTB收到此Configure-Request报文之后,如果RTB能识别并接受此报文中的所有链路层参数,则向RTA回应一个Configure-Ack报文。
RTA在没有收到Configure-Ack报文的情况下,会每隔3秒重传一次Configure-Request报文,如果连续10次发送Configure-Request报文仍然没有收到Configure-Ack报文,则认为对端不可用,停止发送Configure-Request报文。
注:完成上述过程只是表明RTB认为RTA上的链路参数配置是可接受的。RTB也需要向RTA发送Configure-Request报文,使RTA检测RTB上的链路参数是不是可接受的

当RTB收到RTA发送的Configure-Request报文之后,如果RTB能识别此报文中携带的所有链路层参数,但是认为部分或全部参数的取值不能接受,即参数的取值协商不成功,则RTB需要向RTA回应一个Configure-Nak报文。
在这个Configure-Nak报文中,只包含不能接受的链路层参数,并且此报文所包含的链路层参数均被修改为RTB上可以接受的取值(或取值范围)。
在收到Configure-Nak报文之后,RTA需要根据此报文中的链路层参数重新选择本地配置的其它参数,并重新发送一个Configure-Request。

当RTB收到RTA发送的Configure-Request报文之后,如果RTB不能识别此报文中携带的部分或全部链路层参数,则RTB需要向RTA回应一个Configure-Reject报文。在此Configure-Reject报文中,只包含不能被识别的链路层参数。
在收到Configure-Reject报文之后,RTA需要向RTB重新发送一个Configure-Request报文,在新的Configure-Request报文中,不再包含不被对端(RTB)识别的参数。

数据帧
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)参数用于协商配置选项,包括最大接收单元,认证协议等等。

PPP配置

建立PPP链路之前,必须先在串行接口上配置链路层协议。华为ARG3系列路由器默认在串行接口上使能PPP协议。如果接口运行的不是PPP协议,需要运行link-protocol ppp命令来使能数据链路层的PPP协议。

[RTA]interface Serial 1/0/0
[RTA-Serial1/0/0]link-protocol ppp
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]:y
[RTA-Serial1/0/0]ip address 10.1.1.1 30

PAP认证过程

PAP认证的工作原理较为简单。PAP认证协议为两次握手认证协议,密码以明文方式在链路上发送。
LCP协商完成后,认证方要求被认证方使用PAP进行认证。
被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方。
认证方收到被认证方发送的用户名和密码信息之后,根据本地配置的用户名和密码数据库检查用户名和密码信息是否匹配,如果匹配,则返回Authenticate-Ack报文,表示认证成功。否则,返回Authenticate-Nak报文,表示认证失败。


PAP认证配置

local-user huawei password cipher huawei123命令用于创建一个本地用户,用户名为“huawei”,密码为“huawei123”,关键字“cipher”表示密码信息在配置文件中被加密。
local-user huawei service-type ppp命令用于设置用户“huawei”为PPP用户。
ppp authentication-mode pap命令用于在认证方开启PAP认证的功能,即要求对端使用PAP认证。
ppp pap local-user huawei password cipher huawei123命令用于在被认证方配置PAP使用的用户名和密码信息。

[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<RTB>debugging ppp pap all
Mar 20 2016 04:50:24.280.4+00:00 RTB PPP/7/debug2:PPP State Change: Serial1/0/0 PAP : Initial --> SendRequest
Mar 20 2016 04:50:24.290.3+00:00 RTB PPP/7/debug2:PPP State Change: Serial1/0/0 PAP : SendRequest --> ClientSuccess
……

CHAP认证过程

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

配置CHAP
local-user huawei password cipher huawei123命令用于创建一个本地用户,用户名为“huawei”,密码为“huawei123”;关键字“cipher”表示密码信息在配置文件中加密保存。
local-user huawei service-type ppp命令用于设置用户“huawei”为PPP用户。
ppp authentication-mode chap命令用于在认证方开启CHAP认证的功能,即要求对端使用CHAP认证。
ppp chap user huawei命令用于在被认证方设置CHAP使用的用户名为“huawei”。
ppp chap password cipher huawei123命令用于在被认证方设置CHAP使用的密码为“huawei123”。

[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 chap[RTB]interface Serial 1/0/0
[RTB-Serial1/0/0]link-protocol ppp
[RTB-Serial1/0/0]ppp chap user huawei
[RTB-Serial1/0/0]ppp chap password cipher huawei123<RTB>debugging ppp chap all
Mar 20 2016 05:15:54.230.1+00:00 RTB PPP/7/debug2:
PPP State Change: Serial1/0/0 CHAP : Initial --> ListenChallenge
Mar 20 2016 05:15:54.230.7+00:00 RTB PPP/7/debug2:PPP State Change: Serial1/0/0 CHAP : ListenChallenge --> SendResponse
Mar 20 2016 05:15:54.250.3+00:00 RTB PPP/7/debug2:PPP State Change: Serial1/0/0 CHAP : SendResponse --> ClientSuccess
……

IPCP地址协商

IP地址协商包括两种方式:静态配置协商和动态配置协商。
IPCP使用和LCP相同的协商机制、报文类型,但IPCP并非调用LCP,只是工作过程、报文等和LCP相同。
静态协商
如图所示,两端路由器配置的IP地址分别为10.1.1.1/30和10.1.1.2/30。
静态IP地址的协商过程如下:

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

    动态协商
    两端动态协商IP地址的过程如下:
    RTA向RTB发送一个Configure-Request报文,此报文中会包含一个IP地址0.0.0.0,表示向对端请求IP地址;
    RTB收到上述Configure-Request报文后,认为其中包含的地址(0.0.0.0)不合法,使用Configure-Nak回应一个新的IP地址10.1.1.1;
    RTA收到此Configure-Nak报文之后,更新本地IP地址,并重新发送一个Configure-Request报文,包含新的IP地址10.1.1.1;
    RTB收到Configure-Request报文后,认为其中包含的IP地址为合法地址,回应一个Configure-Ack报文。
    同时,RTB也要向RTA发送Configure-Request报文请求使用地址10.1.1.2,RTA认为此地址合法,回应Configure-Ack报文。

HCIA网络基础17-HDLC和PPP相关推荐

  1. HCIA网络基础18-PPPoE

    文章目录 DSL PPPoE报文 会话建立 PPPoE配置 DSL 数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为 ...

  2. HCIA网络基础01

    HCIA --- 华为认证体系下初级网络工程师 HCIP --- 高级网络工程师 HCIE --- 专家级网络工程师 云技术 --- 云存储 --- 百度网盘 --- 云计算 --- 分布式计算 计算 ...

  3. HCIA网络基础11-IP路由原理及静态路由

    文章目录 自制系统.LAN 和广播域 路由 静态路由 以太网交换机工作在数据链路层,用于在网络内进行数据转发.而企业网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能处在不同的网络中,此时就 ...

  4. HCIA网络基础1-传输介质、中继器、HUB、网桥、交换机

    文章目录 同轴电缆 双绞线 光纤 串口电缆 冲突域 双工模式 中继器.hub.网桥和交换机 通信网络除了包含通信设备本身之外,还包含连接这些设备的传输介质,如同轴电缆.双绞线和光纤等.不同的传输介质具 ...

  5. HCIA网络基础10-交换网络及STP

    文章目录 小型交换网络 链路冗余与环路问题 生成树协议STP(Spanning Tree Protocol) 根桥选举 根端口选举 指定端口选举 STP下交换机端口状态 BPDU 根桥故障 直接链路故 ...

  6. HCIA网络基础14-VLAN及VLAN间路由

    文章目录 VLAN的由来 VLAN 数据帧 链路类型 PVID 端口类型 VLAN的划分方式 VLAN配置 VOICE VLAN VLAN路由 VLAN的由来 早期的局域网LAN技术是基于总线型结构的 ...

  7. 网络原理实验7 HDLC及PPP协议

    赞赏码 & 联系方式 & 个人闲话 [实验名称]HDLC及PPP协议 [实验目的] 1.理解串口的数据链路层协议的封装: 2.建立网络安全的概念,了解PPP认证的有关知识: 3.HDL ...

  8. 计算机---网络基础小知识点11.17

    计算机---网络基础小知识点 彩虹色------------ 彩虹色------------ 1.网络的拓扑结构可反映出网中各实体间的结构关系,是建设计算机网络的第一步,是实现各种网络协议的基础,它对 ...

  9. Alamofire学习(一)网络基础

    Alamofire学习(一)网络基础 网络基础知识 1. 网络架构 1.1网络OSI七层协议 1.1.1.OSI七层协议简介 1.1.2.OSI七层作用 2 TCP/IP协议 2.1. TCP/IP协 ...

  10. CCNA系列课程(1) 网络基础

    第一节课<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 杜飞 ...

最新文章

  1. Linux下C/C++编译环境搭建
  2. python安装不上pyinstaller_记PyInstaller安装过程及问题解决
  3. 人工智能企业自动化的关键现状和战略影响
  4. 异常处理_月隐学python第19课
  5. Java命令行界面(第23部分):Rop
  6. python集合中的元素是否可以重复_python列表--查找集合中重复元素的个数
  7. python爬取图文新闻_python爬取新闻需要什么软件
  8. CentOS清除用户登录记录和命令历史方法
  9. Grafana+Telegraf+Influxdb监控Tomcat集群方案
  10. 《游戏设计师修炼之道:数据驱动的游戏设计》一1.4 来自政府和产业的挑战...
  11. 使用一重循环打印乘法口诀
  12. 论文答辩相关PPT:论文答辩模板及其它
  13. Tslib的触摸屏5点校准算法原理和实现
  14. 典型C内存空间分布图
  15. Android 版本号及对应的版本名
  16. hadoop+Spark+hbase集群动态增加节点
  17. 字符串练习:手机号码屏蔽,身份证号码信息查看,游戏骂人敏感词替换
  18. 5G使用随笔-华为5G模块MH5000-31
  19. win10 EFI文件夹删除了,引导进不去了,该怎么办?
  20. 苹果手机sim卡无效怎么办_苹果手机解锁密码忘了怎么办

热门文章

  1. 开源框架Banner实现图片轮播
  2. 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
  3. Linux内核启动工作流程初探
  4. [转]TIF图像数据结构之研究
  5. python编写函数输出自除数_728. 自除数(Python)
  6. python比对Excel表和json数据
  7. Stream实践总结
  8. at/atq/atrm
  9. go : go-redis 基础操作
  10. 描述十二个异性追求者的拓展