数据链路层差错控制的三种方法

今天学习了数据链路层差错控制的三种方法,分别是:

奇偶校验法、循环冗余校验法和海明校验法。

奇偶校验法是通过在信息位的首部添加校验位来实现,分为奇数校验法和偶数校验法。由于偶数校验法更适合通过异或(模2加)的方法实现,故现实中经常采用偶数校验法,即将信息位中的1和校验位的bit一起进行异或运算,如果异或结果为0,则说明总共有偶数个1,否则有奇数个1(错误)。但是如果同时存在两个位置的跳变,则偶数校验法无法检测出。

循环冗余校验法,就是设定一个生成多项式,例如 x 3 + x 2 + 1 x^3+x^2+1 x3+x2+1, 多项式的系数对应1101, 这个多项式为除数。然后在信息位的尾部添加多项式的次数(例子中为3)个bit位。如何确定这3个bit位呢?首先在信息位的末端填上3个0,然后开始进行模2除运算。最后的余数就是这3个校验位的bit. (不说多了,先记这么一点)

最后最厉害的是海明的海明校验法,海明因此发明创造获得了1986年的图灵奖。海明校验法是在奇偶校验发的基础上进一步改进,通过设置多个奇偶校验位,并且每一个校验位放的位置也不是规规矩矩地就放在信息位的首部,而是按照 2 i − 1 2^{i-1} 2i−1的方式来确定位置。例如设置3个校验位 P 1 P 2 P 3 P_1P_2P_3 P1P2P3, 这3个校验码在最终的信息码和校验码混合的整体bitc串中的位置分别是第1位,第2为,第4位。然后每一个校验码负责几个信息位的校验。假如原始信息码为 D 1 D 2 D 3 D 4 D_1D_2D_3D_4 D1D2D3D4, 如何对原始信息码进行分组呢?看下他们在最终bit串中的位置: P 1 P 2 D 1 P 3 D 2 D 3 D 4 P1P2D1P3D2D3D4 P1P2D1P3D2D3D4, D1 D2 D3 D4现在的位置分别是3、5、6、7, 转换成二进制分别是011,101,110,111。

则P1负责第1位为1的信息码:分别是D1,D2,D4;

P2负责第2位为1的信息码:D1,D3,D4,

P3 负责第3位为1的信息码 :D2,D3,D4.

这刚好对应:P3所在的位置刚好是4, 刚好对应最高位(第3位,2^2 = 4)

P2所在的位置刚好是2, 刚好对应第2位(第2位,2^1 = 2)

P1所在的位置刚好是1, 刚好对应第1位(第1位,2^0 = 1)

如果只出现了某一个位置的跳变,则可以定位出跳变的bit,并进行纠错。

但是如果两个位置同时跳变,会出现两个异或结果为1的情况,但是却不知道哪个位置出现了错误。所以海明校验法无法处理两个位置同时跳变的纠错。

学了这么多,只需要知道数据链路层进行差错控制有3种方法:分别是奇偶校验法、循环冗余校验法和海明校验法。海明校验法可以进行1位的纠错,无法进行2位的纠错,可以进行2位的检错。如果2个位置同时跳变了,是可以知道数据中存在错误的,但是不知道到底是哪两个位置出现了错误,这就叫做可以进行两个位置的检错,但是无法进行纠错。此时需要重传数据。

相关推荐
小明同学018 小时前
C++后端项目:统一大模型接入 SDK(四)
服务器·开发语言·c++·计算机网络·chatgpt
2301_8008951010 小时前
计算机网络保研面试(自用版h)
计算机网络·面试
小明同学0112 小时前
C++后端项目:统一大模型接入 SDK(五)
服务器·c++·后端·计算机网络·语言模型
Ether IC Verifier13 小时前
TCP拥塞控制详解
网络·网络协议·tcp/ip·计算机网络·dpu
切糕师学AI13 小时前
计算机网络层次结构详解:从OSI七层模型到TCP/IP四层模型
网络·tcp/ip·计算机网络
Ether IC Verifier15 小时前
TCP三次握手与四次挥手详解
网络·网络协议·tcp/ip·计算机网络
Sagittarius_A*1 天前
H3CSE 高性能园区网:Smart Link 与 Monitor Link 技术详解
网络·计算机网络·h3cse
Python-AI Xenon1 天前
双网卡双网关服务器策略路由配置与持久化完全指南
linux·运维·计算机网络·网络故障排查
绝知此事2 天前
【计算机网络系列 2/3】HTTP协议深度解析:从HTTP1.0到HTTP3.0的演进之路
网络协议·计算机网络·http
绝知此事2 天前
【计算机网络系列 3/3】网络安全与性能优化:HTTPS、WebSocket、负载均衡实战
计算机网络·web安全·性能优化