底层网络数据传输检验方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
nowheremanx

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

  •  
  •   nowheremanx Sep 15, 2023 2091 views
    This topic created in 958 days ago, the information mentioned may be changed or developed.
    最近在学网络通讯,学到 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 太少,性能不太能提升。


    一算概率就糊涂,过来请教一下,谢谢。
    10 replies    2023-09-16 17:46:44 +08:00
    lysS
        1
    lysS  
       Sep 15, 2023
    crc 算是最简单的了, 上层一般只拿它来当哈希用。差错恢复还有 rs 码那些,其实异或,checksum 都能做到差错恢复
    dode
        2
    dode  
       Sep 15, 2023 via Android
    还有海明码
    wy315700
        3
    wy315700  
       Sep 15, 2023
    8b/10b 编码可以了解下,坏一个 bit 可以自动修复
    null177
        4
    null177  
       Sep 15, 2023
    还有 LDPC,SSD 上常用的,接近香农极限
    另外还有 Turbo 码和 Polor 码
    laminux29
        5
    laminux29  
       Sep 15, 2023
    这些验证方法本质上是一个大集合对小集合的满射但非单射,所以自然存在重复情况。曾经在某数据中心分析流量,链路层最高能达到 3%的错误率。

    完美验证方法异构+双射。异构的意思是数据需要进行变换,来防止数据在相同硬件位置与路线,遭遇相同故障。双射是满射+单射,相当于一条数据再发一次。
    nowheremanx
        6
    nowheremanx  
    OP
       Sep 15, 2023
    @null177 对对对,我满脑子都在想是不是和“香农极限”有关。 像楼上说的,复杂的算法很多,但我现在主要是纠结 8-bit 空间如何做到最优的差错。
    julyclyde
        7
    julyclyde  
       Sep 16, 2023
    @laminux29 确定满嘛?我觉得都不一定满
    mightybruce
        8
    mightybruce  
       Sep 16, 2023
    这不是工程领域需要研究的, 感兴趣要去啃信息论和编码理论的书,前提还要会抽象代数知识。我以前没少算这些,除非你是做安全或分布式存储系统开发的,你大概率是不会遇到的。
    mightybruce
        9
    mightybruce  
       Sep 16, 2023
    数据验证日常生活都多得很, 你的身份证如果有一位是填错的,也是可以纠正的
    条形码和二维码都有一定的纠错能力。
    Reed-Solomon CodesRS 纠错码在存储中用得多。
    mightybruce
        10
    mightybruce  
       Sep 16, 2023
    编码理论是一本非常厚的数学书,密密麻麻都是公式和计算。里面就有要讨论的伽罗华域(Galois Fields),码字,编码空间、编码距离、线性码、非线性码这些。
    About     Help     Advertise     Blog     API     FAQ     Solana     894 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 22:39 PVG 06:39 LAX 15:39 JFK 18:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86