当前位置: 首页 > news >正文

数据链路层(四):数据链路层协议

目录

  • 1 数据链路层协议
    • 1.1 异步协议
    • 1.2 同步协议
    • 1.3 局域网数据链路层协议
    • 1.4 广域网数据链路层协议

1 数据链路层协议

数据链路层“协议”也称为“规程”,数据链路控制协议也称数据链路控制规程。
数据链路控制协议主要分为异步协议和同步协议两大类。

1.1 异步协议

数据链路层的异步协议是一种通信协议,它允许数据在没有固定时间间隔的情况下传输。这种协议主要用于处理那些不需要连续发送大量数据的通信场景。

  • 传输单位:字符
  • 工作原理:
    • a.发送数据:发送方在准备好发送数据时,首先发送一个起始位,然后是数据位,最后是停止位。
    • b.接收数据:接收方在任何时刻都可以开始接收数据。它通过检测起始位来同步发送方的数据流,并在接收到停止位时结束接收。接收方需要对每个接收到的字符进行处理,如校验、解码等。
    • c.错误检测:异步协议通常包含错误检测机制,如奇偶校验位,以确保数据的完整性。如果接收到的数据出现错误,接收方可以请求发送方重发。
    • d.流量控制:为了防止数据丢失或溢出,异步协议可能采用简单的流量控制机制,如XON/XOFF,其中XON字符表示允许发送数据,而XOFF字符表示停止发送数据。
  • 基本特点:
    • a.字符计数:异步协议通常以字符为单位发送数据。每个字符包括数据位、起始位和停止位。起始位标志着字符的开始,而停止位则表示字符的结束。
    • b.起始位和停止位:起止式通信规程是异步协议的典型,它是靠起始为(逻辑0)和停止位(逻辑1)来实现字符内比特的同步的。这样的设计可以使接收方在任何时刻同步到发送方的数据流。
    • c.无固定时间间隔:异步通信不要求发送方和接收方在固定的时间间隔内交换数据。这意味着发送方可以在任何时刻发送数据,接收方则在准备好接收数据时开始接收。
    • d.流量控制:由于异步协议不保证发送方和接收方的同步,因此可能需要额外的流量控制机制来防止数据丢失或溢出。
  • 缺点:信道利用率很低,原因是:每个传输字符都要添加诸如起始位、校验位、停止位等冗余位
  • 应用场景:一般用于数据速率较低的场合,主要是用在调制解调器中

异步协议是一种灵活的通信方式,适用于数据传输不需要实时性或连续性的场景。它通过起始位和停止位来标识数据的开始和结束,允许数据在任何时刻被发送和接收,同时具备一定的错误检测和简单的流量控制机制。

1.2 同步协议

数据链路层的同步协议是一种在通信系统中用于确保数据正确传输的机制。与异步协议不同,同步协议要求发送方和接收方在固定的时间间隔内交换数据。这种协议主要用于那些需要连续发送大量数据的场景,如文件传输或实时通信。

  • 传输单位:由字符或比特组成的数据块
  • 工作原理:
    • a.建立同步:在通信开始之前,发送方和接收方需要通过交换同步序列来建立同步。这通常涉及到发送方发送一个特定的同步序列,接收方检测到该序列并确认同步。
    • b.发送数据:一旦同步建立,发送方就可以开始按照固定的时间间隔发送数据。每个数据单元都被封装在一个帧中,并以同步序列作为标识。
    • c.接收和处理数据:接收方在检测到同步序列后,开始接收数据帧。接收到的数据帧会被检查错误,并进行必要的处理,如解封装、解码等。
    • d.错误处理:如果接收方检测到错误,它会请求发送方重发受影响的数据帧。这通常涉及到发送一个错误指示信号,如否定应答(NAK)或选择重传(SRT)。
    • e.维持同步:在整个通信过程中,发送方和接收方需要持续维持同步。如果同步丢失,双方需要重新建立同步。
  • 基本特点:
    • a.固定时间间隔:同步协议要求数据按照固定的时间间隔发送。这意味着发送方和接收方必须在相同的速率下工作,以保证数据的连续性和一致性。
    • b.帧结构:在同步协议中,数据通常被组织成帧(frame)。每个帧包含一个完整的数据单元,如一个文件块或一段音频数据。帧的开始和结束由特定的同步序列(如特定的比特模式)标识。
    • c.同步序列:同步序列是同步协议中的关键组成部分,它用于帮助接收方识别帧的开始和结束。同步序列通常是预先定义好的,且具有独特的比特模式,以便于接收方进行同步。
  • 协议分类:
    • 面向字符(字节)的协议(Character-Oriented Protocol)
      • 传输单位:位
      • 实现方式:通过发送特定的比特组合来控制通信过程,比如发送命令或接收响应。这些控制信息可以和普通的数据一起在同一通信链路上发送,以便实时监控和管理链路的状态。简单来说,面向比特的协议能在传输数据的同时,用特定的比特模式来管理和调整通信链路。
      • 基本特点:
        • 通过发送特定的比特组合来控制通信过程
        • 控制信息可以和普通的数据一起在同一通信链路上发送
      • 典型代表:高级数据链路控制HDLC(High-level Data Link Control)
        • 特点:支持半双工和全双工通信
        • 所有面向比特的协议都和高级数据链路控制HDLC有关
    • 面向比特的协议(Bit-Oriented Protocol):
      • 面向字符的协议效率比面向比特的协议低,例如BSC规程,现在不大采用。

