2.1 使用点对点信道的数据链路层
欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!
文章目录
- 前言
- 1 通信信道类型
- 2 数据链路
- 3 帧
- 4 透明传输
- 5 差错检测
前言
在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。本文将系统介绍数据链路层的通信方式、帧封装机制以及如何使用循环冗余检验 (CRC) 实现差错检测,确保无比特差错的传输。
1 通信信道类型
①点对点信道
点对点信道采用一对一的通信方式,在两个设备之间直接传输数据,常用于串行线路或某些专用网络中。
②广播信道
广播信道采用一对多的通信方式,将数据包发送给所有接入信道的设备。在广播信道上,主机需通过共享信道协议进行协调,以避免数据冲突和干扰。

2 数据链路
①链路 (Link)
链路是无源的点到点物理线路段,中间没有任何交换节点,也称为物理链路。
②数据链路 (Data Link)
当链路中添加控制数据传输的协议的硬件和软件后,就构成了数据链路,也称为逻辑链路。
3 帧
①封装成帧 (Framing)
在传输过程中,需要对数据进行封装,在一段数据的前后加上首部和尾部,构成一个帧。首部和尾部的主要作用是进行帧定界,即确定每一帧的开始和结束。
②最大传送单元 (MTU)
MTU 规定了每帧的数据部分的长度上限,避免数据包过大导致传输失败。


③控制字符作为帧定界符
- SOH (Start Of Header):放在帧的首部,表示帧的开始。
- EOT (End Of Transmission):放在帧的尾部,表示帧的结束。

4 透明传输
①定义
透明传输指的是在数据链路层中,无论发送的数据包含何种比特组合,都能确保数据按照原样、不受干扰地传输到接收端。
“透明”意味着即使数据中存在与控制字符(如 SOH、EOT 等)相同的比特模式,这些数据也不会被链路层误解为帧的起始或结束,从而避免数据边界的错误解析。
在数据链路层透明传送数据:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
【情景引入】
如果数据内容中包含的某些字节的二进制代码与控制字符 (如 SOH、EOT) 相同,数据链路层可能会误判帧边界,导致传输错误。

【解决方案】
用“字节填充”或**“字符填充**”法解决透明传输的问题。
在检测到与控制字符冲突的字节时,通过添加特殊字符来避免错误解析。这种填充技术确保无论数据的比特组合如何,都能无误传输,实现透明传输。

5 差错检测
①误码率 (BER)
在数据传输过程中,比特可能出现错误(如 1 被误判为 0,或 0 被误判为 1)。
误码率 (BER) 是一段时间内错误比特占比特总数的比率,用于衡量传输质量。

②循环冗余检验 (CRC)
a. CRC 原理与计算
-
划分数据组:将数据划分为长度为 (k) 比特的组。
-
添加冗余码:CRC 运算会在每组数据后面添加 (n) 位冗余码,构成帧并发送。

-
计算步骤:
- 对数据 (M) 进行模 2 运算,将其扩展为 (k + n) 位。
- 用事先选定的多项式 (P)(长度为 (n + 1) 位)对扩展后的数据进行除法,得到商 (Q) 和余数 (R)。
- 将余数 (R)(长度为 (n) 位)作为冗余码附加到原数据 (M) 后,一起发送。

【CRC 冗余码的计算举例】

