循环冗余校验, 抄书
在每个数据块 (称之为帧) 中加入一个 FCS (Frame CheckSequence,帧检查序列), 用于发送/接收装置比较帧的正确与否
循环冗余检验: CRC (cycli redundancy check)
- M 表示传输的数据
- k 表示传输的数据的长度
- n 位冗余码, 可以用 M * 2^n 得到
- (n+k) 位得到的数除以 收发双方事先商定的长度为 (n+1) 位的除数 P, 计算出 余数 (不是数学上的余数)
- 这个余数成为 帧检验序列 FCS (frame check sequence)
例如
假设 M = 101001 是传输的数据, k 是数据的长度为 6
设 n = 3
构成的序列就是 101001000
假设除数 P 是 1101 (n+1) 位
1101 / 101001000
发送端帧检验序列 FCS 的生成和劫手段 CRC 检验都是由硬件完成, 处理迅速
CRC 无法解决的传输问题: 帧丢失, 帧重复, 帧失序
注: crc32 — 计算一个字符串的 crc32 多项式