计算机网络——差错检测
【摘要】 计算机网络——差错检测
差错检测
-
实际的通信链路都是不理想的,比特在传输过程中可能会产生差错:1可能会变成0而0也可能变成1。这种称之为
比特差错
-
在一段时间内,传输错误的比特占所传输比特总数的比特率称之为
误码率
(Bit Error Rate)
使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的问题之一。
以太网的v2的MAC帧(最大长度为1518字节) | ||||
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
目的地址 | 源地址 | 类型 | 数据载荷 | FCS |
- 奇偶校验
在待发送的数据后面添加一位奇偶校验位,使整个数据(包括在添加的校验位之内)中"1"的个数为奇数(奇数验)或偶数校验
如果有奇数个位发生误码,则奇偶性发生变化,可以检测出误码
如果有偶数个位发生误码,则奇偶性不发生改变,不能检测出误码
奇校验——传输过程中产生1位误码
"1"数量的奇性改变,可检出错误 奇校验
奇校验——传输过程中产生2位误码
"1"数量的奇性不改变,无法检出错误 奇校验
偶校验——传输过程中产生1位误码
"1"数量的偶性改变,无法检出错误 偶校验
偶校验——传输过程中产生2位误码
"1"数量的奇性不改变,无法检出错误 偶校验
循环冗余校验CRC
- 收到双方约定好生成一个多项式G(x)
- 发送基于待发送的数据和生成多项式计算错检测(冗余码),将其添加待传输数据的后面一起传输;
- 接收方通过生成多项式来计算收到的数据是否产生了误码
生成多项式举例
G(x) = x^4+ x2 + x + 1
=1 * x^4 +0 * x^3 +1 * x^2 + 1 * x^1 + 1 * x^0
生成多项式各项系数构成的比特串为:10111
差错检测
-
检错码
只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误
-
要想纠正错误的差错,可以使用冗余信息更多的
纠错码
来前向纠错。但纠错码的开销比较大,在计算机网络中较少使用 -
循环冗余校验
CRC
有很好的检错能力(漏检率非常低
)虽热计算比较复杂,但非常易于用硬件实现
,因此被广泛用于数据链路层
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)