计算机网络之数据链路层与局域网 - 差错控制
作者:互联网
1. 差错控制的基本方式
信号在信道传输过程中, 会受到各种噪声的干扰, 从而导致传输差错。
随机噪声:随机差错或独立差错。
冲击噪声:突发差错。
差错控制: 通过差错编码技术, 实现对信息传输差错的检测, 并基于某种机制运行差错纠正和处理。
差错控制的主要方式:
1. 检错重发: 利用差错编码。
发送端: 待发送数据进行差错编码, 然后发送。
接收端: 利用差错编码检测数据是否出错。 若出错, 接收端请求发送端重发数据加以纠正。
2. 前向纠错(Forward Error Correction, FEC ): 利用纠错编码。
发送端: 对数据进行纠错编码, 然后发送。
接收端: 收到数据, 利用纠错编码进行差错检测, 且纠错。
适用: 单工链路、 对实时性要求比较高的应用。
3. 反馈校验
接收端: 将收到的数据原封不动发回发送端。
发送端: 通过对比接收端反馈的数据与发送的数据确认接收端是否正确接收的已发送数据。 若有不同, 立即重传数据。
优点: 原理简单, 易于实现, 无须差错编码。
缺点: 需要相同传输能力的反向信道, 传输效率低, 实时性差。
4. 检错丢弃: 适用于实时性高的系统。
网络应用对可靠性要求不高, 可以采用不纠正出错数据, 直接丢弃错误数据。
2. 差错编码的基本原理
差错编码原理: 在待传输数据信息基础上, 附加一定的冗余信息。
冗余信息: 与数据信息建立某种关联关系。 例如:
复制一次: 待传输数据为10,传输数据+冗余信息: 1010;
复制两次: 待传输数据为10。 传输数据+冗余信息: 101010
3. 差错编码的检错与纠错能力
1. 编码集的汉明距离
汉明距离: 两个等长码字之间, 对应位数不同的位数。
编码集的汉明距离: 编码集中任意两个码字之间汉明距离的最小值。
差错编码: 检错码和纠错码。
检错编码:编码集的汉明距离 ds=r+1, 则该检错编码可以检测 r 位的差错。
纠错编码:编码集的汉明距离 ds=2r+1, 则该差错编码可以纠正 r 位的差错。
纠错示例:
4. 典型的差错编码
1. 异或 逻辑运算
相同为0,不相同为1。
1异或1为0,0异或0为0,1异或0为1,0异或1为1。
2. 奇偶校验码
最简单的检错码, 利用1位冗余信息实现差错检测。
(1). 奇校验码
1位冗余位, 取值为 “0” 或 “1” , 使得编码后的码字中1的个数为奇数。
例如: 数据10110111, 采用奇校验码编码后的码字为: 101101111;数据10110110, 采用奇校验码编码后的码字为: 101101100。
(2). 偶校验码
1位冗余位, 取值为 “0” 或 “1” , 使得编码后的码字中1的个数为偶数。
例如: 数据10110111, 采用偶校验码编码后的码字为: 101101110;数据10110110, 采用偶校验码编码后的码字为: 101101101。
(3). 奇偶校验码的优缺点
优点: 编码简单、 编码效率高、 开销最小的检错编码;
缺点: 检错率不高。
3. 循环冗余码
循环冗余码(Cyclic Redundancy Check,CRC码):在数据链路层广泛应用的差错编码。
基本思想: 将二进制位串看成是系数为0或1的多项式的系数。
编码过程:
1. 写出多项式对应的位串,位串位数表示为R;
2. 在待编码位串后面添加0,加0的个数为R减1;
3. 用新的待编码位串除以多项式对应的位串;
4. 求得的余数添加在待编码位串后, 即为CRC编码后的码。
编码示例:
接收方在收到带CRC码的帧之后, 怎么判断是否有错?
用收到的位串除以多项式对应的位串,余数为0无错;余数不为0有错, 丢弃。
优选的典型多项式G(x):
标签:编码,差错控制,局域网,差错,链路层,码字,位串,检错,冗余 来源: https://blog.csdn.net/weixin_40629244/article/details/110197622