差错控制
传输中的差错都是由于噪声引起的
全局性
- 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的
- 解决办法:提髙信噪比来减少或避免干扰。(对传感器下手)
局部性
- 外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因
- 解决办法:通常利用编码技术来解决。
为什么要在数据链路层进行差错控制?
因为错误可以尽早发现,不会让一个错误的数据包发送了很长时间到达最终目的地之后才被发现,从而导致网络资源的浪费
# 检错编码
# 奇偶校验码
缺点:只能检测出1,3,5,7…等等奇位数错误,检测成功率位50%
# 循环冗余码CRC
就是用传输数据除以生成多项式得到冗余码
# 实际例子
注释:
1.阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3
2.异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001
3.出书和最后的余数添加到要发送的数据后面,称为帧检验序列FCS
接收方收到数据后进行检测
需要注意的地方
# 纠错编码(海明码)
工作流程:
- 确认校验码位数r
- 确定校验码和数据的位置
- 求出校验码的值
- 检测并纠错
# 第一步 确认校验码位数r
# 第二步 确定校验码和数据的位置
# 第三步 求出校验码的值
注释
1.先是通过二进制位确定有几位。本题中因为最大位10的二进制是1010,所以是4为,将其标注
2.然后从p1开始看,看p1的二进制位的数值和所有信息位的对应位置的数值是否相同,然后找出来这些位
这里有点难理解,这里以p1为例辅助理解,这里找出来的就是P1,D1,D2,D4,D5
然后计算异或值,比如说这里D1=1,D2=0,D4=1,D5=0,就是p1要同时和0,1,0,1进行异或之后得到0,为了标识我加粗原始计算数据
举例:0和1异或得1,1和0异或得1,1和1异或得0,那么p1和0异或得0,p1就是0了
3.其他同理,按顺序计算出P2,P3,P4,然后填入表格
# 第四步 检测并纠错
就是和上面一样,将所有校验位进行运算,得出的结果的值就是错误的位
上次更新: 2024/08/14, 04:14:33