计算机网络:差错控制

2023-10-09 02:10

本文主要是介绍计算机网络:差错控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1,这就是比特差错。比特差错是传输差错中的一种。

通常利用编码技术进行差错控制,主要有两类:自动重传请求ARQ和前向纠错FEC。

  • 在 ARQ方式中,接收端检测到差错时,就设法通知发送端重发,直到接收到正确的码字为止。
  • 在FEC方式中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正。

因此,差错控制又可分为检错编码和纠错编码。

检错编码

检错编码都采用冗余编码技术,其核心思想是在有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判断是否出错。

常见的检错编码有奇偶校验码和循环冗余码。

1.奇偶校验码

奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它由n-1位信息元和1位校验元组成,如果是奇校验码,那么在附加一个校验元后,码长为n的码字中“1”的个数为奇数,这是奇数校验码 ;如果是偶校验码,那么在附加一个校验元以后,码长为n的码字中“1”的个数为偶数。它只能检测奇数位的出错情况,(如果有一组刚好出错,1的奇偶却不变,则无法查清楚是否出错)。

2.循环冗余码

循环冗余码 (Cyclic Redundancy Code, CRC) 又 称多项式码。一个 k 位帧可以视为从 X k − 1 X^{k-1} Xk1 到 $ X^{0}$ 的 k 次多项式的系数序列, 这个多项式的阶数为 k-1, 例如, 1110011 有 7 位, 表示成多项式是 X 6 + X 5 + X 4 + X + 1 X^{6}+X^{5}+X^{4}+ X+1 X6+X5+X4+X+1

给定一个m bit的帧或报文, 发送器生成一个r bit的序列,称为帧检验序列(FCS) 就是余数。这样所形成的帧将由m+r比特组成。发送方和接收方事先商定一个多项式G(x)(最高位和最低位必须为1),使这个带检验码的帧刚好能被预先确定的多项式G(x)整除。接收方用相同的多项式去除收到的帧,如果无余数,那么认为无差错。
假设一个帧有m位,其对应的多项式为Mx),则计算冗余码的步骤如下:

  1. 加0。假设G(x)的阶为r(阶数是指最高位的次数,不是总式子的长度),在帧的低位端加上r个0。
  2. 模2除。利用模2除法(就是异或),用G(x)对应的数据串去除1)中的数据串,得到的余数即为冗余码(共r位,前面的0不可省略)。

注意:循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃。

纠错编码

最常见的纠错编码是海明码,其实现原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。

现以数据码 1010 为例讲述海明码的编码原理和过程。

(1) 确定海明码的位数

设 n 为有效信息的位数, k 为校验位的位数, 则信息位 n 和校验位 k 应满足 n + k ≤ 2 k − 1 n+k \leq 2^{k}-1 n+k2k1 (若要检测两位错, 则需再增加 1 位校验位, 即 k+1 位)
海明码位数为 n + k = 7 ≤ 2 3 − 1 n+k=7 \leq 2^{3}-1 n+k=7231 成立, 则 n 、 k 有效。设信息位为 D 4 D 3 D 2 D 1 ( 1010 ) D_{4} D_{3} D_{2} D_{1}(1010) D4D3D2D1(1010) , 共 4 位, 校验位为 P 3 P 2 P 1 P_{3} P_{2} P_{1} P3P2P1 , 共 3 位, 对应的海明码为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 H_{7} H_{6} H_{5} H_{4} H_{3} H_{2} H_{1} H7H6H5H4H3H2H1

(2)确定校验位的分布

规定校验位 P i P_{i} Pi 在海明位号为 2 i − 1 2^{i-1} 2i1 的位置上, 其余各位为信息位, 因此有:
P 1 P_{1} P1 的海明位号为 2 i − 1 = 2 0 = 1 2^{i-1}=2^{0}=1 2i1=20=1 , 即 H 1 H_{1} H1 P 1 P_{1} P1
$ P_{2}$ 的海明位号为 $ 2{i-1}=2{1}=2$ , 即 H 2 H_{2} H2 P 2 P_{2} P2
$ P_{3}$ 的海明位号为 2 i − 1 = 2 2 = 4 2^{i-1}=2^{2}=4 2i1=22=4 , 即 H 4 H_{4} H4 P 3 P_{3} P3
将信息位按原来的顺序揷入, 则海明码各位的分布如下:

H 7 H 6 H 5 H 4 H 3 H 2 H 1 D 4 D 3 D 2 P 3 D 1 P 2 P 1 \begin{array}{lllllll} H_{7} & H_{6} & H_{5} & H_{4} & H_{3} & H_{2} & H_{1} \\ D_{4} & D_{3} & D_{2} & P_{3} & D_{1} & P_{2} & P_{1} \end{array} H7D4H6D3H5D2H4P3H3D1H2P2H1P1

(3) 分组以形成校验关系

每个数据位用多个校验位进行校验, 但要满足条件: 被校验数据位的海明位号等于校验该数 据位的各校验位海明位号之和。另外, 校验位不需要再被校验。分组形成的校验关系如下。

(4) 校验位取值

校验位 P i P_{i} Pi 的值为第 i 组 (由该校验位校验的数据位) 所有位求异或。 根据(3)中的分组有

