链路层----差错检测方法

简介: 链路层----差错检测方法

1 奇偶校验(Parity Check

6b6b10c0ce9e45268bbeb575686c2503.png

奇偶校验是最简单的差错检测方法,在每个数据帧中添加一个附加位,使得整个帧中1的个数为奇数或偶数,接收端通过计算接收到的帧中1的个数来检测差错。

更好的方法:二维奇偶校验

6893d4614dc34eadbc484b04c0dc406f.png

2 检验和方法
  1. 校验和(Checksum):校验和是通过计算数据帧中所有字节的累加和,并将结果添加到帧的尾部。接收端同样计算接收到的帧的校验和,然后将两者进行比较,若不一致则说明帧中存在错误。
  2. cc0f292064d54474b58ffdfac8cda577.png
  3. 3 循环冗余检测  (  重点!!!)

循环冗余检测(CRC,Cyclic Redundancy Check):CRC 是一种更强大的差错检测方法,通过对数据帧进行除法运算,生成一个固定长度的冗余码。发送端将生成的冗余码添加到数据帧的尾部,接收端也进行同样的除法运算,将计算出的余数与接收到的冗余码进行比较,若不一致则存在差错。


下面举例

假设发送端要传输以下数据:110101。我们选择一个生成多项式 G(x) = x^3 + x + 1 作为校验多项式。


首先,我们确定生成多项式的位数。由于 G(x) 是一个 3 次多项式,所以需要用 3 位二进制数来表示。


接下来,在要传输的数据后面添加 3 个零作为校验位。于是,发送端实际上发送的是:110101000。


现在,我们使用除法运算来进行 CRC 计算。


步骤 1:将发送的数据(包括附加的 3 个零)作为被除数。


                ________________________

G(x) | 110101000                

                | 1011

                ------------------

                |


步骤 2:进行第一次除法运算。将生成多项式 G(x) 与被除数的最高位对齐,并执行异或操作。


                ________________________

G(x) | 110101000                

                | 1011

                ------------------

                      11101


步骤 3:将得到的结果作为新的被除数,并重复上述步骤,直到完成所有运算。


                ________________________

G(x) | 110101000                

                | 1011

                ------------------

                      111010    

                      1011

                ------------------

                          1001

             

                ________________________

G(x) | 110101000                

                | 1011

                ------------------

                      111010    

                      1011

                ------------------

                         1001

                         1011

                ------------------

                          111


步骤 4:完成所有运算后,得到的余数就是校验位。在这个例子中,余数为 111。


最后,将计算得到的校验位附加到原始数据后面,发送端实际发送的数据为:110101000111。


接收端在接收到数据后,进行相同的 CRC 运算。如果计算得到的余数为零,说明数据未被损坏;如果余数不为零,说明数据可能存在差错。


接收端进行的操作

在接收端进行循环冗余检测(CRC)时,接收到的数据包括传输的原始数据和附加的校验位。


接收端需要执行与发送端相同的除法运算步骤,使用生成多项式 G(x) 对接收到的数据进行除法运算。如果最终得到的余数为零,说明数据未被损坏;如果余数不为零,说明数据可能存在差错。


让我们以前面提到的例子为例:发送端发送的数据为 110101000111,生成多项式为 G(x) = x^3 + x + 1。


接收端使用相同的生成多项式 G(x) 进行除法运算:


步骤 1:将接收到的数据作为被除数。


                ________________________

G(x) | 110101000111                

                | 1011

                ------------------

                |


步骤 2:进行第一次除法运算。将生成多项式 G(x) 与被除数的最高位对齐,并执行异或操作。


                ________________________

G(x) | 110101000111                

                | 1011

                ------------------

                      11101


步骤 3:将得到的结果作为新的被除数,并重复上述步骤,直到完成所有运算。


                ________________________

G(x) | 110101000111                

                | 1011

                ------------------

                      111010    

                      1011

                ------------------

                          1001

             

                ________________________

G(x) | 110101000111                

                | 1011

                ------------------

                      111010    

                      1011

                ------------------

                         1001

                         1011

                ------------------

                          111


步骤 4:完成所有运算后,得到的余数为 111。如果余数为零,则说明数据未被损坏;如果余数不为零,则说明数据可能存在差错。


在这个例子中,接收端计算得到的余数也为 111,与发送端相同。因此,接收端可以确认数据未被损坏。


这是一个简单的循环冗余检测(CRC)的检验过程。请注意,实际中 CRC 的具体细节和计算方法可能有所不同,但基本原理相似。

目录
相关文章
|
7月前
|
网络协议 网络安全 网络架构
【拓展】路由器的附加功能----地址转换和包过滤
【拓展】路由器的附加功能----地址转换和包过滤
55 0
|
6月前
|
缓存 网络协议 算法
不一样的网络协议-------KCP协议
不一样的网络协议-------KCP协议
|
10月前
|
数据采集 数据处理 数据库
三层学习------登录
三层学习------登录
30 0
|
10月前
|
设计模式 缓存 网络协议
Linux网络编程 --- 以太网帧格式简析
Linux网络编程 --- 以太网帧格式简析
100 0
|
缓存 网络协议 网络架构
以太网数据链路层、Ethernet_II帧格式、IEEE802.3帧格式,以太网的MAC地址的组成,ARP地址解析协议的工作原理,单播帧、组播帧、广播帧的区别
数据链路层,Ethernet_II帧格式、IEEE802.3帧格式,帧格式的区分以及链路层每种帧格式有什么作用,怎么区别分辨帧格式,以太网MAC地址的组成,ARP地址解析协议原理、什么是单播帧?什么是组播数据帧?什么是广播帧?...............
以太网数据链路层、Ethernet_II帧格式、IEEE802.3帧格式,以太网的MAC地址的组成,ARP地址解析协议的工作原理,单播帧、组播帧、广播帧的区别
|
网络协议 网络虚拟化 网络架构
ensp 进入交换机子接口、让子接口认识vlanid的数据帧、开启路由器的arp广播:实现pc之间的通信。
ensp 进入交换机子接口、让子接口认识vlanid的数据帧、开启路由器的arp广播:实现pc之间的通信。
268 0
ensp 进入交换机子接口、让子接口认识vlanid的数据帧、开启路由器的arp广播:实现pc之间的通信。
|
传感器 人机交互
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
433 0
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
|
网络协议 网络架构
以太网帧结构与ip报文格式详解
以太网帧结构与ip报文格式详解
1439 0
以太网帧结构与ip报文格式详解
|
网络协议 网络架构