计算机网络——数据链路层(一)

【计算机网络】一图让你看懂!计算机网络模型之数据链路层 计算机网络模型之数据链路层 一、数据链路层 数据链路层处于 物理层 和 网络层 之间,数据链路层一般是在物理层提供的服务基础上向网络层提供服务。其最基本的服务是将源网络层的数据可靠地传输到相邻节点的目标机网络层。 二、数据链路层的子层组成 1.Mac介质访问控制子层 Mac介质访问控制子层:指定数据与如何与物理层进行传输,并与物理层通信。 2.LLC逻辑链路控制子层 LLC逻辑链路控制子层:识别协议类型,并对数据进行封装并通过网络层进行传输。 如下图 三、数据链路层的Mac地址 Mac地址又称以太网地址, 阅读详情

计算机网络——数据链路层(一)

一、数据链路层概述

1.1 功能

  • 为网络层提供服务,良好的服务接口。
  • 保证数据传输的有效、可靠。
    1. 处理传输错误:差错检测和控制。
    2. 流量控制:基于速率、基于反馈。

数据链路层处理的协议数据单元PDU是数据帧
在这里插入图片描述
帧是由帧头帧尾和载荷构成。
帧头里面主要包含有:定位需要的地址、物理地址信息。
帧尾主要是做帧的效验 。

1.2 成帧

数据链路层数据链路层使用物理层提供的服务,物理层处理的是位流,数据电路层处理的是帧。

将原始的位流分散到离散的帧中叫成帧,成帧的方法有:

  • 字符统计法
  • 带字节/字符填充的标志字节法
  • 比特填充的比特标志法
  • 物理层彪马违例法

1.3 字符统计法

发送方:在每个帧头部中的第一个字段,标识帧的长度,总共有多少字符数。
接收方:通过第一个字段,就知道帧有几个字符,在哪里结束帧。
在这里插入图片描述
优点:简单
缺点:一旦出错,无法恢复。
现在已经很少使用

1.4 字节填充的标志字节法

这种方法考虑了错误之后重新同步的问题,让每一帧都用一些特殊的字节作为开始和结束。

缺点:

  • 容易造成帧界的混淆——增加转义字符
  • 依赖于八位字符

使用这种方法会出现一个问题:传输的数据中含有标记,会和帧界混淆。
针对这种情况需要增加转义字符
在这里插入图片描述
如上图是几种常见的增加转义字符的情况。
比如第一行,当头部出现FLAG时,在其前面加上ESC标记。

1.5 比特填充的标志比特法

  • 这是一种面向二进制的帧格式,把所有需传输的数据以比特位一字排开,并以特殊的位模式01111110作为帧标志,即一个帧的的开始。
  • 当帧中出现一个与帧标志相同的位串01111110,则在5个1后插入一个0,即变成01111101,接收方自动删除第5个1后的0。这称为位填充法(零比特填充法),也称为透明传输
  • 如果由于干扰,一个帧没内有正确接收,则可扫描接收串,一旦扫描到01111110,即新的一帧从此开始。

在这里插入图片描述

1.6 物理层编码违例法

在曼切斯塔编码中,连续的高电平或连续的低电平可用作帧边界

  • 采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位。
  • 数据0:低-高电平对
  • 数据1:高-低电平对
  • 高高电平对和低低电平对没有使用,可用作帧边界。

二、差错处理概述

任何信道,即使是光纤,也会出错。

处理错误主要有两种手段:
纠错:恢复出真确的来。
检错:仅仅检出错误,不恢复,通常伴随重传。

错误主要有两类错误:
单个错误:分散在各块数据中。
突发错误:集中于一个数据块,整个块都是错误。

2.1 纠错码

一种前向纠错技术:发现错误,从错误中恢复出正确的来。因为其需要太多的冗余位,纠错开销太大,在有线网络中极少使用,主要用于无线网络中。

2.2 检错码

只能发现错误,不能从错误中恢复,但可采用重传。计算机网络中主要采用循环冗余码(CRC)。

2.3 码字

包含数据位和检验位的n位单元。

2.4 海明距离

两个码字的海明距离:两个码字之间不同位的数目。

2.5 全部码字的海明距离

全部码字任意两个码字之间海明距离的最小值。

2.6 海明距离的意义

如果海明距离为d,则一个码字需要发生d个1位才能变成另外一个码字

2.7 海明距离与检错的关系

海明距离为d+1的编码能检测出d位差错。

因为在距离为d+1的检验码中,只改变d位的值,不可能产生领另一个合法码,如奇偶校验码,海明距离为2,能查出单个错。

例:检错码(奇偶位)

在这里插入图片描述

例:偶校验

在这里插入图片描述

2.8 海明距离与纠错的关系

