【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★

简介: 【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★

文章目录

一、 奇偶校验码

二、 奇偶校验码 特点

三、 奇偶校验码 示例

四、 CRC 循环冗余码 ( 原理说明 )

五、 CRC 循环冗余码 计算示例

六、 CRC 循环冗余码 生成多项式





一、 奇偶校验码


奇偶校验码 组成 :


① 信息元 : n − 1 n-1n−1 位 ; 要发送的有效数据 ;


② 校验元 : 1 11 位 ; 冗余码 ;


③ 奇校验码 : 1 11 的个数为 奇数 ; 冗余位 1 11 ;


④ 偶校验码 : 1 11 的个数为偶数 ; 冗余位 0 00 ;






二、 奇偶校验码 特点


奇偶校验码 特点 : 该编码方法 , 只能检查 奇数个 比特错误 , 如果有 偶数个比特错误 , 无法检查出来 , 检错率是 50 % 50\%50% ;






三、 奇偶校验码 示例


奇偶校验码 示例 :


传输 字符 ‘S’ 的 ASCII 码 1100101 11001011100101 , 使用 奇校验码 , 在 数据前 添加 1 11 位 冗余位 1 11 , 表明 1 11 的个数为奇数 , 上述数据的 1 11 的个数为 5 55 个 , 是奇数个 ;


奇数个错误 : 如果接受到的数据中 1 11 的个数是 偶数个 , 此时就能检测出数据错误 ;


偶数个错误 : 如果接收到的数据中 1 11 的个数为 奇数个 , 那么就会判断接收的数据是正确的 ; 无法检查出 偶数个错误 ;






四、 CRC 循环冗余码 ( 原理说明 )


发送端 :


① 要传输的数据 : 5 55 ;


② 生成多项式 : 2 22 ;


③ 计算冗余码 : 使用 要 传 输 的 数 据 生 成 多 项 式 = 5 2 \cfrac{要传输的数据}{生成多项式} = \cfrac{5}{2}

生成多项式

要传输的数据


=

2

5


 , 商是 2 22 , 余数是 1 11 ;


④ 冗余码 : 余数 1 11 就是 FCS 帧检验序列 , 也就是 冗余码 ;


⑤ 最终发送的数据 : 5 + 1 = 6 5 + 1 = 65+1=6




接收端 :


① 接收到的数据 : 6 66 ;


② 生成多项式 : 2 22 ;


③ 判定差错 : 计算 接 收 到 的 数 据 生 成 多 项 式 \cfrac{接收到的数据}{生成多项式}

生成多项式

接收到的数据


 余数是否为 0 00 , 如果余数为 0 00 , 说明传输过程中没有错误 ;




数据链路层 使用 CRC 循环冗余校验编码 , 进行差错控制 , 只能做到无差错接收 , 凡是接收到的数据帧 , 都是正确的 ;






五、 CRC 循环冗余码 计算示例


发送数据 1101011011 1101 0110 111101011011 , 使用 CRC 循环冗余码 , 生成多项式是 10011 1001110011 , 求最终的发送数据 ? ??



最终发送的数据组成 : 原始数据 1101011011 1101 0110 111101011011 + 帧检验序列 FCS ;


计算 帧检验序列 FCS :


① 数据加 冗余码 位数个 0 00 : 首先确定 冗余码 位数 , 冗余码的位数是 生成多项式的 阶 , 即 生成多项式 10011 1001110011 的 总位数 减去 1 11 , 相当于 离散数学 中的生成函数的 最高位次幂 ; FCS 的位数是 4 44 位 ;


生成多项式 是 N NN 位 , 那么阶 就是 N − 1 N-1N−1 位 , FCS 帧检验序列就是 N − 1 N-1N−1 位 ;


数据加 4 44 个 0 00 后为 11010110110000 1101 0110 11 000011010110110000



② 模 2 22 除法 : 数据 加上 0 00 后 , 除以 生成多项式 , 余数就是 FCS 帧检验序列 ;


二进制除法 , 与十进制除法不同的是 , 每个除法相除的计算是 异或操作 ;


异或运算 : 同 0 00 , 异 1 11 ;


image.png

模 2 22 除法计算过程分析 :


11010 1101011010 异或 10011 1001110011 计算得到 1001 10011001 , 然后下一位 1 11 落下来 , 得到 10011 1001110011 ;

10011 1001110011 异或 10011 1001110011 计算得到 00000 0000000000 , 然后下面 5 55 位 落下来 , 得到 10110 1011010110 ;

10110 1011010110 异或 10011 1001110011 计算得到 101 101101 , 然后下 2 22 位落下来 , 得到 10100 1010010100 ;

10100 1010010100 异或 10011 1001110011 计算得到 1110 11101110


最终计算出来的 帧检验序列 是 1110 11101110 ;


最终发送的数据是 : 1101011011 1101 0110 111101011011 1110 11101110




接收端接收数据并校验 :


① 检验过程 : 接收端接收 上述 1101011011 1101 0110 111101011011 1110 11101110 数据 , 将上述数据 与 生成多项式 10011 1001110011 相除 , 如果余数为 0 00 说明该数据帧没有差错 ;


② 结果判定 : 如果余数不为 0 00 , 说明数据帧错误 , 而且不知道哪里出现错误 , 丢弃该数据帧 , 重新发送 ;






六、 CRC 循环冗余码 生成多项式


生成多项式 : G ( x ) = x 3 + x 2 + 1 G(x) = x^3 + x^2 + 1G(x)=x

3

+x

2

+1


相当于 : G ( x ) = x 3 + x 2 + 0 x 1 + x 0 G(x) = x^3 + x^2 + 0x^1 + x^0G(x)=x

3

+x

2

+0x

1

+x

0


对应的模二运算的除数 : 1101 11011101 ;


x xx 的 0 00 次幂系数为 1 11 , 对应第 0 00 位 为 1 11 ;

x xx 的 1 11 次幂系数为 0 00 , 对应第 1 11 位 为 0 00 ;

x xx 的 2 22 次幂系数为 1 11 , 对应第 2 22 位 为 1 11 ;

x xx 的 3 33 次幂系数为 1 11 , 对应第 3 33 位 为 1 11 ;


生成多项式对应的 二进制数 , 总位数是最高次幂加一 , 每一位是对应位前的系数 0 00 或 1 11 ;


目录
相关文章
|
网络协议 网络安全 数据中心
|
缓存 算法 网络协议
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
这篇文章详细介绍了计算机网络中数据链路层的概念、基本问题、点对点信道和广播信道的数据链路协议(如PPP和CSMA/CD),以及局域网和以太网的相关知识。
2679 0
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
|
网络协议 网络架构
【网络】TCP/IP 五层网络模型:数据链路层
【网络】TCP/IP 五层网络模型:数据链路层
266 1
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
354 11
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
存储 安全 网络安全
POP3 协议在计算机网络中的优缺点
【8月更文挑战第19天】
477 0
POP3 协议在计算机网络中的优缺点
|
网络协议 视频直播 SDN
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
162 1
|
网络协议
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
153 0
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
212 1