题目
3-5 要发送的数据为1101011011。采用CRC的生成多项式是(X)=(X)^-4+X+1。试求应添加在数据后面的余数,并回答问题。(1)数据在传输过程中最后一个1变成了0,接收端能否发现?(2)数据在传输过程中最后两个1都变成了0,接收端能否发现?(3)采用CRC后,数据链路层的传输是否就变成了可靠的传输?
3-5 要发送的数据为1101011011。采用CRC的生成多项式是
。试求应添加在数据后面的余数,并回答问题。
(1)数据在传输过程中最后一个1变成了0,接收端能否发现?
(2)数据在传输过程中最后两个1都变成了0,接收端能否发现?
(3)采用CRC后,数据链路层的传输是否就变成了可靠的传输?
题目解答
答案
(1) 原始数据为1101011011,计算CRC校验码得到1001。如果最后一个1变为0,那么接收端收到的数据为1101011010,计算得到的CRC校验码为0101,与发送端计算的1001不符,所以接收端可以发现错误。
(2) 如果最后两个1都变为0,接收端收到的数据为1101011000,计算得到的CRC校验码为1101,仍与发送端的1001不符,所以接收端还是可以发现错误。
(3) CRC码可以检测一定位数的错误,但是不能保证数据链路[1]层的传输变成可靠的,因为CRC码可能无法检测到所有错误,比如数据顺序反了但CRC码仍符合。所以采用CRC后,数据链路层传输的可靠性会有一定的提高,但不会变成完全可靠的。还需要更高层的协议来实现可靠传输。
解析
考查要点:本题主要考查循环冗余校验(CRC)的计算方法及其在错误检测中的应用,以及对数据链路层可靠传输的理解。
解题核心思路:
- 计算原始数据的CRC校验码:通过将数据视为被除数,生成多项式对应的二进制数作为除数,进行二进制除法运算,得到余数即为校验码。
- 分析错误检测能力:通过修改数据后重新计算CRC,判断余数是否与发送端一致,从而判断错误是否可检测。
- 理解CRC的局限性:CRC能检测大部分突发错误,但无法保证完全可靠传输,需结合高层协议。
破题关键点:
- 生成多项式转换:将生成多项式 $I + X^3 + X^4$ 转换为二进制数 $10011$。
- 余数计算规则:数据末尾补0(补位数等于生成多项式次数),通过逐位异或运算求余数。
- 错误检测原理:若接收端计算的余数非全0,则说明数据传输有误。
(1) 最后一个1变为0
- 原始数据计算:
数据 $1101011011$ 末尾补4个0得 $11010110110000$,以生成多项式 $10011$ 进行二进制除法,最终余数为 $1001$。 - 修改后数据:
最后一个1变为0,数据变为 $1101011010$,补0后为 $11010110100000$。 - 重新计算余数:
通过逐位异或运算,最终余数为 $0101$,与原余数 $1001$ 不同,因此可检测到错误。
(2) 最后两个1均变为0
- 修改后数据:
最后两个1变为0,数据变为 $1101011000$,补0后为 $11010110000000$。 - 重新计算余数:
通过逐位异或运算,最终余数为 $1101$,与原余数 $1001$ 不同,因此可检测到错误。
(3) CRC与可靠传输
- CRC的作用:
CRC能检测突发错误(如单比特错误、部分多比特错误),但无法检测所有错误(如偶数个比特错误、特定模式错误)。 - 可靠性分析:
数据链路层仅通过CRC无法保证完全可靠传输,需结合确认、重传等高层协议。