1 检错码
检错码C的函数f最好具备以下特点:
1 不同的数据D对应着不同的C
2 C的位数远远小于D且固定
3 函数f计算过程简单
检验和: 计算过程:
1 将数据分为长度固定的数据段
2 根据反码运算规则累加分段后产生的每一段数据
3 将累加结果取反作为检错码C
特点:对于分布在多段数据中的二进制错误,有可能无法检测出
循环冗余码:CRC
生成循环冗余码:
1 假定传输的数据为M(x) = 11000011
2 找一个除数G(x) = 10011, G(x)最高位指数为r = 4
3 11000011 * 2^r = 110000110000
4 110000110000/10011 得到的余数R就是数据11000011的检错码
检错过程:接受到的数据(M(x)` * 2^r - R)/G(x),如果整除,则正确。
关键是找除数G(x),G(x)生成多项式
2 确认和重传
确认:
在数据传输正确的情况下,接收端向发送端发送确认应答(ACK)帧。
发送端只有接受到接受端发送的确认应答帧,才能确认数据正确传输。
重传:
发送端在规定时间内没有接收到确认应答帧,再次发送数据帧
避免重复接受:
数据带一个序号n-1 ,确认应答帧也需要带序号n。说明小于n的数据帧都已经正确接收
连续发送:在前一个数据确认之前发送下一个数据
累计确认:确认序号n就确认所有序号小于n 的数据帧。
差错控制机制小结:
检错码:接收端判断数据是否正确
确认应答:发送端判别数据是否被正确接收
重传:出错数据必须重新发送
序号:避免接收端重复接受数据
原文:http://www.cnblogs.com/leosirius/p/7998675.html