检错技术
(Cyclic Redundancy Check)
假设待传送的一组数据M = 101001(现在k=6)。我们在M的后面再添加
供差错检测用的n位冗余码一起发送
冗余码的计算
用二进制的模2运算进行2^n*M运算,这相当于在M后面添加n个0
得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得出商
是Q而余数是R,余数R比除数P少1位,而R是n位
- 检验
- 把收到的每一帧都除以同样的除数P(模2运算),然后检查得到的余数R,
若R=0,则判定这个帧没有差错,就接受,
若R ≠0,则判定这个帧有差错,就丢弃。
这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错,只要经过严格挑选,
并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小
- 要做到“可靠传输(即发送什么就收到什么)”就必须加上确认和重传机制