【3-2】HDLC

news2025/5/14 9:23:16

前言

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

文章目录

  • 前言
  • 1. 定义
  • 2. 帧边界
  • 3. 零比特填充
  • 4. 控制字段
    • 4.1. 信息帧(I帧)
    • 4.2. 监控帧(S帧)
    • 4.3. 无编号帧 (U帧)
  • 后记
  • 修改记录

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日完成初稿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 学习(八)如何打开binlog日志

目录 一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)3.2 永久开启(需修改配置文件)3.3 验证是否开启成功3.4 查看 binlog 内容 四、高级配置建议五、注意事项六、开启后的日常维护 知识回顾&a…

OpenCV进阶操作:光流估计

文章目录 前言一、光流估计1、光流估计是什么?2、光流估计的前提?1)亮度恒定2)小运动3)空间一致 3、OpenCV中的经典光流算法1)Lucas-Kanade方法(稀疏光流)2) Farneback方…

4. 文字效果/2D-3D转换 - 3D翻转卡片

4. 文字效果/2D-3D转换 - 3D翻转卡片 案例&#xff1a;3D产品展示卡片 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">.scene {width: 300px;height…

【AI News | 20250513】每日AI进展

AI Repos 1、iap-diffusion-labs 从零开始带我们构建完整的扩散模型。通过三个精心设计的实验练习&#xff0c;循序渐进地引导我们实现流匹配和扩散模型&#xff0c;从基础 SDE 到条件图像生成&#xff0c;每一步都有详尽指导和完整代码&#xff0c;让复杂理论简单易懂。主要内…

mybatisplus 集成逻辑删除

一开始&#xff0c;没去查资料&#xff0c;后面要被AI气死了&#xff0c;先看它的的话 一开始&#xff0c;看ai的描述&#xff0c;我还以为&#xff0c;不需要改数据库&#xff0c;mybatis-puls自动拦截集成就可以实现逻辑删除&#xff0c;c&#xff0c;最后还是要给数据库加一…

SimScape物理建模实例2--带控制的单质量弹簧阻尼系统

模型下载&#xff1a; 基于simscape&#xff0c;单质量系统带位置控制资源-CSDN文库 在实例1中&#xff0c;我们搭建了不带控制的单质量弹簧阻尼系统&#xff0c;该系统没有外界力量介入&#xff0c;只有弹簧的初始弹力&#xff0c;带着弹簧使劲弹来弹去。 SimScape物理建模实…

PyGame游戏开发(含源码+演示视频+开结题报告+设计文档)

前言&#xff1a; 大二小学期python课上基于pygame做的一个游戏小demo&#xff0c;当时老师花了一天讲解了下python基础语法后&#xff08;也是整个大学四年唯一学习python的时间&#xff09;&#xff0c;便让我们自学网课一周然后交项目&#xff0c;所以做的非常仓促&#xff…

拒绝flash插件打劫!如何在vscode上玩4399小游戏

现在电脑上玩4399都需要flash插件了 这也导致了很多人无法玩到小时候的游戏 今天介绍一款插件 功能强大 即安即玩 首先打开vscode 点开小方框&#xff08;拓展&#xff09;搜索4399 认准4399 on vscode点击安装 安装完毕后 按下 Ctrl Shift P , 输入 4399 on VSCode 或…

learning ray之ray核心设计和架构

我们每天都在处理海量、多样且高速生成的数据&#xff0c;这对计算能力提出了前所未有的挑战。传统的单机计算模式在面对日益复杂的机器学习模型和大规模数据集时&#xff0c;往往显得力不从心。更重要的是&#xff0c;数据科学家们本应专注于模型训练、特征工程、超参数调优这…

C语言while循环的用法(非常详细,附带实例)

while 是 C 语言中的一种循环控制结构&#xff0c;用于在特定条件为真时重复执行一段代码。 while 循环的语法如下&#xff1a; while (条件表达式) { // 循环体&#xff1a;条件为真时执行的代码 } 条件表达式&#xff1a;返回真&#xff08;非 0&#xff09;或假&#x…