海明距离为2d+1的编码,能纠正d位差错。因为此时如果一个码字发生差错,他仍然距离原来的码字距离最近,可以直接恢复为该码。

例:纠错码

在这里插入图片描述

海明距离增加,纠错能力也增加。
当一个系统中海绵距离增加的时候,合法码字就少了,即传输效率降低。

三、纠1位错的海明码

3.1 计算冗余位

纠一位错需要的冗余位(emm,这个我没看懂)。
在这里插入图片描述
在这里插入图片描述

3.2 海明纠错码

在这里插入图片描述

3.3 如何决定每个数据位的校验位

在这里插入图片描述
在这里插入图片描述

3.4 校验位的计算

例如 m = 7

在这里插入图片描述
在这里插入图片描述
如上图,使用偶校验,计算出n = 11,将要传输的信息码1001000写进去。
然后根据一个校验集合里的1的个数是偶数的规则,进行填数。
例如1的校验集合是所有的奇数,在这个信息码中对应的是B3 B5 B7 B9 B11,分别是:10100,有2个1,偶数,所以1校验位填上0。
以此类推。
在这里插入图片描述
上图清晰的列出了对应数据位填充的校验位。

3.5 海明码纠错过程(接收端)

  1. 将差错计数器置0,counter = 0
  2. 当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
  3. 如果发现某一校验位和它所检测的集合的奇偶性不正确,就将检验位的编号加到差错计数器中,最终counter=0则无差错,≠0则counter的值便是出错的位。

例

在这里插入图片描述

3.6 利用海明码纠正突发错误

  1. 将连续的k个码字按行排列成矩阵
  2. 发送数据时,按列发送,每列k位
  3. 如果一个突发错误长度是k位,则在k个码字中,至多只有一位受到影响,正好可以用海明码纠错恢复。
    在这里插入图片描述

四、检错码

纠错需要较多的冗余位,信道利用率不高。在局域网中,主要使用的事检错码:奇偶校验码、互联网校验和、循环冗余校验码等等。

4.1 奇偶校验

奇偶位取值等同于队数据进行模2和运算。
在这里插入图片描述
在这里插入图片描述

4.2 校验和

校验和通常是按照N位码字来进行模2加运算,发放将运算结果附在数据报文末尾,作为校验位。例如:16位的互联网补码校验和。

4.3 循环冗余检错码CRC

4.3.1 原理
  • 任何一个k位的帧看成一个k-1的多项式
    例如10110001看成 x^6 + x^4 + x^3 + x^0
  • 生成多项式 G(x) G(x) 为 r 阶
  • 设m位帧的多项式M(x) m>r 即M(x) > G(x)
  • 如果 x^r M(x) / G(x) = Q(x) + R(x) 其中Q(x) 为商 R(x)为余数,则(x^r M(x) - R(x)) / G(x) = Q(x) 即 余数为 0

(我看的不是很明白。)

4.3.2 仿真例子

在这里插入图片描述

4.3.3 模2加运算

实际上就是异或运算,相同得0,相异得1

4.3.4 举例

那个原理实在是太抽象了,看了这个例子好像又懂了。
在这里插入图片描述
设定G(x)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用得到的T(x) 1001111010110110000 去除G(x) 10011
得到余数1110,然后用T(x)去减余数1110,得到CRC码11010110111110
在这里插入图片描述
对没错就是这样

在这里插入图片描述

接收方的检查是这样的
在这里插入图片描述
如果整错那么就是正确的。fine

4.3.5 生成多项式国际标准

这个就是那个G(x)
在这里插入图片描述

4.3.6 CRC小结

小结一下
在这里插入图片描述

计算机网络——数据链路层(二)

计算机网络——数据链路层(二)

计算机网络 数据链路层(一)点对点协议与广播信道 计算机网络(五) 学习计算机网络过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。 —— 数据链路层 —— 文章目录计算机网络(五)—— 数据链路层 ——1. 使用点对点信道的数据链路层1.1 数据链路和帧1.2 三个基本问题1.2.1 封装成帧1.2.2 透明传输1.2.3 差错控制1.2.3.1 冗余码的计算1.2.3.2 循环冗余检验的原理说明1.2.3.3 ... 阅读详情

相关推荐

汽车OTA安全启动:ECU双验签机制与实战排障指南

汽车OTA升级中的安全启动,本质是基于密码学的信任建立过程,其核心在于ECU上电时对固件镜像的可信验证。该机制依托硬件信任根(Secure Boot ROM),通过RSA/ECDSA等非对称算法完成签名验签,确保升级包未被篡改且来源可信。技术价值体现在防止恶意固件注入、支撑功能安全(ASIL)与信息安全(ISO/SAE 21434)合规。典型应用场景包括4S店远程升级、BMS控制器固件更新及多ECU协同启动。实践中,验签名失败往往源于证书链断裂、Flash布局错位或KeyUsage字段不匹配等底层工程细节,

