计算机网络——32差错检测和纠正

差错检测和纠正

错误检测

EDC = 差错检测和纠错位(冗余位)
D = 数据由差错检测保护,可以包含头部字段
错误检测不是100%可靠的

  • 协议会泄露一些错误,但是很少
  • 更长的EDC字段可以得到更好的检测和纠正效果

在这里插入图片描述

奇偶校验

单bit奇偶校验

检测单个bit级错误

在这里插入图片描述

二维奇偶校检

检测和纠正单个bit错误

在这里插入图片描述

在这里插入图片描述

Internet校检和

目标:检测在传输报文时的错误(如位翻转),(注:仅仅用在传输层)
发送方

  • 将报文段看成16-bit整数
  • 报文段的校检和:和(1’的补码和)
  • 发送方将checksum的值放在’UDP校检和’字段

接收方

  • 计算接收到的报文段的校检和
  • 检查是否与携带校检和字段值一致
    • 不一致:检出错误
    • 一致:没有检出错误,但可能还是有错误

有更简单的检查方法:全部加起来看是不是全1

检验和:CRC(循环冗余校检)

  • 强大的差错检测码
  • 将数据比特 D 看成是二进制的数据
  • 生成多项式 G :双方协商r + 1模式(r次方)
    • 生成和检查所使用的位模式
  • 目标:选择r位CRC附加位R,使得
    • <D,R>正好被G整除(modulo 2)
    • 接收方知道G,将<D,R>除以G,如果非0余数:检查出错误
    • 能检出所有少于r + 1位的突发错误
  • 实际中广泛使用(以太网、802.11 WiFi、ATM)

在这里插入图片描述

CRC例子

需要:
D ⋅ 2 r × O R R = n G D\cdot 2^r \times OR R = nG D2r×ORR=nG
等价于:
D ⋅ 2 r = n G × O R R D\cdot 2^r = nG \times OR R D2r=nG×ORR
等价于:
两边同除G
得到余数 R = … R = \dots R=

R = r e m a i n d e r [ D ⋅ 2 r G ] R =remainder \begin{bmatrix} \frac{D\cdot 2^r}{G} \end{bmatrix} R=remainder[GD2r]

最后求得:
在这里插入图片描述

CRC性能分析

  • 突发错误和突发长度
  • CRC检错性能描述
    • 能够检查出所有的1bit错误
    • 能够检查出所有的双bit的错误
    • 能够检测出所有长度 = r或者 <r 位的错误
    • 出现长度为r + 1的突发错误,检查不出的概率是
      1 2 r − 1 \frac{1}{2^{r-1}} 2r11
    • 出现长度大于r + 1的突发错误,检查不出的概率
      1 2 r \frac{1}{2^r} 2r1

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 15:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 15:10:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 15:10:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 15:10:03       20 阅读

热门阅读

  1. 巧克力(蓝桥杯)

    2024-04-01 15:10:03       20 阅读
  2. 本学期学习计划

    2024-04-01 15:10:03       22 阅读
  3. 【Docker笔记06】【容器编排】

    2024-04-01 15:10:03       15 阅读
  4. Qt 中 :deleteLater 总结

    2024-04-01 15:10:03       17 阅读
  5. VLAN配置及原理

    2024-04-01 15:10:03       14 阅读
  6. 网络常见的端口号

    2024-04-01 15:10:03       16 阅读
  7. 计算机填空知识点(3)完

    2024-04-01 15:10:03       15 阅读
  8. gitee创建仓库后的基本指令

    2024-04-01 15:10:03       16 阅读