【问题标题】:How long should a checksum be?校验和应该多长?
【发布时间】:2013-05-15 05:33:04
【问题描述】:

TCP 段包括一个 16 位的校验和字段,IP 数据报和 UDP 数据包也是如此。但是在链路层,CRC 校验和只有 4 位(对于 802.3 和 802.4)。

在频谱的极端部分,仅计算奇偶校验位可能会产生大量误报,其中数据包看起来有效但实际上并非如此,因为偶数位已被更改。另一方面,在只有 4 位就足够的情况下使用 16 位校验和是浪费内存/带宽/金钱。

你如何评估你的校验和应该是多少位?

PS:我以互联网堆栈为例,但这实际上适用于任何协议/软件。

PS2:我不确定要使用哪个论坛。

【问题讨论】:

  • 802.3中的crc校验和是4字节32位CRC。

标签: checksum crc


【解决方案1】:

首先,快速的命名法更正 - 校验和和 CRC 是尝试解决同一问题的两种不同方法:检测在噪声信道中数据传输期间发生的位错误。一般来说,CRC 检测错误的能力更强,但代价是更复杂。

选择正确的错误检测方案需要一些关于信道(例如错误概率)及其噪声特性(例如脉冲、突发)的知识。有论文详细分析了这个问题,并就如何选择错误检测方法给出了一些指导。我建议您尝试这个介绍性演示文稿作为起点:

http://www.ece.cmu.edu/~koopman/pubs/KoopmanCRCWebinar9May2012.pdf

它将让您更好地了解这个美丽地区的复杂性,并为您提供一些其他学习材料的链接。

【讨论】:

    【解决方案2】:

    假设您有一个很好的 CRC 或哈希函数,可以很好地利用这些位,并且假设预期的损坏源不具有使第一个假设无效的一些不寻常的特征,那么您可以简单地设置一个可接受的概率误报,并从中获取位数。或者从位计算概率,看看你是否对此感到满意。概率是:

    p = 2-n

    其中n 是校验值的位数。这就是某些随机数据上的 n 位校验值意外匹配其他数据集上的 n 位校验值的概率。

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2019-12-13
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多