weixin_29314405的博客 77

复习计算机网络——第三章记录(1)

计算机网络

m0_51273315的博客 1345

在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX

在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX,不依赖盗版破解的Keil MDK、IAR等软件。

wangyuewu08的博客 3374

海明码笔记

海明码简析

卖糖葫芦大叔的博客 1082

单片机开发者的福音:3步搞定VSCode智能补全(IAR工程+Clangd实战)

本文为单片机开发者提供了一套高效解决方案,通过EIDE插件将IAR工程导入VSCode,并生成关键的compile_commands.json文件,结合Clangd配置,仅需三步即可实现精准的智能代码补全、一键跳转等现代编辑功能,大幅提升嵌入式开发效率。

coffee的博客 523

【AI基础学习系列】二十一、一文搞懂GPT

本文系统介绍了GPT(Generative Pre-trained Transformer)模型的核心内容。首先阐述了GPT的本质是基于Transformer的预训练语言模型,其创新在于使用单向Transformer编码器。其次详细解析了GPT架构,包括输入层的Tokenization和Embedding处理、Transformer解码器堆叠的核心组件(自注意力机制、前馈神经网络等)以及预训练和微调两阶段训练过程。接着说明了GPT的工作原理:通过无监督预训练学习语言统计规律,再结合有监督微调适应具体任务。

ASH_GUARDIAN的博客 1687

计算机网络( 二十二)-数据链路层(补充)

1.链路link:结点------>相邻结点的物理线路。 2.数据链路:物理线路+通信协议,通信协议(通信规程)用来控制数据的传输。 3.最常用网络适配器(硬件、软件)来实现协议。适配器包括了数据链路层和物理层两层的功能。 4.数据链路层的协议数据单元PDU------帧。 PDU是指对等层之间传递的数据单位。 物理层的PDU------数据位 数据链路层的PDU------数据帧 网络层...

TxyITxs的博客 1141

别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)

本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。

weixin_29248611的博客 500

计算机网络 - ISO/OSI模型各层PDU

封装首先先回顾下ISO/OSI模型的结构:那什么是PDU呢?PDU:指协议数据单元(Protocol Data Unit),它是在不同网络层次之间数据传递的单位。具体来说,物理层的PDU是比特流(bit),数据链路层的PDU是数据帧(frame),网络层的PDU是数据报(packet),传输层的PDU是数据段(segment),而其他更高层次的PDU则是数据(data)。

m0_74078647的博客 1万+

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 384

Mstar的Monitor方案OSD 菜单制作(五)——icon绘制

Mstar的Monitor方案(五)————绘制icon

android 系统定制开发那些事 1807

纠错编码——海明码

纠错校验——海明校验

qq_53388188的博客 6828

【异常】安装hermes-agent提示Git克隆仓库网络中断 fetch-pack: unexpected disconnect while reading sideband packet

本文分析了Git克隆仓库时出现网络中断错误的常见原因及解决方案。报错表现为连接被远程主机关闭、管道破裂或数据包意外终止,通常由网络不稳定、仓库过大或配置不当引起。提供了5种优先级排序的解决方法:1)使用浅克隆减少数据量;2)优化Git配置参数;3)切换网络或配置代理;4)检查SSH密钥设置;5)改用HTTPS方式克隆。特别推荐先尝试「浅克隆+HTTPS」组合方案快速验证,若问题持续再根据具体报错深入排查。文中包含详细的命令示例和配置说明,适合不同网络环境下的Git用户参考。

奶爸的编程之路,也就一周冷个三天 1418

【计算机网络】3数据链路层①

计算机网络第三章第一部分

Winkyyyyyy的博客 1424

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【计算机网络】数据链路层(一)

由于收发双方各自的工作速率和缓存空间的差异,可能出现发送方的发送能力大于接收方的接收能力的现象,如若此时不适当限制发送方的发送速率(即链路上的信息流量),前面来不及接收的帧将会被后面不断发送来的帧“淹没”,造成帧的丢失而出错。原因是,在网络中信息是以帧为最小单位进行传输的,所以接收端要正确地接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束(因为接收端收到的是一串比特流,没有首部和尾部是不能正确区分帧的)。源机器在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性。...

haoweixl的博客 3222

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机网络之数据链路层(一)

本章最重要的内容:链路(link):数据链路(data link):数据链路层协议数据单元:帧 使用点对点信道的数据链路层使用点对点信道的数据链路层使用点对点信道的数据链路层用控制字符作为帧定界符透明:用“字节填充”或“字符填充”法解决透明传输的问题 在传输过程中可能产生比特差错:1->0,0->1. 循环冗余检验CRC原理: CRC冗余码的计算 CRC冗余码的计算CRC冗余码的计算举例: 帧检验序列FCS广泛使用的生成多项式P(X) CRC-16= X16 +X15 + X2+ 1 CRC-CCITT =

