【3-2】HDLC

前言

前面我们提到了 PSTN(Public Switched Telephone Network) ,今天介绍一种很少见的数据链路层的协议,HDLC!

1. 定义

HDLC(High-Level Data Link Control) 是一种面向比特的同步数据链路层协议,用于在网络节点间建立可靠的数据传输通道。支持全双工通信,适用于广域网中的点对点或多点链路环境,HDLC协议具有高可靠性,通过差错控制(CRC校验)和确认机制确保数据传输无误,同时采用固定帧格式和透明传输机制,减少额外开销。

2. 帧边界

HDLC帧的结构如下图所示:

在这里插入图片描述

我们在通讯线路上接收到一串零一时,都会思考何时开始何时结束。这就涉及到标志,也就是Flag。HDLC规定使用 0111 1110 来当标志,它包含6个连续的1,这在正常的数据流中出现的概率较低,所以拿它做标志。

至于为什么概率较低呢?在ASCII码中,最后一个可显示字符就是 7E 也就是波浪号。后面是不可见的控制字符了。所以此举也颇为合理。

3. 零比特填充

由于2中我们规定了 01111110 来当起始和终止的标志,那么我们的数据部分就不能出现这样的比特,防止接收方提前终止接收。

拿我们怎么办呢?发送方可以在连续的5个1之后填充一个0,然后再在接收方对应连续的5个1后面把0去掉即可。

4. 控制字段

HDLC协议在标志、地址信息之后,紧接着就是控制字段。控制字段最重要的功能就是标识它是 I、S、U 哪种帧。

帧类型区别作用
I帧第一位:为0用于承载数据和控制
S帧前两位为 10差错控制、流量控制
U帧前两位为 11可靠的连接服务中负责链路的建立、拆除以及多种控制功能;提供不可靠的无连接服务时,也可以承载数据

这个控制字段正好是一个字节,它的划分很合理,先标识类型,后按照发与收的顺序分配这8个bit都负责什么。

在这里插入图片描述

4.1. 信息帧(I帧)

I帧的结构如下:

0N(S)P/FN (R)
1bit3bit1bit3bit

其中:

  • N(S) 代表发送帧序号
  • N(R) 代表预期要接收的帧序号:比如 N(R)=6 ,表示下一帧要接收6号帧。
  • P/F 代表是否发送完毕,Poll 为轮询,继续发送;Final为发送完毕。

4.2. 监控帧(S帧)

前面的I帧干了最重要的传输数据的活儿,那么在当时,人们习惯性地将 控制信令和数据信令分开,那S帧就不得不干控制的活儿了。

S帧的结构如下:

10SP/FN (R)
2bit2bit1bit3bit
  • S 代表S帧类型,S帧分四种,S帧主要的作用是流量控制,所以它用四种帧来移动帧下标。
  • N(R) 代表预期要接收的帧序号:比如 N(R)=6 ,表示下一帧要接收6号帧。
  • P/F 代表是否发送完毕,Poll 为轮询,继续发送;Final为发送完毕。
记忆符名称S 字段功能
RR接收准备好0 0确认,且准备接受下一帧,已收妥N(R)以前的各帧
REJ拒绝接收0 1否认,否认N(R)起的各帧,但N(R)以前的帧已收妥
RNR接收未准备好1 0确认,暂停接收下一帧
SREJ选择拒绝接收1 1否认,只否认序号为N(R)的帧

4.3. 无编号帧 (U帧)

U帧的结构如下:

11MP/FM
2bit2bit1bit3bit

它用于在连接的设备之间交换会话管理和控制信息,并且一些 U 帧包含一个信息字段,用于系统管理信息或用户数据。五个类型位(P/F 位之前的 2 位和 P/F 位之后的 3 位)可以创建 32 种不同类型的 U 帧。

它的功能有可以有:断开连接响应、无编号确认响应、设置模式、设置扩展模式、断开连接、设置初始化模式、信息传输……
这个类型的帧相当自由,它更像是一种功能的扩展。

后记

文中有任何错误、遗漏,烦请各位老铁在评论区指出,共同学习进步。

修改记录

更新日期修改内容
2025年5月13日完成初稿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值