同步协议是一种确保数据在固定时间间隔内正确传输的机制,适用于需要连续数据流的通信场景。它通过同步序列来标识数据帧的开始和结束。同步协议要求发送方和接收方在相同的速率下工作,以保证数据的连续性和一致性。

1.3 局域网数据链路层协议

局域网数据链路层协议主要由IEEE 802小组制定,它们都涵盖了物理层和数据链路层。这些标准包括以下几个:

  • Ethernet(以太网)
  • Token-Ring(令牌环)
  • Token-Bus(令牌总线)
  • WLAN(无线局域网)

1.4 广域网数据链路层协议

广域网是基于交换技术的网络,网络中的中间节点负责将数据转发到下一个节点,节点间的线路利用率高。

广域网数据链路层技术复杂,它需要将数据封装成适合广域网传输的帧,以保证数据的可靠传输。

广域网通信子网部分由公共传输系统组成,提供相应服务的一般由电信运营商,如电信、联通、移动等。

广域网数据链路层标准有以下几个:

  • HDLC(高级数据链路控制)
  • X.25(公共分组交换网)
  • PPP(点到点协议)
  • Frame Relay(帧中继)

相关文章:

数据链路层(四):数据链路层协议

目录 1 数据链路层协议1.1 异步协议1.2 同步协议1.3 局域网数据链路层协议1.4 广域网数据链路层协议 1 数据链路层协议 数据链路层“协议”也称为“规程”,数据链路控制协议也称数据链路控制规程。 数据链路控制协议主要分为异步协议和同步协议两大类。 1.1 异步协…...

#Linux系统编程(孤儿进程及僵尸进程以及wait函数)

(一)发行版:Ubuntu16.04.7 (二)记录: (1)概述 在 Unix/Linux 系统中,正常情况下,子进程是通过父进程创建的,且两者的运行是相互独立的&#xff…...

苍穹外卖项目-01(开发流程,介绍,开发环境搭建,nginx反向代理,Swagger)

目录 一、软件开发整体介绍 1. 软件开发流程 1 第1阶段: 需求分析 2 第2阶段: 设计 3 第3阶段: 编码 4 第4阶段: 测试 5 第5阶段: 上线运维 2. 角色分工 3. 软件环境 1 开发环境(development) 2 测试环境(testing) 3 生产环境(production) 二、苍穹外卖项目介绍 …...

学习笔记(16)函数防抖和节流

JavaScript 中的函数防抖(Debounce)和函数节流(Throttle)是两种优化频繁触发事件回调函数执行的技术,它们主要用于限制函数调用的频率,尤其是在处理高频率触发且响应开销较大的用户交互场景时。 函数防抖 …...

【揭秘】空号检测平台挑选秘籍:让每一分钱都花在“刀刃”上

在数字化营销时代,精准的数据是企业制胜的关键。而空号检测平台作为数据清洗的重要工具,其选择的正确与否直接影响到营销效果与成本效益。如何在众多平台中慧眼识珠,找到最适合自己的“黄金搭档”?今天,就跟着企讯通一…...

Linux源码包安装