JavaScript进阶(九)

第三部分:JavaScript进阶 目录 第三部分:JavaScript进阶 一、作用域 1.1 局部作用域 1. 作用域 2. 局部作用域 函数作用域 块作用域 1.2 全局作用域 1.3 作用域链 1.4 JS垃圾回收机制 1. 什么是垃圾回收机制 2. 内存的声明周期 3. 垃圾回收的算法说明 引用计数…

数据结构与算法分析实验11 实现顺序查找表

实现顺序查找表 1.上机名称2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件4.1.2 实现文件4.1.3 源文件 4.2 实现展效果示 上机体会 1.上机名称 实现顺序查找表 顺序查找表的基本概念 顺序查找表是一种线性数据结构&#xff0c;通常用于存储…

获取高德地图JS API的安全密钥和Key的方法

要使用高德地图JavaScript API&#xff0c;您需要获取API Key和安全密钥(securityJsCode)。以下是获取步骤&#xff1a; 1. 注册高德开放平台账号 首先访问高德开放平台&#xff0c;如果没有账号需要先注册。 2. 创建应用获取Key 登录后进入"控制台" 点击"应…

JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?

在电商行业竞争白热化的当下&#xff0c;B2C 商城系统的性能表现成为决定用户留存与商业成败的关键因素。ZKmall 开源商城凭借 Java 研发与前后端分离架构的深度融合&#xff0c;构建起一套高效、稳定且具备强大扩展性的系统架构&#xff0c;从底层技术到上层应用全方位保障性能…

嵌入式自学第二十天(5.13)

&#xff08;1&#xff09;线性表顺序存储的优缺点&#xff1a; 优点&#xff1a;无需为表中逻辑关系添加额外存储空间&#xff1b; 可以快速随机访问元素&#xff0c;时间复杂度O(1)。 缺点&#xff1a;插入删除需要移动元素O(n&#xff09;&#xff1b; 无法动态存储。 …

快速上手Linux nfs网络文件系统

一、nfs服务的安装与部属 1.安装软件 设置火墙 测试&#xff1a;在客户端上安装nfs-utils后 showmount 服务端IP 2.共享资源 测试&#xff1a; 参数&#xff08;参数写在共享策略文件的括号里&#xff09; 二、nfs客户端动态挂载机制 当客户端和服务器之间没有数据交互时&am…

26考研——中央处理器_异常和中断机制(5)

408答疑 文章目录 五、异常和中断机制异常和中断的基本概念异常和中断的分类异常的分类故障 (Fault)自陷 (Trap)终止 (Abort) 中断的分类可屏蔽中断不可屏蔽中断 异常和中断响应过程关中断保存断点和程序状态识别异常和中断并转到相应的处理程序 八、参考资料鲍鱼科技课件26王道…

数据库实验报告 SQL SERVER 2008的基本操作 1

实验报告&#xff08;第 1 次&#xff09; 实验名称 SQL SERVER 2008的基本操作 实验时间 9月14日1-2节 一、实验内容 数据库的基本操作:包括创建、修改、附加、分离和删除数据库等。 二、源程序及主要算法说明 本次实验不涉及程序和算法。 三、测…

Nature图形复现—两种快速绘制热图的方法

相信大家在科研过程中&#xff0c;会遇到热图&#xff0c;有时候会觉得热图理解起来比较困难&#xff0c;或者觉得绘制热图也比较困难。本期教程我们来深入了解热图、绘制热图。 热图是一种通过颜色深浅或色阶变化来直观展示数据分布、密度或数值大小的可视化工具。它在多个领域…

INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行

Elasticsearch v9.0 版本最近已发布&#xff0c;而 INFINI Console 作为一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台&#xff0c;是否支持最新的 Elasticsearch v9.0 集群管理呢&#xff1f;本文以 INFINI Console v1.29.2 为例&#xff0c;从指标监控、数…