网络设计第六问:错误处理------CRC、校验和、ARQ三重防线
一个 bit 在光纤上传输可能翻转。帧头坏了、包坏了、数据错了------哪一层负责发现?哪一层负责修复?这是差错控制的核心------不是一种算法管全部,是每一层各管各的错。
文章目录
一、物理层------CRC:帧级错误杀手
CRC(循环冗余校验)挂在帧尾------4 字节。以太网强制 CRC。交换机收到一个帧------算 CRC------和帧尾的值比对------不对→丢弃不走。
CRC 不是一定能检测所有错误------当错误模式恰好是 CRC 多项式的倍数时------通过(概率极低------32位 CRC 有 1/2³² 的概率误检)。但比没有 CRC 好------尤其是在误码率 1e-12 的光纤上------漏过的概率可以忽略。
二、传输层------校验和+重传
CRC 检测帧层的错。TCP 有自己的校验和------检测 TCP 段(header+data)的错。错了---不发送 ACK------对面超时------重传。
重传机制------ARQ(自动重传请求)------有三种:
- 停等 ARQ:发一帧→等 ACK→发下一帧。最慢但最简------窗口=1
- 回退 N ARQ:发 N 帧→如果第 K 帧丢了→ACK 丢失→发送端重传从第 K 帧开始的所有帧------后面的帧虽然到了但全丢弃。浪费带宽但简单
- 选择重传 ARQ:只重传丢失的那一帧------效率最高但接收端需要缓存和排序------TCP 就是选传 ARQ
三、应用层------FEC(前向纠错)
CRC 和 ARQ 都是事后检测与补救------要么发现错了丢、要么重传。FEC 在发之前就加上冗余------即使途中有几个 bit 位错------接收端直接根据冗余位纠错------不需要重传。
这种机制最适合延迟极高的场景------深空通信(地球到火星的光速延迟几十分钟------重传等不起)。也用于卫星电视------观众单向接收------没有反向信道可发 NAK------只能靠 FEC。
四、为什么不用更高强度的纠错码
ARQ 需要反向信道------但在双向通信中是标准------错了一次就重传------简单。
FEC 不需要反向信道但带宽成本高------一个视频流加了卷码------带宽增加------但保证了恶劣信道的可收性。在正常的政务专线上------不需要------有双向信道------直接用 ARQ 就够了。
✅ 亮点:用 CRC→校验和→ARQ→FEC 的递进关系讲差错控制不是"一种技术管所有",解释了纠错码和重传在不同信道条件下各自的选择原因。扩展方向:5G 里的 Polar 码、LDPC 与 Turbo 码的工程差异。