底层网络数据传输检验方法

查看 73|回复 3
作者:nowheremanx   
最近在学网络通讯,学到 CRC 之类的数据检验方法。这些是普通软件工程师无法触及到的底层问题,挺有意思的。
如果是一个 byte 的数据,也就是 8 个 bit ,假定一个 bit 的出错概率是 p 。那么我浪费一点数据空间,肯定是做到检验的效果。
一个 bit 拿来检验,肯定是能 parity check 了。ABCDEFG(H),最后一个 bit 的 0/1 状态给前面的数据补足,形成偶数个 1 或者奇数个 1 。这个缺点就是无法检验偶数个错误的情况。 求这种情况下,检验出错误发生的概率。
两个 bit 拿来检验,土方法自然是 1 对 3 ,每 4 个 bit 形成一个组合进行 parity check ,比如 ABCDEF(GH)。数学比较差,直觉就是算出 4 个 bit 组合的检验成功的概率,然后做个 1-p(miss)xp(miss)计算。对于 4 个 bit 的概率,我手动枚举相加好像比 7+1 的情况简单很多。两个检验 bit 的位置似乎不影响概率,但是实际应用上有讲究吗?比如 ABC(D)EFG(H)会不会更好?
最后还有个问题,想求问 2 个 bit 还有更好的方法吗? CRC 算法复杂一点,但是好像因为 bit 太少,性能不太能提升。
一算概率就糊涂,过来请教一下,谢谢。

bit, 检验, 概率, parity

lysS   
crc 算是最简单的了, 上层一般只拿它来当哈希用。差错恢复还有 rs 码那些,其实异或,checksum 都能做到差错恢复
dode   
还有海明码
wy315700   
8b/10b 编码可以了解下,坏一个 bit 可以自动修复
您需要登录后才可以回帖 登录 | 立即注册

返回顶部