MAC协议之CRC校验码

来源:互联网 发布:js 浮点数 编辑:程序博客网 时间:2024/06/05 16:33

ForeWord


Everybody,我胡汉三又回来了ヾ(●´∀`●) ヾ
1

又到了我装逼的时间了,今天我才发现。学习真的会使人快乐。这不,刚才舍友找我开黑,我谈定的回了一句:
2

毕竟我这样的好学生已经不多了,嗯,目测以后工作了也会是个好员工٩(๑>◡<๑)۶ 。感觉胸前的红领巾又鲜艳了呢。。。

好了,闲话少说,还是回到正题,今天介绍的是CRC校验码。分别从以下几个方面来阐述:

1. CRC是什么鬼
2. 它是怎么校验的(举例说明)

~tips:全文阅读需3min~

Are You Ready,
3


以太网桢协议—CRC校验码


以太网桢协议

同样先来一波文字(๑๑):

在TCP/IP协议中,不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应⽤用程序处理。

所以,IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧。

以太网的帧格式如下所示:

5
图有是盗的,想必你们已经习惯了 (*❦ω❦)

在图中,帧末尾就是CRC校验码。

此外,对其他字段解释如下:

字段 Meaning 目的地址 MAC地址 源地址 MAC地址 类型 三种值,分别对应IP、ARP、RARP

注:

  1. 以太网帧中的数据长度规定最小46字节,最大1500字节。ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最⼤大传输单元MTU,不同的网络类型有不同的MTU。如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。
  2. ifconfig命令的输出中也有“MTU:1500”。注 意,MTU这 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
  3. MAC地址是指网卡的硬件地址,长度是48位。是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。

CRC校验码

关于CRC校验,百度词条里有详细解释:

123

这就是它的概念。

   可以看出,CRC校验无非是通过一种特殊的计算方法(除法)在发送端生成CRC校验码,之后将其发送给数据接收端进行校验,检查接收端数据的正确性与完整性的一种方法。相当于一种查错机制。

所以,CRC校验就是一种生成CRC校验码的算法。此算法可以看做一种特殊的除法

既然是算法,那么关键就在于思想。

网上有不少讲解其算法的文章,只要你学过计算机组成原理,就能轻松理解。这里有一篇不错的文章:

CRC校验码

看完后,相信你会懂的。

当然,百度词条也是一个不错的选择:CRC校验—百度百科


The End


博主给的两条链接都能帮助你理解CRC校验算法,所以这里就不详细描述了。他们写的都比我好,就让我偷点懒吧

666