先看两幅图片,分别为路由器的以太网接口、串行接口,每个接口下都有大量的CRC错误。

什么是CRC校验错误

通常,发送方的数据链路层(网卡),将IP报文添加帧头、帧尾,然后硬件芯片将整个帧,编码成0、1二进制流,发送到网线上去。帧尾就是图中的CRC,共4个字节,用于接收方校验帧在网线的传输过程中,帧数据是否发生了改变。

CRC校验覆盖范围

从图中的“Destination MAC”第一位起,到“Payload”最后一位止,是CRC校验的计算范围,发送方将己方的计算得到的CRC校验值,填入帧尾的CRC部分中。

接收方如何校验

接收方的硬件网卡,将接收到的帧分成两部分:

接收到的帧数据

接收到的CRC

使用和发送方相同的循环冗余校验算法(CRC),计算出本地计算的CRC。

如果 接收到的CRC = 本地计算的CRC

则校验成功,帧数据接收成功,等待上层程序前来提取。

否则校验失败,帧数据被丢弃处理。

什么原因造成CRC错误

绝大多数是由于网线质量差造成的,换一根质量好一些的网线即可。

极少一部分是由于网卡的驱动程序、不恰当的配置造成的,需要更新驱动程序。

非常稀少的可能是由于网卡硬件的故障造成的,换一块网卡测试一下便知。