视频字幕
循环冗余检验,简称CRC,是计算机网络中一种重要的差错检测方法。它基于多项式除法的数学原理,将待发送的数据块看作一个二进制多项式,通过与预先确定的生成多项式进行除法运算,生成一个固定长度的校验码。这个校验码会附加在原始数据后面一起发送,接收方收到数据后用同样的方法验证数据完整性。
发送方进行CRC计算的具体步骤如下:首先,将k位的原始数据看作一个k减1次的二进制多项式M(x)。然后选择一个r次的生成多项式G(x),其最高位和最低位必须是1。接下来在原始数据M(x)的低位端添加r个零,这相当于将M(x)乘以x的r次方。用这个扩展后的数据除以生成多项式G(x),采用模2运算,也就是异或运算。最后得到的余数R(x)就是帧检验序列FCS,将其附加在原始数据后面一起发送。
让我们通过一个具体实例来演示CRC的计算过程。假设要发送的数据是1101,选择的生成多项式是1011。首先在数据1101后面添加3个零,得到1101000。然后用1101000除以1011,采用模2除法,也就是异或运算。经过逐步计算,最终得到余数010。这个余数就是CRC校验码,将其附加在原始数据后面,最终发送的数据帧就是1101010。
接收方收到数据帧后,需要进行CRC验证来检测是否有传输错误。具体步骤是:首先接收包含原始数据和CRC校验码的完整数据帧,然后用发送方相同的生成多项式对整个接收到的数据帧进行模2除法运算。如果计算得到的余数为零,说明数据在传输过程中没有发生错误;如果余数不为零,则表明数据在传输过程中发生了错误,通常会丢弃该帧或请求重传。
总结一下CRC循环冗余检验的关键要点:CRC基于多项式除法的数学原理,通过模2运算生成固定长度的校验码。发送方将原始数据扩展后除以预定的生成多项式,得到的余数作为校验码附加发送。接收方收到数据后用同样的方法进行验证,如果余数为零则表示数据传输无差错。CRC能够有效检测突发错误和多位错误,是计算机网络中广泛应用的重要差错检测技术。