目录 一、transmission源码包安装 二、 nginx源码包安装 一、transmission源码包安装 1、下载编译环境所需的软件包依赖 2、下载transmision源码包到用户主目录下 https://github.com/transmission/transmission/releases/download/4.0.5/transmission-4.0.5.tar.xz 3、解压…...

【P1328】[NOIP2014 提高组] 生活大爆炸版石头剪刀布

[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题目背景 NOIP2014 提高组 D1T1 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种…...

查看k8s中的secret

kubectl get secret xxx -o yaml -n xxxx参考: Managing Secrets using kubectl...

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五

【简单介绍】 依托先进的目标检测算法YOLOv8与灵活的PyQt5界面开发框架,我们倾力打造出了一款集直观、易用与功能强大于一体的目标检测GUI界面软件。通过深度融合YOLOv8在目标识别领域的出色性能与PyQt5的精美界面设计,我们成功推出了一款高效且稳定的软…...

C# get set 访问器

在C#中get 访问器set 访问器属性的优势例子 在C#中 get 和 set 是访问器(accessors)的关键词,它们用于定义属性的读取和写入行为。属性是一种特殊的类成员,它提供了对字段(field)或计算结果的灵活访问。 …...

【OpenGL】使用 python + Qt + OpenGL 的现代渲染

伴随资源 目录 一、说明二、 PyQt4三、PyOpenGL四、OpenGL 管线五、Python集成开发环境5.1 Emacs配置5.2 pycharm环境 六、你好,OpenGL!七、QGL控件八、平截头体.svg九、定义几何9.1 立即模式与保留模式9.2 使用 VBO 定义 Cube 十、渲染立方体十一、渲…...

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解 一、 什么是VLAN? VLAN中文是“虚拟局域网”。 ​ LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。 ​ VLAN所指的LAN特指使用路由器分割的网络——也就是广…...

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…...

CTF题型 nodejs(1) 命令执行绕过典型例题

CTF题型 nodejs(1) 命令执行绕过 文章目录 CTF题型 nodejs(1) 命令执行绕过一.nodejs中的命令执行二.nodejs中的命令绕过1.编码绕过2.拼接绕过3.模板字符串4.Obejct.keys5.反射6.过滤中括号的情况典型例题1.[GFCTF 2021]ez_calc2.[西湖论剑 2022]Node Magical Login 一.nodejs中…...

Mybatis在SpringBoot中是如何被加载执行

首先依赖于springboot的自动装配EnableAutoConfiguration注解,这个注解最终帮助我们读取mybatis-spring-boot-autoconfigure-x.x.x.jar中的META-INF\spring.factories配置类: org.springframework.boot.autoconfigure.EnableAutoConfiguration\ org.myb…...

数据采集用,集成了主流工业通讯协议

IoTClient 是一个物联网设备通讯协议实现客户端,集成了主流工业通讯协议,包括主流PLC通信读取、ModBus协议、Bacnet协议等。该组件基于.NET Standard 2.0,适用于.NET的跨平台开发,可在Windows、Linux等系统上运行,甚至…...

Django(三)-搭建第一个应用(2)

一、编写更多视图 问题详情页——展示某个投票的问题和不带结果的选项列表。问题结果页——展示某个投票的结果。投票处理器——用于响应用户为某个问题的特定选项投票的操作。 # 1.问题详情页:展示某个投票的问题和不带结果的选项列表 def detail(request,questi…...

求助:配置脚手架代理,跨域问题proxyTable配置无效,访问后显示404?

已经在这里卡了一天了。找了很多解决办法,比如重启,修改proxytable等等,但是每次但是404,求助各位大佬,怎么解决? 1、代码 (1)config的index.js (2) App.v…...

【4月】组队打卡《山有木Python特征工程极简入门》

活动名称 CDA Club 第2期《山有木兮Python数据分析极简入门》组队打卡 活动介绍 本次打卡活动由CDA俱乐部旗下学术部主办。目的是通过数据分析科普内容,为数据分析爱好者提供学习和交流的机会。方便大家利用碎片化时间在线学习,以组队打卡的形式提升学…...

Wireshark 抓包

启动时选择一个有信号的网卡双击打开,或者在 捕获选择里打开选择网卡。 然后输出下面的规则就可以抓到报文了。 最上面的三条是建立连接时的三次握手, 下面是发送数据hello 对应两条数据 最下面的4条是断时的4次挥手...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...