m0_51456787的博客 4204

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

精炼计算机网络——数据链路层(一)

计算机网络于每周三和周日更新,摘录自《计算机网络》一书,属于学习笔记类型,适合于用于期末复习的读者和考研课本梳理的学生。

qq_56086076的博客 3118

【计算机网络】第三章·数据链路层(一)

链路:从一个节点到相邻节点到一段物理线路(中间无其他交换节点)数据链路:在链路上传输的数据,除链路本身外,还有一些必备的通信协议来控制数据传输,把 实现这些协议的硬件和软件加入链路中构成数据链路;其中的通信协议由网络适配器(物理层+数据链路层)和软件驱动程序实现帧:数据链路层对等实体在水平方向上进行逻辑信息通信的协议数据单元PDU。

hehelm的博客 1269

计算机网络之数据链路层(一)

一.数据链路层简介 数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型。 (1)点对点信道。这种信道使用一对一的点对点通信方式。 (2) 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上可以连接多个计算机,因此必须使用专用的共享信道协议来协调这些计算机的数据发送。 ...

qq_47200272的博客 1418

计算机网络学习笔记(一)---物理层,数据链路层以及网络层

计算机网络学习笔记---物理层,数据链路层以及网络层

prague6695的博客 1431

计算机网络与技术实验报告一:数据链路层实验

华为的ENSP可以模拟华为公司AR路由器、x7系列交换机的大部分特性,可以用来仿真局域网组建、虚拟局域网配置、各种路由(RIP、OSPF、BGP)配置、地址转换(静态、动态)配置、访问控制列表配置、虚拟专用网配置、小规模网络系统组建等实践任务,例如在“路由配置”的实践任务中,利用ENSP模拟的路由器AR1220可以做基于OSPF的单区域、多区域的路由配置,甚至可以结合实际小型网络布局模拟实现拓展性的路由配置任务。配置路由器和交换机的连接端口,配置路由器的VLANIF,地址设置为PC机的网关地址。

qq_61584181的博客 2289

计算机网络学习:第三章数据链路层(一)

3.1 数据链路层概述 数据在主机与主机之间的传输过程在之前已经提到过,同时我们也提到过在五层网络体系结构之中如果只是单纯研究某一层的话我们可以只观察水平方向对应的实体(emm就是只看该层而忽略其他层),如下: 而在学习之前,我们需要先清楚几个概念: 然后我们来介绍数据链路层的三个重要问题: 封装成帧 如图所示,两个主机通过一段链路互连,两台主机都会对所发送或接收的数据包进行五个层次的封装或解封: 发送方将待发送的数据通过应用层封装成为应用层协议数据单元,然后交付给运输层: 运输层为其添加运输

qq_53324833的博客 4231

计算机网络(一)数据链路层

数据链路层 所谓链路即一个节点到相邻节点的一段物理路线,中间无其他交换节点,两个计算机之间的通信路径中包含许多段这样的链路,这是物理链路;数据链路则是在物理线路中控制数据传输的通信协议 传输单位为帧(将网络层的数据报封装,即添加头部和尾部),任务是将网络层传下来的ip数据报组装成帧,然后带有差错控制,流量控制,可靠传输等功能 数据链路层在物理层的基础上向网络层提供服务(无确认的无连接服务,有

丹妮专栏 879

计算机网络原理笔记 第三章 数据链路层(一)

计算网络原理 第三章 数据链路层数据链路层3.1 使用点对点信道的数据链路层3.1.1 数据链路层和帧3.1.2 三个基本问题3.2 点对点协议 PPP3.2.1 PPP协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP协议的工作状态3.3 使用广播信道的数据链路层3.3.1 局域网的数据链路层3.3.2 CSMA/CD协议3.4 使用广播信道的以太网3.4.1使用集线器的星形拓扑3.4....

JhonnyLee的博客 4891

【计算机网络】数据链路层(一):数据帧和物理寻址

本博文较为详细的介绍数据链路层的各个方面。在网络协议中的位置及其作用,包括数据帧封装,差错检测,差错纠正及流量控制等方面。并涉及到网络协议各层的数据封装以及网络通信中数据传输通道的简要分析。这算是对数据链路层的一个详细的学习笔记

wenqian 'blog 2万+

计算机网络数据链路层复习总结一(超详细!!!)

网络中的主机、路由器等都必须实现数据链路层。

2201_76022666的博客 228
上一篇: 计算机网络——物理层(二)
下一篇: 计算机网络——数据链路层(二)
PdKingLiu
博客等级 码龄9年 89粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值