比特级差错检测和纠正:对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正,它们通常是链路层提供的两种服务。
即使采用差错检测比特,也可能有未检出比特差错。
1.奇偶校验
接收方只需要数一数接收的d+1比特中1的数目即可。
如果在采用偶校验方案中发现了奇数个值为1的比特,接收方知道至少出现了一个比特差错,出现了奇数个比特差错。
2.检验和方法
接收方通过对接收的数据(包括检验和)的和取反码,并且检测其结果是否全为1比特来检验检验和。如果这些比特中有任何比特是0,就可以指示出差错。
检验和方法需要相对小的分组开销。例如,TCP/UDP中的检验和只用了16比特。然而,与后面要讨论的CRC相比,它们提供相对弱的差错保护。
3.循环冗余检测CRC
CRC编码也称为多项式编码。
发送方和接收方首先必须协商一个r+1比特模式,称为生成多项式G。
接收方用G去除接收到的d+r比特。如果余数为非零,接收方知道出现了差错;否则认为数据正确而被接收。
上图中,G=110,r=2,传输的比特是10111,除法后余下的11两位正好是CRC比特部分。说明数据比特部分没有余数,所以无差错。
模2除法
例题
这里首先要注意题目中的一个表述——“多项式”,该题目中写作“x4+x3+1”,在有的题目中往往写作“11001”。
G=11001。G的长度是r+1,r=4。CRC比特为后四位:1010。