关于千兆以太网项目的补充:FCS、CRC等校验功能

发现以太网这个东西真的涉及到太多了,我没有系统地学过网络通信,所以欠缺的东西还很多,越学发现越需要学的更多。这里补充一下以太网数据传输中的几个“校验功能”和mdc,mdio的传输时序配置。

首先说一下我们采取的以太网通信方式以便单独阅读此文章的朋友能够看懂:我们从下到上采用的是以太网V2 MAC帧协议----->IP协议(IPV4版本)------>UDP协议。

FCS帧检验序列)是在以太网数据帧的尾部的4个字节的序列,而CRC循环冗余校验码,也就是说FCS是真正位于以太网数据帧里面用于检验数据是否出错的序列,而CRC是一种给出FCS检测序列的检验方法。

FCS检验的原理大概如下:在数据打包完毕之后,我们同时也运用CRC来给出了FCS检验序列随着数据帧一并发给接收端,接收端在接收了这个包之后,会再按照CRC的方法计算一次FCS检验序列,如果这个结果和之前的不一样,那么说明再传输过程中出现了错误,就丢弃这个数据包。
CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。
其中模2除法是指普通除法把想减那一步换成按位进行异或计算。如下图:

在这里插入图片描述

具体步骤:

  1. 选择合适的除数
  2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略
  3. 将计算出来的CRC校验码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端在以模2除法方式除以前面选择的除数,如果没有余数,则说明数据帧在传输的过程中没有出错。

注意这个除数实际上是一个多项式,比如X^3+X+1 这个多项式,作为除数的时候就是1011,常用的CRC码生成多项式如下:

在这里插入图片描述

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 帧的 FCS 字段中找到的 CRC 值可以用于检测数据传输过程中是否出现了错误。CRC 值是通过对数据帧中的所有比特进行计算得出的,如果接收方计算出的 CRC 值与发送方在帧中附加的 CRC 值不一致,就说明数据传输过程中出现了错误。这样可以保证数据的可靠性,避免因传输错误而导致的数据损坏或丢失。 ### 回答2: 在计算机网络中,数据传输通常会出现一些错误,例如数据丢失、数据损坏、重复等,这些错误会影响通信的可靠性和效率。为了检测和纠正这些错误,计算机网络中使用了一些校验机制,其中就包括 CRC(Cyclic Redundancy Check)。 帧的 FCS(Frame Check Sequence)字段中存储了计算得到的 CRC 值,CRC 值是通过对帧的数据部分进行计算得到的。所谓的 CRC 计算就是利用数学算法,将数据转化为二进制位的形式,通过对比发送方与接收方计算得到的值是否相同来检测是否有误。CRC 值的计算过程是一种快速且高效的方法,可以有效检查出数据传输中出现的错误。 在数据传输过程中,发送方会将数据和 CRC 值打包在一起发送到接收方,接收方则会对接收到的数据进行校验,计算其 CRC 值并与帧中的 FCS 字段中的 CRC 值进行对比。如果两个 CRC 值相同,则说明数据传输正确,否则说明存在错误,需要进行重传或其他处理。 因此,帧的 FCS 字段中的 CRC 值具有检测数据传输错误的功能,能够提高数据传输的可靠性和效率。在网络中的不同层次中,都会使用类似的校验机制来保证数据的传输准确性。比如在以太网中,就使用了 FCS 字段和 CRC 校验来确保数据的传输正确性。 ### 回答3: 在计算机网络中,帧是数据传输的基本单位,其中的FCS(帧校验序列)是一种错误检测方法,它使用一个 CRC(循环冗余校验)算法计算出来的一个比特串,用于检测在数据传输中可能出现的位错、字节错或其他误差。 当发送方将数据帧发送到接收方时,帧中的FCS也被一并发送。接收方在接收数据时会对帧中的所有字段进行解码,然后会计算FCS的值,与接收到的FCS值进行比对,如果两者相同则表示数据传输没有出现错误,数据可以被接收方正常处理,否则需要从发送方重新发送该帧的数据。 FCS字段中的CRC值通常使用32位或16位表示,使用CRC算法进行计算,CRC算法是一种快速而有效的检验和算法。具体而言,它会在帧的末尾添加一个CRC校验码并进行计算,该校验码可以通过覆盖原始数据的一些位和字节来实现校验CRC方法使用多项式运算,将数据编码为一组多项式,以检测传输过程中发生的任何数据损坏或遗漏,从而保证数据传输的完整性和正确性。 总之,FCS字段中的CRC值的主要功能是检查数据帧的传输是否出现了错误,以确保数据可以被正确接收和处理。它是一种强大的校验和算法,可以有效地保护数据完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值