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

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

二、组帧

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.lryc.cn/news/126281.html

相关文章:

  • 数据结构:栈和队列(超详细)
  • AI项目二:基于mediapipe的虚拟鼠标控制
  • EVE-NG 隐藏没有镜像的模板
  • 机器学习理论笔记(一):初识机器学习
  • Programming abstractions in C阅读笔记: p114-p117
  • 分布式应用:Zabbix监控Tomcat
  • 《起风了》C++源代码
  • Grafana展示k8s中pod的jvm监控面板/actuator/prometheus
  • 实例038 设置窗体在屏幕中的位置
  • 合成数据及其在AI领域中的作用
  • Java内存区域(运行时数据区域)和内存模型(JMM)
  • 【HDFS】hdfs的count命令的参数详解
  • Lombok注解在JSON化中,JSON生成额外生成字段问题
  • docker中的jenkins之流水线构建
  • ES中倒排索引机制
  • 一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘
  • 编程练习(1)
  • pytorch安装VAE项目详解
  • SQL-每日一题【1517. 查找拥有有效邮箱的用户】
  • Python web实战之Django 的 WebSocket 支持详解
  • CDN(内容分发网络)
  • 前端高频面试题 Day01
  • 『C语言初阶』第八章 -隐式类型转换规则
  • Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布
  • 【vue】简洁优雅的火花线、趋势线
  • 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典
  • 时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价)
  • Python中的字符串与字符编码
  • 图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006
  • C语言学习笔记---数据的存储详解