本文主要是介绍计算机网络之差错控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
计算机网络之差错控制
数据链路层的差错控制(纠错编码)
注意链路层的编码和物理层的编码是不一样的。
编码VS编码
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
冗余编码
在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
例如我要给你一串骨肉相连,为了防止运输过程中被人偷吃,我可以添加一块冗余肉,当你收到的时候检查肉的个数是奇数还是偶数,这样就可以知道过程中是否出现差错。
检错编码——奇偶校验码
奇偶校验码的特点:
只能检查出奇数个比特的错误,检错能力为50%
检错编码——CRC循环冗余编码
相除的过程中,是通过异或的逻辑进行相减的,即同0异1。
最终发送的数据是11010110111110
接收端检错过程
把收到的每一个帧都除以同样的除数,然后检查得到的余数R。
1.余数为0,判定这个帧没有差错,接受。
⒉.余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。
一般由硬件完成的事件,都比较迅速。
纠错编码——海明码
相较于检错编码,海明码不仅可以发现错误,还能找到位置纠正错误。
海明距离
两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。
确定校验码位数
确定校验码和数据的位置
求出校验码的值
检错并纠错
101对应的10进制数正好是第五位错了。
检错并纠错
[外链图片转存中…(img-8izEZguS-1666680907775)]
101对应的10进制数正好是第五位错了。
这篇关于计算机网络之差错控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!