2.1 HDLC(高级数据链路控制协议)
是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousData Link Control)协议扩展开发而成的,能够实现可靠传输。
2.1.0 HDLC基本概念
1*主站 负责控制链路的操作与运行,主要功能是发送命令(包括数据信息)帧、接收响应帧,并负责对整个链路的控制系统的初启、流程的控制、差错检测或恢复等。在多点链路中,主站负责管理与各个从站之间的链路。
2*从站 从站在主站的控制下进行工作,主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复等链路控制。从站对链路无控制权,从站之间不能直接进行通信
3*复合站 同时具有主站和从站的功能,主要功能是既能发送,又能接收命令帧和响应帧,并且负责整个链路的控制。
根据上述三个类型的站,HDLC协议规定了两种链路结构:不平衡链路结构和平衡链路结构。
(1)不平衡型结构:不平衡型结构由一个主站和一个或多个从站被连在一条线路上。
(2)平衡型结构:平衡型结构有两个复合站的点对点连接构成。两个复合站都具有数据传送和链路控制能力。
2.1.1HDLC特点
(1)协议不依赖于任何一种字符编码集。即任何字符都可以传输
(2)数据报文可以透明传输,用于实现透明传输的“0比特插入法”易于硬件实现。
(3)全双工通信,不必等待确信便可连续发送数据(ARQ),具有较高的数据链路传输效率。
(4)所有帧均采用 CRC校验,对信息帧进行编号,可防止漏收或者重份,传输可靠性高。
(5)传输控制功能与处理功能分离,具有较大灵活性和较完善的控制功能。
2.1.2HDLC工作过程
包括协商建立连接,传输报文和超时断连三个阶段。
(1)协商建立过程:HDLC每隔10秒钟后互相发送链路探测的协商报文,报文的收发顺序是由序号决定的,序号失序则造成链路断连。这种用来探寻点到点链路是否激活状态的报文称为Keepalive报文。
(2)传输报文过程:将IP报文封装在HDLC层上,数据传输过程中,仍然进行Keepalive的报文协商仪探测链路的合法有效。
(3)超时断连阶段:当封装HDLC的接口连续10次无法收到对方对自己的递增序号的确认时,HDLC协议 line protocol由UP变为DOWN转变。此时链路处于瘫痪状态无法通信。
2.1.3HDCL帧格式
标志字段F,固定为01111110,作为帧开始和结束的标记
地址字段A,表示链路上站的地址。在使用不平衡链路结构传送数据时,地址字段总是写入从站的地址;在使用平衡链路结构时,地址字段总是写入应答站的地址。(即地址是接收方的地址)地址字段的长度一般为8bit,最多可以表示256个站的地址。在许多系统中规定,地址字段为“11111111”时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动作;全“0”比特为无站地址,用于测试数据链路的状态。因此实际有效地址共有254个之多,这对一般的多点链路是足够的。但考虑在某些情况下,例如使用分组无线网,用户可能很多,可使用扩充地址字段,以字节为单位扩充。在扩充时,每个地址字段的第1位用作扩充指示,即当第1位为“0”时,后续字节为扩充地址字段;当第1位为“1”时,后续字节不是扩充地址字段,地址字段到此为止。
控制字段C,控制字段用来表示帧类型、帧编号以及命令、响应等,以便对链路进行监视和控制。发送方主站或复合站利用控制字段来通知被寻址的从站或复合站执行约定的操作;相反,从站用该字段作对命令的响应,报告已完成的操作或状态的变化。该字段是HDLC的关键。控制字段中的第一位或第一、第二位表示传送帧的类型,HDLC中有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧
信息字段I,信息字段内包含了用户的数据信息和来自上层的各种控制信息,在I帧和某些U帧中,具有该字段,它可以是任意长度的比特序列,但必须是8比特的整数倍。监控帧(S帧)中规定不可有信息字段。
FCS,帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内。
2.1.4 HDLC帧类型
(1)信息帧(I帧)
信息帧用于传送有效信息或数据,通常简称I帧。
信息帧的控制字段中的N(S)用于存放发送帧序号,以使发送方不必等待确认而连续发送多帧。
N(R)用于存放接收方下一个预期要接收的帧的序号,N(R)=5,即表示接收方下一帧要接收5号帧,换言之,5号帧前的各帧接收到。N(S)和N(R)均为3位二进制编码,可取值0~7。
(2)监控帧(S帧)
监控帧用于差错控制和流量控制,通常简称S帧。S帧的控制字段的第三、四位为S帧类型编码,共有四种不同编码,分别表示:
记忆符 |
名 称 |
比特 |
功 能 |
|
B3 |
B4 |
|||
RR |
接收就绪 |
0 |
0 |
确认,且准备接受下一帧,已收妥N(R)以前的各帧 |
RNR |
接收未就绪 |
1 |
0 |
确认,已收到编号为N(R)之前的帧,暂停接收下一帧 |
REJ |
拒绝接收 |
0 |
1 |
重发编号N(R)以后的帧,但N(R)以前的帧已正确接收 |
SREJ |
选择拒绝 |
1 |
1 |
编号为N(R)的帧未收到,重发此帧 |
00——接收就绪(RR),由主站或从站发送。主站可以使用RR型S帧来轮询从站,即希望从站传输编号为N(R)的I帧,若存在这样的帧,便进行传输;从站也可用RR型S帧来作响应,表示从站希望从主站那里接收的下一个I帧的编号是N(R)。
01——拒绝(REJ),由主站或从站发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,这也暗示N(R)以前的I帧已被正确接收。
10——接收未就绪(RNR),表示编号小于N(R)的I帧已被收到,但目前正处于忙状态,尚未准备好接收编号为N(R)的I帧,这可用来对链路流量进行控制。
11——选择拒绝(SREJ),它要求发送方发送编号为N(R)单个I帧,并暗示它编号的I帧已全部确认。
(3)无编号帧(U帧)
无编号帧因其控制字段中不包含编号N(S)和N(R)而得名,简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能,但是当要求提供不可靠的无连接服务时,它有时也可以承载数据。这些控制功能5个M位(M1、M2、M3、M4、M5,也称修正位)来定义。5个M位可以定义32种附加的命令功能或32种应答功能,但目前许多是空缺的。
2.1.5透明传输——零比特插入法(零比特填充)
在发送端,先扫描整个信息字段(通常用硬件实现,速度快),只要发现5个连续1,则立即填入一个0,因此经过0比特填充后的数据,就可以保证在信息字段中不会出现6个连续的1.这样就避免接收方在接收时,错将信息字段的数据认为是标志字段F.
在接收端,收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。当发现5个连续的1时,就将其后跟着的0删除掉,还原成原来的比特流。这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,不会引起对帧边界的错误判断。
2.1.6 总结、应用场景
(1)应用场合
就系统结构而言,HDLC适用于点到点或点到多点式的结构;就工作方式而言,HDLC适用于半双工或全双工;就传输方式而言,HDLC只用于同步传输;在传输速率方面考虑,HDLC常用于中高速传输。
*(2)传输效率
HDLC开始发送一帧后,就要连续不断地发完该帧;HDLC可以同时确认几个帧;HDLC中的每个帧含有地址字段A,在多点结构中,每个从节点只接收含有本节点地址的帧,因此主节点在选中一个从节点并与之通讯的同时,不用拆链,便可以选择其他的节点通讯,即可以同时与多个节点建立链路。
由于以上特点,HDLC具有较高的传输效率。
(3)传输可靠性
HDLC中所有的帧(包括响应帧)都有FCS,I帧按窗口序号顺序编号,传输可靠性比异步通讯高。
(4)数据透明性
HDLC采用“0比特插入法”对数据进行透明传输,传输信息的比特组合模式无任何限制,处理简单。
(5)信息传输格式
HDLC采用统一的帧格式来实现数据、命令、响应的传输,实现起来方便。
(6)链路控制
HDLC利用改变一帧中的控制字段的编码格式来完成各种规定的链路操作功能,提供的是面向比特的传输功能。
2.2 PPP(点对点协议)
推荐三篇写的不错的PPP协议相关博客
https://blog.csdn.net/answer3lin/article/details/87395991
https://blog.csdn.net/u011857683/article/details/84703473
https://blog.csdn.net/lilonglong1100/article/details/52914021
使用户计算机和ISP(网络服务供应商)进行通信时所使用的的链路层协议
PPP协议不负责可靠传输,不使用序号和确认号,原因:
- 链路层出错的概率不大
- 网络层传输不可靠,链路层的可靠传输不能保证网络层可靠(这里使用的是TCP/IP协议族)
- 帧检验序列FCS可以保证无差错接受(无比特错误)
PPP协议只支持全双工、点对点链路通信。不支持多点线路。PPP是面向字符的,而HDLC是面向比特流的。
与HDLC、以太网帧的区别:
帧格式与HDLC相似。PPP属于广域网范畴,MAC是局域网范畴,按实际情况和环境就选用不同的协议,PPP支持的网络结构只能是点对点,MAC支持多点对多点,HDLC支持站对多站。 这类广域网协议,其帧的结构与以太网的完全不同,当然,PPPOE除外,因为PPPOE是基于以太网上的,而其它的如PPP,FR,X.25等却并不是。
PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力(身份验证)、可以解决IP分配(NCP协议在通过验证后动态分配IP地址)等。
2.2.0 PPP协议的组成
(1)一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU的限制。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路。
(2)链路控制协议LCP。
一个用来建立、配置和测试数据链路连接的协议
当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。
(3)一套网络控制协议NCP,
其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层等。
(4)认证协议
最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。
2.2.1 PPP协议帧结构
协议字段值与其对应的含义:
0x0021 |
IP数据报 |
0x8021 |
网络控制数据NCP |
0xC021 |
链路控制数据LCP |
0xC023 |
安全性认证PAP |
0xC223 |
安全性认证CHAP |
2.2.2透明传输
字节填充法
(a) 当信息字段中出现0x7E时,将每一个0x7E字节转变成2字节序列(0x7D,0x5E)。
(b) 若信息字段中出现一个0x7D的字节,则将其转变成2字节序列(0x7D,0x5D)。
(c) 若信息字段中出现ASCII码的控制字符(即数值小于0X20的字符),则该字符前面需要加入一个0x7D字节,同时将该字符的编码加以改变(+20)。例如,出现0x03,就要把它转为2字节序列(0x7D,0x23)
0比特填充法
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送),此时使用0比特填充法。
具体内容同HDLC 的0比特填充法
2.2.3 PAP(口令验证协议)和CHAP(挑战握手验证协议)
两种认证方式,一种是PAP,一种是CHAP。
内容:
密码鉴权协议(PAP)
PAP提供了一种通过双向握手进行身份确认的简单方法。在LCP 链路建立后,被鉴权者将身份和密码发送给鉴权者,然后等待对方的确认信息。因为用户的身份和密码是通过链路以明码的方式发送的,所以 PAP 不是一种绝对安全的鉴权方法
挑战握手鉴权协议(CHAP)
CHAP 协议使用三方握手来周期性的确定对方的身份,它可以在链路建立后的任何时候进行。当链路建立后,鉴权者向对方发送一个“挑战”信息,对方使用单向链表(one-way hash)函数计算后发送结果,鉴权者将接收到的信息与自己计算出来的结果进行比较,如果两者相同,则鉴权成功;否则,鉴权失败,连接被终止。同 PAP 相比,CHAP 更具有安全性。首先,鉴权过程中使用不断变化的挑战信息和身份标识,这使得攻击者很难有机会进行破解;其次,鉴权由鉴权者控制,它可以随时对对方进行身份确认。使用 CHAP 时,必须配合一种链表算法,目前与 CHAP 配合使用的算法是 MD5 算法。在 PPP 中使用CHAP必须在 LCP 协商时配置相应的鉴权算法为 CHAP。
区别
协议 | 安全性 | 传输报文 | 认证 |
PAP | 稍低 | 明文 | 两次握手, 被叫提出连接请求,主叫响应 |
CAHP | 略高 | hash值,无密码 | 三次握手,主叫发出请求,被叫回复数据包,主叫回应 |
相对来说PAP的认证方式安全性没有CHAP高。
PAP在传输password是明文的,而CHAP在传输过程中不传输密码,取代密码的是hash(哈希值)。
PAP认证是通过两次握手实现的,而CHAP则是通过3次握手实现的。
PAP认证是被叫提出连接请求,主叫响应。而CHAP则是主叫发出请求,被叫回复一个数据包,这个包里面有主叫发送的随机的哈希值,主叫在数据库中确认无误后发送一个连接成功的数据包连接
2.2.4 PPP协议功能特点
(1) 简单:在同一条物理链路上进行点对点的数据传输,对数据链路层的帧不进行纠错,不需要序号,不需要流量控制。
(2) 封装成帧:加入帧界定符。
(3) 透明性:字节填充法。
(4) 多种网络层协议:在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。
(5) 多种链路类型:PPP必须能够在多种类型的链路上运行,例如串行或并行链路。
(6) 差错检测:接收方收到一个帧后进行CRC检验,若正确就收下这个帧,反之则丢弃。
(7) 检测连接状态:自动检测链路是否处于正常工作状态。
2.2.5 PPP协议的工作状态
PPP通讯是两个端点之间的通讯,每一端必须首先发送LCP packets数据来设定和测试数据链路,当链路建立后,peer才可以被认证,认证完成后,再通过发送NCP packets来选定网络层协议,这些后续的通讯就可以在网络层进行了。
PPP协议的六个阶段:
1. 链路不可用阶段: 初始阶段
2. 链路建立阶段: LCP协商,(协商认证方式等)
3. 验证阶段: PAP/CHAP验证
4. 网络层协议阶段:NCP协商
5. PPP会话维持阶段: 维持PPP会话, 定时发送Echo Request报文,并等待Echo Reply报文
6. 网络终止阶段: 终止PPP会话,回到链路不可用阶段。
工作流程
当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接(底层up)。PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
这些分组及其响应选择一些 PPP 参数,和进行网络层配置(此前如有PAP或CHAP验证先要通过验证),NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
PPP实验
一、启用PPP协议
R1: (服务器,开启认证)
conf t
Int s2/0
Ip add 192.168.1.1 255.255.255.0
Clock rate 64000
No shut
Encapsulation ppp //封装PPP
R2:
conf t
Int s2/0
Ip add 192.168.1.2 255.255.255.0
Clock rate 64000
No shut
Encapsulation ppp
二、启用PAP认证(单向)
R1: (服务器,开启认证)
conf t
Int s2/0
Ip add 192.168.1.1 255.255.255.0
Clock rate 64000
No shut
Encapsulation ppp //封装PPP
quit
username R2 password 123(全局模式下配置)
ppp authentication pap //选择认证方式(接口下)
R2:(发送用户名密码)
conf t
Int s2/0
Ip add 192.168.1.2 255.255.255.0
Clock rate 64000
No shut
Encapsulation ppp
ppp pap sent-username R2 password 123(接口下)
三、启用CHAP认证
//接口配置
R1:conf t
Int s2/0
Ip add 192.168.1.1 255.255.255.0
No shut
Exit
Hostname R1//设置自己的主机名
Username R2 password 123 //设置对方账号密码,这里的账号是对方的主机名,密码与对方的保持一致
//进接口,对该接口启用PPP,(默认使用的是HDLC)
Int s2/0
Encapsulation ppp //封装PPP
ppp authentication chap //选择认证方式
Exit
Show int s2/0 //查看接口配置
R2:conf t
Hostname R2
username R1 password 123
Int s2/0
Ip add 192.168.1.2 255.255.255.0
Clock rate 9600
Encapsulation ppp
ppp authentication chap
No shut
测试:
R2:ping 192.168.1.1
不需要手动输入用户名密码。
monologuezjp 发布了47 篇原创文章 · 获赞 10 · 访问量 1万+ 私信 关注