计算机网络 第三章: 差错检测

文章目录

  • [1. 误码的相关概念](#1. 误码的相关概念)
  • [2. 奇偶校验](#2. 奇偶校验)
    • [2.1 定义](#2.1 定义)
    • [2.2 奇偶校验在实践中的应用](#2.2 奇偶校验在实践中的应用)
  • [3. 循环冗余校验](#3. 循环冗余校验)
    • [3.1 循环冗余校验CRC的基本思想](#3.1 循环冗余校验CRC的基本思想)
    • [3.2 发送方CRC操作](#3.2 发送方CRC操作)
    • [3.3 接受方CRC操作](#3.3 接受方CRC操作)
  • [4. 习题](#4. 习题)
  • [5. 解答](#5. 解答)

1. 误码的相关概念

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(称为比特差错):

  • 比特1可能变成比特0
  • 比特0可能变成比特1

在一段时间内,传输错误的比特数量占所传输比特总数的比率称为 误码率(Bit Error Rate,BER)。

提高链路的信噪比,可以降低误码率。但在实际的通信链路上,不可能使误码率下降为零。

使用 差错检测技术 来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一

2. 奇偶校验

2.1 定义

奇校验 是在待发送的数据后面 添加1个校验位,使得添加该校验位后的整个数据中 比特1的个数为奇数。

偶校验 是在待发送的数据后面 添加1个校验位,使得添加该校验位后的整个数据中 比特1的个数为偶数。

通过上图可以看到, 如果采用奇校验, 产生2位误码(数据位和校验位各1位), "1"数量的奇性不改变,不能检出错误。

通过上图可以看到, 采用偶校验, 产生2位误码(数据位和校验位各1位), "1"数量的偶性不改变,不能检出错误。

在所传输的数据中,如果有奇数个位发生误码,则所包含比特1的数量的奇偶性会发生改变,可以检测出误码。

在所传输的数据中,如果有偶数个位发生误码,则所包含比特1的数量的奇偶性不会发生改变,无法检测出误码(漏检)。

在实际使用时,奇偶校验又可分为垂直奇偶校验、水平奇偶校验以及水平垂直奇偶校验。

2.2 奇偶校验在实践中的应用

尽管奇偶校验有其局限性,但它在某些场景中仍然有实际应用,主要原因包括其实现简单和计算开销低。以下是一些常见的应用场景:

  • 内存系统:

    在早期的计算机内存中,奇偶校验被广泛用于检测和纠正单比特错误。现代计算机内存通常使用更复杂的错误检测和纠正技术(如ECC内存),但奇偶校验仍然被用于一些简单的内存保护场景中。

  • 通信协议:

    一些简单的通信协议(尤其是在嵌入式系统中)使用奇偶校验来检测传输中的错误。这种方法对实现简单,适合资源受限的环境。

  • 数据存储:

    在一些简化的数据存储系统中,奇偶校验可以作为初步的错误检测手段。它通常与其他更复杂的错误检测和纠正机制一起使用。

  • 数据传输:

    在某些网络通信中,奇偶校验用作额外的错误检测手段,尤其是在需要快速检测数据错误但不要求高可靠性的应用中。

3. 循环冗余校验

数据链路层广泛使用 漏检率极低 的循环冗余校验(Cyclic Redundancy Check,CRC)检错技术。

3.1 循环冗余校验CRC的基本思想

  1. 收发双方约定好一个生成多项式G(X)。
  2. 发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
  3. 接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。

3.2 发送方CRC操作

3.3 接受方CRC操作

举例

注意:

奇偶校验 循环冗余校验等差错检验技术, 只能检测出传输过程中出现了差错, 但并不能定位错误, 因此无法纠正错误.

要想纠正传输中的差错, 可以使用冗余信息更多的纠错码(例如海明码) 进行前向纠错. 但纠错码开销比较大, 在计算机网络中较少使用.

在计算机网络中, 通常采用检错重传方式来纠正传输中的差错, 或者仅仅丢弃检测到差错的桢, 这取决于数据链路层向上层提供的是可靠传输服务还是不可靠传输服务.

=循环冗余校验CRC具有很好的检错能力 (漏检率极低), 虽然计算比较复杂, 但 非常易于用硬件实现, 因此被广泛应用于数据链路层.


4. 习题

【CRC举例1】 待发送的数据为101001,生成多项式为G(X)= X^3+ X^2+1,计算冗余码。

【CRC举例2】 接收到的信息为101101001,生成多项式为G(X)= X^3+ X^2+1,判断传输是否误码?


5. 解答

【CRC举例1】

【CRC举例2】

相关推荐
AI科技星1 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
liulilittle1 小时前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
行走__Wz1 小时前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ2 小时前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
liulilittle2 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
27669582923 小时前
泡泡玛特app 腾讯企业加固/支付宝加固脱修frida rpc调用
网络·网络协议·rpc·frida·泡泡玛特·ppmt·泡泡玛特app-rpc调用
其实防守也摸鱼4 小时前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞
薛定猫AI4 小时前
【深度解析】OpenRouter Fusion API 技术拆解:多模型融合架构的能力边界与工程实践
网络·架构
сокол4 小时前
【网安-研判-WireShark流量分析】端口扫描流量分析(高频短连接、SYN 扫描、ICMP 存活探测、扫描 IP / 时段 / 工具指纹)
网络·tcp/ip·wireshark
AI科技星5 小时前
数术宇宙:零一无穷创世史诗
开发语言·网络·量子计算·拓扑学