题目
【3-07】要发送的数据为1101011011。采用CRC的生成多项式是P(x)=x^4+x+1。试求应添加在数据后面的余数。若要发送的数据在传输过程中最后一个1变成0,即变成了1101011010,问接收端能否发现?若要发送的数据在传输过程中最后两个1都变成了0,即变成了1101011000,问接收端能否发现?采用CRC检验后,数据链路[1]层的传输是否就变成了可靠的传输?
【3-07】要发送的数据为1101011011。采用CRC的生成多项式是$P(x)=x^{4}+x+1$。试
求应添加在数据后面的余数。
若要发送的数据在传输过程中最后一个1变成0,即变成了1101011010,问接收端能否发现?
若要发送的数据在传输过程中最后两个1都变成了0,即变成了1101011000,问接收端能否发现?
采用CRC检验后,数据链路[1]层的传输是否就变成了可靠的传输?
题目解答
答案
1. 根据 $ P(x) = x^4 + x + 1 $,得 $ P = 10011 $。将 $ M = 1101011011 $ 左移4位得 $ 11010110110000 $。
2. 将 $ 11010110110000 $ 除以 $ 10011 $,得余数 $ R = 1110 $。
3. 发送数据为 $ 11010110111110 $。
4. 若最后一个1变0($ 11010110101110 $),$ R' = 0111 \neq 0000 $,可检测。
5. 若最后两个1变0($ 11010110001110 $),$ R' = 1011 \neq 0000 $,可检测。
6. CRC可提高可靠性,但数据链路层传输仍非完全可靠,因未涉及重传机制。
解析
考查要点:本题主要考查循环冗余校验(CRC)的计算方法及其错误检测能力。
解题思路:
- 生成多项式转换:将生成多项式转换为二进制形式,确定移位位数。
- 数据移位与除法:将原始数据左移生成多项式次数对应的位数,通过二进制除法计算余数,得到CRC校验码。
- 错误检测分析:通过添加CRC后的数据是否能被生成多项式整除,判断错误是否可检测。
- 可靠性讨论:明确CRC的作用边界,指出其无法替代重传机制的局限性。
1. 计算CRC余数
- 生成多项式:$P(x)=x^4+x+1$ 对应二进制 $10011$,需左移4位。
- 数据移位:原始数据 $1101011011$ 左移4位得 $11010110110000$。
- 二进制除法:将 $11010110110000$ 除以 $10011$,余数为 $1110$,即 CRC 码。
2. 错误检测分析
- 最后一个1变0:数据变为 $11010110101110$,计算余数 $0111 \neq 0000$,可检测。
- 最后两个1变0:数据变为 $11010110001110$,计算余数 $1011 \neq 0000$,可检测。
3. 可靠性讨论
- CRC能检测大部分错误,但未涉及重传机制,数据链路层仍非可靠传输。