P 1 = D 1 ⊕ D 2 ⊕ D 4 = 0 ⊕ 1 ⊕ 1 = 0 P_{1}=D_{1} \oplus D_{2} \oplus D_{4}=0 \oplus 1 \oplus 1=0 P1=D1D2D4=011=0
P 2 = D 1 ⊕ D 3 ⊕ D 4 = 0 ⊕ 0 ⊕ 1 = 1 P_{2}=D_{1} \oplus D_{3} \oplus D_{4}=0 \oplus 0 \oplus 1=1 P2=D1D3D4=001=1
P 3 = D 2 ⊕ D 3 ⊕ D 4 = 1 ⊕ 0 ⊕ 1 = 0 P_{3}=D_{2} \oplus D_{3} \oplus D_{4}=1 \oplus 0 \oplus 1=0 P3=D2D3D4=101=0

所以, 1010 对应的海明码为 1010010(下画线为校验位, 其他为信息位)。

(5)海明码的校验原理

每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查, 构成 k 个校验方程:

S 1 = P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 S 2 = P 2 ⊕ D 1 ⊕ D 3 ⊕ D 4 S 3 = P 3 ⊕ D 2 ⊕ D 3 ⊕ D 4 \begin{array}{l} S_{1}=P_{1} \oplus D_{1} \oplus D_{2} \oplus D_{4} \\ S_{2}=P_{2} \oplus D_{1} \oplus D_{3} \oplus D_{4} \\ S_{3}=P_{3} \oplus D_{2} \oplus D_{3} \oplus D_{4} \end{array} S1=P1D1D2D4S2=P2D1D3D4S3=P3D2D3D4

S 3 S 2 S 1 S_{3} S_{2} S_{1} S3S2S1 的值为 “ 000 ”, 则说明无错; 否则说明出错, 且这个数就是错误位的位号, 如 S 3 S 2 S 1 = 001 S_{3} S_{2} S_{1}=001 S3S2S1=001 , 说明第 1 位出错, 即 H 1 H_{1} H1 出错, 直接将该位取反就达到了纠错的目的。

这篇关于计算机网络:差错控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169592

相关文章

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

[计算机网络]-计网学习笔记-计网知识点总结(附完整笔记)

本笔记是跟着 b站 湖科大教书匠 视频做的笔记,其中图片为视频中的 PPT,加上了自己的注释。         这是原视频链接。大家可以参照着笔记看原视频。视频中的 PPT 做的非常好。         【计算机网络微课堂(有字幕无背景音乐版)】https://www.bilibili.com/video/BV1c4411d7jb?vd_source=1146b07cc2d66

计算机网络知识自学笔记(Chatgpt 回答)

目录 文章目录 phy芯片 lan8720A 和网卡的区别???MAC地址 和IP的区别是啥???1. **用途和作用范围**:2. **层次差异**:3. **分配方式**:4. **持久性和作用**:5. **数据传输中的作用**:小结: 还有网关 是啥 可以举个通俗易懂的例子吗通俗易懂的例子:具体应用:小结: 结合这个案例 可以讲下 ip地址和mac地址分别是啥 和作用分别是啥吗?

第十六篇:走入计算机网络的传输层--传输层概述

1. 传输层的功能 ① 分割与重组数据 一次数据传输有大小限制,传输层需要做数据分割,所以在数据送达后必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机,无法判断数据报文应该交给哪个应用,传输层给每个应用都设置了一个编号,这个编号就是端口,目的端口可以定位报文应该发给哪个应用处理。 ③ 连接管理 面向连接的传输,需要对连接进行管理。 ④ 差错控制和流量控制

计算机网络11——数据库语法2

目录 1、变量 (1)局部变量 (2)会话变量 (3)系统变量 2、判断选择 (1)if选择语法 (2)case选择 3、循环 (1)while循环 (2)其他循环 4、存储过程 5、触发器 6、事务:transaction 事务的特性 使用 1、变量 (1)局部变量 函数里面定义的,变量名  类型 (2)会话变量 本次连接会话有效,不需要定义声明,直接

计算机网络练级第一级————认识网络

网络搁哪? 网络大家应该都很熟悉了,但网络具体是怎么构成的,怎么用的?长话短说 我认为网络就是计算机里的快递业务,从一台计算机中发出,网络接收到数据后,就要把这个数据安全快速完整地发到目标主机上。 大家肯定在想,谁都知道吧,这个人搁这搁这。但主题确实也是从这里开始。 网络的发展史(了解) 独立模式: 这个时期,有点像网络的原始人时期,这个时期每个计算机只能有自己的数据,程序员想要另

计算机网络(运输层)

运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。 进程之间通信流程 以体系结构的角度来看

计算机网络10——数据库语法1

目录 1、sql语句执行顺序 2、多表查询 3、写sql的步骤 4、去重 5、视图 6、自定义函数:function 7、调用函数 1、sql语句执行顺序 一般情况下:1、from 2、where 3、select 如果有分组和having:from 分组 having最后执行 2、多表查询 内联:select * from 表1 inner join 表2 on

计算机网络13——IM聊天系统——网络功能实现——UDP

目录 1、类的成员变量 2、魔鬼数字 3、创建接收数据的线程 4、线程函数 5、防止旧接收到的数据被新数据覆盖掉 6、拷贝用的函数:memcpy_s 7、回收线程资源 8、计数器-1 (1)结束线程工作 (2)关闭句柄 测试代码 1、类的成员变量 同一个类中的多个函数中都要使用的变量应设置为类的成员变量 2、魔鬼数字 解决方法:定义成宏 目的:1、好理解