③帧检验序列 (FCS)
FCS 是在帧的末尾添加的冗余码,用于检测传输中的比特差错。
【注意】
循环冗余检验 CRC 和帧检验序列 FCS 并不等同:
- CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
- FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
④常用的 CRC 生成多项式
CRC 检验的效果取决于选用的生成多项式。以下是常见的生成多项式:
- CRC-16:(X^{16} + X^{15} + X^2 + 1)
- CRC-CCITT:(X^{16} + X^{12} + X^5 + 1)
- CRC-32:(X^{32} + X^{26} + X^{23} + X^{22} + X^{16} + X^{12} + X^{11} + X^{10} + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1)
【注意】
“无比特差错”与“无传输差错”区别:
- 可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
- 传输差错可分为两大类:
- 比特差错;
- 传输差错:帧丢失、帧重复或帧失序等。
- 在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
- 要实现可靠传输,还必须再加上帧编号、确认和重传等机制。
相关文章:
2.1 使用点对点信道的数据链路层
欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 通信信道类型2 数据链路3 帧4 透明传输5 差错检测 前言 在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。…...
台式机来电自启动设置
在前司时,由于有些工作需要用到台式机,且一到节假日或者突然停电等情况,电脑每次都需要自己手动开机,后来研究了一下,发现可以在BIOS里面更改设置,从而变成关机的情况下,只要来电就能自动开机&a…...
【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...
netdata保姆级面板介绍
netdata保姆级面板介绍 基本介绍部署流程下载安装指令选择设置KSM为什么要启用 KSM?如何启用 KSM?验证 KSM 是否启用注意事项 检查端口启动状态 netdata和grafana的区别NetdataGrafananetdata各指标介绍总览system overview栏仪表盘1. CPU2. Load3. Disk…...
苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理
大语言模型真的可以推理吗?LLM 都是“参数匹配大师”?苹果研究员质疑 LLM 推理能力,称其“不堪一击”!苹果的研究员 Mehrdad Farajtabar 等人最近发表了一篇论文,对大型语言模型 (LLM) 的推理能…...
Python知识点:基于Python工具,如何使用Scikit-Image进行图像处理与分析
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 基于Python的Scikit-Image图像处理与分析指南 在Python的科学计算生态系统中&am…...
MongoDB初学者入门教学:与MySQL的对比理解
🏝️ 博主介绍 大家好,我是一个搬砖的农民工,很高兴认识大家 😊 ~ 👨🎓 个人介绍:本人是一名后端Java开发工程师,坐标北京 ~ 🎉 感谢关注 📖 一起学习 &…...
Oracle AI Vector Search
Oracle AI Vector Search 是 Oracle Database 23ai 中引入的一项新技术,它允许用户在数据库中直接存储和高效查询向量数据。这项技术旨在简化应用程序的开发,并且支持不同维度和格式的向量。以下是 Oracle AI Vector Search 的一些关键特性和优势&#x…...
基于SpringBoot的健身会员管理系统实战分享
在这个充满活力的时代,我们自豪地呈现一款专为健身爱好者和专业人士设计的会员管理系统——一个集创新、效率与便捷于一体的解决方案。我们的系统基于强大的RuoYi-Vue框架构建,采用最新的Spring Boot和Vue3技术,确保了系统的高性能和用户友好…...
Elasticsearch高级搜索技术-结构化数据搜索
目录 结构化数据的存储 示例映射 使用range查询 查询示例 运算符 更多示例 日期查询 示例 结构化数据搜索是Elasticsearch另一个强大的功能,允许用户对具有明确类型的数据(如数字、日期和布尔值)进行精确的过滤和查询。这种类型的搜索通常涉及…...
ffmpeg面向对象——类所属的方法探索
ffmpeg是面向对象的思想写的代码,自然符合oopc的实现套路。这个也是oopc的通用法则。 1.类所属方法oopc的实现形式 ffmpeg抽象出某一类,然后某一类的方法如何调用?你说这还不简单: 对象.对象方法() 或者 对象指针-&g…...
TensorRT-LLM七日谈 Day3
今天主要是结合理论进一步熟悉TensorRT-LLM的内容 从下面的分享可以看出,TensorRT-LLM是在TensorRT的基础上进行了进一步封装,提供拼batch,量化等推理加速实现方式。 下面的图片更好的展示了TensorRT-LLM的流程,包含权重转换&…...
如何使用Pandas库处理大型数据集?
如何使用Pandas库处理大型数据集? 处理大型数据集是数据分析中的一个挑战,尤其是在资源有限的情况下。Pandas是Python中非常流行的数据处理库,但它在处理非常大的数据集时可能会遇到内存限制的问题。因此,我们需要一些策略来提高Pandas处理大型数据集的效率。以下是使用Pa…...
XHR 创建对象
XHR 创建对象 XMLHttpRequest(XHR)是现代Web开发中不可或缺的技术之一。它允许Web开发者通过JavaScript发送网络请求,以在不重新加载整个页面的情况下更新网页的某部分。XHR为开发者提供了一种在客户端和服务器之间传输数据的有效方式,是AJAX(Asynchronous JavaScript an…...
# 在执行 rpm 卸载软件使用 nodeps 参数时,报错 error: package nodeps is not installed 分析
在执行 rpm 卸载软件使用 nodeps 参数时,报错 error: package nodeps is not installed 分析 一、问题描述: 在执行 rpm 卸载软件使用 nodeps 参数时,报错 error: package nodeps is not installed 如下图: 二、报错分析&…...
C++的类和动态内存分配(深拷贝与浅拷贝)并实现自己的string类
首先,我们先写一个并不完美的类: #include<iostream> #include<cstring> using namespace std;class Mystring{private:char *p;int len;static int num;friend ostream& operator<<(ostream& os, const Mystring& c);pu…...
通过观测云 DataKit Extension 接入 AWS Lambda 最佳实践
前言 AWS Lambda 是一项计算服务,使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda,几乎可以为任何类型的应用程序或后端服务运行代码,而且无需执行任何管理。 Lambda Layer 是一个包…...
MySQL-三范式 视图
文章目录 三范式三范式简介第一范式第二范式第三范式 表设计一对一一对多多对多最终的设计 视图 三范式 三范式简介 所谓三范式, 其实是表设计的三大原则, 目的都是为了节省空间, 但是三范式是必须要遵守的吗? 答案是否定的(但是第一范式必须遵守) 因为有时候严格遵守三范式…...
多线程(三):线程等待获取线程引用线程休眠线程状态
目录 1、等待一个线程:join 1.1 join() 1.2 join(long millis)——"超时时间" 1.3 join(long millis,int nanos) 2、获取当前线程的引用:currentThread 3、休眠当前进程:sleep 3.1 实际休眠时间 3.2 sleep的特殊…...
Hi3244 应用指导
Hi3244 是一款DIP8封装高性能、多模式工作的原边控制功率开关。Hi3244内高精度的恒流、恒压控制机制结合完备的保护功能,使其适用于小功率离线式电源应用中。在恒压输出模式中,Hi3244 采用多模式工作方式,即调幅控制(AM࿰…...
OpenClaw日志分析:QwQ-32B任务执行效率监控
OpenClaw日志分析:QwQ-32B任务执行效率监控 1. 为什么需要监控OpenClaw任务执行效率 去年冬天,我部署了一个自动整理会议纪要的OpenClaw工作流。起初运行得很顺利,直到某天早上发现它漏掉了三场重要会议的记录。检查日志才发现,…...
Java+AI:让技术概念落地为企业真实业务价值
在大模型技术普及的当下,不少Java技术栈企业完成了大模型的基础接入,但却陷入了“技术空转”的困境——仅实现了简单的API调用,却未能将AI能力与业务流程深度融合,最终让技术探索停留在概念层面。真正的AI价值,从来不是…...
ROS Noetic + RealSense D435i:从驱动安装到RVIZ点云显示的完整工作流解析
ROS Noetic RealSense D435i:从驱动安装到RVIZ点云显示的完整工作流解析 在机器人视觉项目的初期搭建阶段,开发者往往面临一个关键挑战:如何将深度相机从"硬件连接"快速推进到"可用数据流"状态。以Intel RealSense D435…...
Deepfake Offensive Toolkit安全认证考试结果申诉处理流程
Deepfake Offensive Toolkit安全认证考试结果申诉处理流程 【免费下载链接】dot The Deepfake Offensive Toolkit 项目地址: https://gitcode.com/gh_mirrors/dot/dot Deepfake Offensive Toolkit(以下简称dot)作为一款专业的深度伪造工具&#x…...
MATLAB中扩展卡尔曼滤波与无迹卡尔曼滤波源代码:一键运行,误差对比及显示最大误差数字图像程...
MATLAB编写的EKF和UKF滤波程序源代码 扩展卡尔曼滤波、无迹卡尔曼滤波的MATLAB程序,有误差对比图像和最大误差数字的显示。 只有一个m文件,打开就能运行。 带中文注释。直接双击EKFUKFComparison.m就能看到两个滤波器在非线性系统里的较量。这个文件里塞…...
Hugging Face Hub下载模型文件:hf_hub_download vs snapshot_download保姆级对比指南
Hugging Face Hub模型下载实战指南:hf_hub_download与snapshot_download深度解析 当你第一次在Python项目中集成Hugging Face模型时,是否曾被这两个看似相似的下载函数困扰过?作为Hugging Face生态中最常用的两个下载工具,hf_hub_…...
思源宋体终极指南:免费商用中文字体解决方案从入门到精通
思源宋体终极指南:免费商用中文字体解决方案从入门到精通 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找高质量中文字体而烦恼?思源宋体这款…...
FreeRTOS+LwIP 2.2.0实战:手把手教你理解tcpip_thread的消息处理机制
FreeRTOSLwIP 2.2.0实战:深入解析tcpip_thread的消息驱动架构 在嵌入式网络开发中,理解协议栈的线程模型是构建稳定系统的关键。当FreeRTOS遇上LwIP,tcpip_thread就像一位不知疲倦的邮差,日夜处理着来自各方的网络报文。本文将带您…...
CCC 数字钥匙 Release 3:BLE/UWB与NFC融合的无钥匙进入系统解析
1. CCC数字钥匙Release 3的技术革新 想象一下这样的场景:你双手提着购物袋走向爱车,距离3米时车灯自动点亮,1.5米时车门悄然解锁,拉开车门的瞬间引擎已经启动——这就是CCC数字钥匙Release 3带来的无感化体验。作为车联网联盟&…...
CRaxsRat v7.4隐藏功能挖掘:用自定义脚本实现批量设备自动化运维
CRaxsRat v7.4隐藏功能实战:JSON脚本引擎在企业级自动化运维中的高阶应用 在企业IT运维领域,效率提升往往隐藏在工具的高级功能层。CRaxsRat v7.4的脚本模块就像瑞士军刀的隐藏刀片——90%的用户只停留在远程桌面和文件管理的基础功能,却不知…...
