MAC协议之CRC校验码
来源:互联网 发布:js 浮点数 编辑:程序博客网 时间:2024/06/05 16:33
ForeWord
Everybody,我胡汉三又回来了ヾ(●´∀`●) ヾ
又到了我装逼的时间了,今天我才发现。学习真的会使人快乐。这不,刚才舍友找我开黑,我谈定的回了一句:
毕竟我这样的好学生已经不多了,嗯,目测以后工作了也会是个好员工٩(๑>◡<๑)۶ 。感觉胸前的红领巾又鲜艳了呢。。。
好了,闲话少说,还是回到正题,今天介绍的是CRC校验码。分别从以下几个方面来阐述:
1. CRC是什么鬼
2. 它是怎么校验的(举例说明)
~tips:全文阅读需3min~
Are You Ready,
以太网桢协议—CRC校验码
以太网桢协议
同样先来一波文字(๑◡๑):
在TCP/IP协议中,不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应⽤用程序处理。
所以,IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧。
以太网的帧格式如下所示:
图有是盗的,想必你们已经习惯了 (*❦ω❦)
在图中,帧末尾就是CRC校验码。
此外,对其他字段解释如下:
注:
- 以太网帧中的数据长度规定最小46字节,最大1500字节。ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最⼤大传输单元MTU,不同的网络类型有不同的MTU。如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。
- ifconfig命令的输出中也有“MTU:1500”。注 意,MTU这 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
- MAC地址是指网卡的硬件地址,长度是48位。是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。
CRC校验码
关于CRC校验,百度词条里有详细解释:
这就是它的概念。
可以看出,CRC校验无非是通过一种特殊的计算方法(除法)在发送端生成CRC校验码,之后将其发送给数据接收端进行校验,检查接收端数据的正确性与完整性的一种方法。相当于一种查错机制。
所以,CRC校验就是一种生成CRC校验码的算法。此算法可以看做一种特殊的除法
既然是算法,那么关键就在于思想。
网上有不少讲解其算法的文章,只要你学过计算机组成原理,就能轻松理解。这里有一篇不错的文章:
CRC校验码
看完后,相信你会懂的。
当然,百度词条也是一个不错的选择:CRC校验—百度百科
The End
博主给的两条链接都能帮助你理解CRC校验算法,所以这里就不详细描述了。他们写的都比我好,就让我偷点懒吧
- MAC协议之CRC校验码
- ModbusRTU协议中CRC校验码的算法
- CRC校验码
- CRC校验码
- CRC校验码
- CRC校验码
- CRC校验码
- CRC校验码
- Modbus-RTU通讯协议中CRC校验码的计算步骤
- Modbus-RTU通讯协议中CRC校验码的计算步骤
- 国际标准协议之CRC
- 实现CRC校验码
- CRC循环冗余校验码
- CRC循环冗余校验码
- java实现CRC校验码
- CRC计算校验码过程
- CRC校验码的源代码
- 如何计算CRC校验码
- UVa839
- 经典的排序算法
- HTML 速查列表
- PHP常用缓存技术的总结
- hdu2089 不要62
- MAC协议之CRC校验码
- Linux C++ 无锁编程 cas
- web学习记录
- GIT学习总结
- zhihu-spider之Swagger——zhihu-spider开源项目使用技术详解(其二)
- 系统c盘扩容
- Activiti删除Key相同的所有流程定义
- JS模块化方案
- Struts2和SpringMVC比较