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

二、组帧

1、字符计数法

帧头部使用一个字符来表示帧的大小(包括第一个计数字符)

(此处一字符=一个字节)

2、字符填充收尾定界法

特定字符来定界帧的首和尾。若帧中数据段出现等同于特定字符的字符内容,前置一个转义字符。(类似于正则表达式)

3、零比特填充首位标志法

允许数据帧的帧包含任意个数的比特,也允许每个字符的编码包含任意比特。

以01111110标志一帧的开始和结束。

发送时,在数据段中每五个连续的1 就插入一个0进行分割。

接收时逆操作,自动删除被插入的 0

4、违规编码

在物理层进行编码时,进行违规编码

如曼切斯特编码:(以太网使用)

高-低:1

低-高:0

可以故意编出 “高-高、 底-底” 这样的违规编码,定界帧的起始和结尾

* 编码:

        数字数据 转换为数字信号的过程(基带信号,非归零、曼切斯特、差分曼切斯特)

        模拟数据 转换成数字信号(PCM脉码调制:采样、量化、编码)

* 调制:

        数字数据 转换成模拟信号的过程(调幅、调相、调频、调幅+调相)

        模拟数据 转换成模拟信号

较为常用的是 3和4

三、差错控制

差错:噪声引起(热噪声、冲击噪声)

ARQ:自动重传请求,遇到某一帧 比特错(位错),主动丢弃,并不去通知发送端,等待超时重传。

通过检错编码来确认错误,并丢弃。

FEC:前向纠错,发现错误位,并加以纠正。

这是纠错编码来实现。

差错控制(位错) 的两种编码:检错编码 、纠错编码。

1、检错编码

冗余编码:

对帧的数据段进行以下处理

发送前:   【有效数据位(信息位)+冗余位】    =》遵守一定的规则。

        不管数据位怎么变,冗余位随之变化,保证帧遵守此规则。

接收端:若收到的帧没用遵从此规则,则数据位发生位错。

1、奇偶校验

码长n = n-1位信息位 +1位 校验位

奇校验:信息位+校验位   比特 1的·个数要求是1 

偶校验:信息位+校验位   比特 1的·个数要求是0

缺点: 只能检测出奇数位的错。

换句话说,如果错了偶数位,就检测不出来错。

举例: 奇校验:100100 +1

如果错了两位 111100 +1 这种是检测不出来的

检错率 50%。

2、CRC循环冗余校验

二进制串,可以用一个k位多项式来表示

比如:1010,可以用4(设为k)次多项式表示:

1*X^3+ 0*X^2+ 1*X^1+ 0*X^0,这个多项式的阶数为 3(即阶数 = k-1)

多项式的系数,要么是1,要么是0,对应于二进制串的每位的值。

多项式的幂,对应二进制串的位数。

算法描述:

假设数据段为m位,发送器生成一个rbit的序列,称为帧检测序列(FCS)。

这样帧就是 m+r位bit构成。

发送方和接收方规定一个多项式G(x) (最高位最低位的系数必须为1)。这个带检验码的帧刚好可以被这个多项式整除,则表示帧是无差错的。

计算如下:

假设数据段为m位

(1)确定生成多项式G(x)的阶数为r   在数据段后面补r个0,

(2)模二运算,G(x)对应的数据串 与 (1)中计算出的串进行模二运算,余数则是冗余码

(3)m位数据低位补全冗余码 即可发送

举例:

要发送的数据是1101 0110 11,采用CRC,生成多项式为10011 【或者它给出 X^4+X+1】,则最终发出的数据是:

1101 0110 11 【1110 】

 

2、纠错编码

海明码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字孪生技术对环境保护有哪些作用?

数字孪生技术在环境保护中的作用不容忽视,为我们创造了全新的可能性和解决方案。在追求可持续发展的今天,数字孪生以其独特的能力,正逐渐改变着环境保护的方式。 数字孪生技术首先在环境监测方面发挥了巨大作用。通过传感器和数据采集设备&a…

k8s RBAC授权普通系统用户对namespace访问权限

背景:最近遇到一个问题,那就是需要给别人共享一下 Kubernetes 的某个资源的使用和访问权限,这个仅仅存在于某个 namespace 下,但是我又不能把管理员权限全都给它,我想只给他授予这一个 Namespace 下的权限,…

20、stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)

本文将使用安富莱的STM32H743XIH板子驱动SDRAM 引脚连接情况 一、CubeMx配置工程 1、开启调试口 2、开启外部高速时钟 配置时钟树 3、开启串口1 4、配置MPU 按照安富莱的例程配置: /* ********************************************************************…

c语言每日一练(8)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

定义行业新标准?谷歌:折叠屏手机可承受20万次折叠

根据Patreon账户上的消息,Android专家Mishaal Rahman透露,谷歌计划推出新的硬件质量标准,以满足可折叠手机市场的需求。Android原始设备制造商(OEM)将需要完成谷歌提供的问卷调查,并提交样品设备进行严格审…

图像去雨、去雪、去雾论文学习记录

All_in_One_Bad_Weather_Removal_Using_Architectural_Search 这篇论文发表于CVPR2020,提出一种可以应对多种恶劣天气的去噪模型,可以同时进行去雨、去雪、去雾操作。但该部分代码似乎没有开源。 提出的问题: 当下的模型只能针对一种恶劣天气…

DIP: NAS(Neural Architecture Search)论文阅读与总结(双份快乐)

文章地址: NAS-DIP: Learning Deep Image Prior with Neural Architecture SearchNeural Architecture Search for Deep Image Prior 参考博客:https://zhuanlan.zhihu.com/p/599390720 文章目录 NAS-DIP: Learning Deep Image Prior with Neural Architecture Search1. 方法…

【开发笔记】在Python中调用Docker,并运行SDK任务

目录 1 背景2 环境准备3 实现流程3.1 连接远程Docker3.1 创建容器3.2 解压SDK3.3 挂载容器卷3.4 运行任务3.5 判断任务状态3.6 容器的停止与销毁 4 可能遇到的问题 1 背景 使用Python,在远程Docker中创建一个容器,并在该容器中运行SDK任务 2 环境准备 …

Python中使用隧道爬虫ip提升数据爬取效率

作为专业爬虫程序员,我们经常面临需要爬取大量数据的任务。然而,有些网站可能会对频繁的请求进行限制,这就需要我们使用隧道爬虫ip来绕过这些限制,提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…

Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL

导航: 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线MySQL高级篇设计模式面试题汇总源码_vincewm的博客-CSDN博客 目录 一、基本区别 1.1 基本特性 1.2 Oracle和MySQL如何做技术选型? 1.3 RDBM…

MQTT协议--技术文档--搭建mqtt服务器--《EMQX单体服务器部署》

产品概览 | EMQX 5.1 文档 什么是EMQX? EMQX 是一款开源 (opens new window)的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理…

读书笔记 |【项目思维与管理】➾ 顺势而动

读书笔记 |【项目思维与管理】➾ 顺势而动 一、企业步入“终结者时代”二、过去成功的经验也许是最可怕的三、做好非重复性的事四、适应客户是出发点五、向知识型企业转变六、速度是决胜条件 💖The Begin💖点点关注,收藏不迷路💖 …