数据链路层-循环冗余检验
2016-11-18 19:06
134 查看
数据链路层面对的三大问题之一:差错检测
目前广泛使用的是循环冗余检验(CRC)
举个例子说明它的原理:
比如我们需要传的数据为101001,用k记录一共有多少位,即k=6。然后CRC运算需要把待传的数据的末尾加上用于检测的n位冗余码,可以简单的理解为在数据后面加上n个0。假设n=3,这样循环冗余检验的被除数101001000就得到了。除数是通信双方商定好的,现在一般使用的方式是用多项式来表示除数,比如P(x)=x^3+x^2+1,就得到除数P=1101。现在就可以开始进行检验了,注意除数P的位数等于n+1。运算的方法和除法类似,只是相减变成了异或而已。经过运算,得到了余数为001,它被称为帧检验序列FCS。截至现在做的一切的运算,都只是在发送端进行的。为了检验帧是否无比特差错接收了,是在接收端检验的。计算出的帧检验序列FCS会附加在帧的尾部一起发送。
接收端接收到后,会把FCS取出,添加到数据部分的末尾,得到除数101001001,再次和除数P=1101相除,如果得到的余数等于0,那么就证明此次传输时无比特传输的。如果余数不等于0,那就证明这个帧有差错。无比特传输和可靠传输有很大的不同的,比如发送端发送了5个帧,但是接收端只接收到了3个帧,此时进行循环冗余检验时,收到的3个帧检验合格了,这并不代表此次传输时无差错的,相反,是出了差错的,只是循环冗余检测不出来而已。
CRC是一种检错方法,而FCS是添加在数据后面的冗余码,两者的概念完全不同。
目前广泛使用的是循环冗余检验(CRC)
举个例子说明它的原理:
比如我们需要传的数据为101001,用k记录一共有多少位,即k=6。然后CRC运算需要把待传的数据的末尾加上用于检测的n位冗余码,可以简单的理解为在数据后面加上n个0。假设n=3,这样循环冗余检验的被除数101001000就得到了。除数是通信双方商定好的,现在一般使用的方式是用多项式来表示除数,比如P(x)=x^3+x^2+1,就得到除数P=1101。现在就可以开始进行检验了,注意除数P的位数等于n+1。运算的方法和除法类似,只是相减变成了异或而已。经过运算,得到了余数为001,它被称为帧检验序列FCS。截至现在做的一切的运算,都只是在发送端进行的。为了检验帧是否无比特差错接收了,是在接收端检验的。计算出的帧检验序列FCS会附加在帧的尾部一起发送。
接收端接收到后,会把FCS取出,添加到数据部分的末尾,得到除数101001001,再次和除数P=1101相除,如果得到的余数等于0,那么就证明此次传输时无比特传输的。如果余数不等于0,那就证明这个帧有差错。无比特传输和可靠传输有很大的不同的,比如发送端发送了5个帧,但是接收端只接收到了3个帧,此时进行循环冗余检验时,收到的3个帧检验合格了,这并不代表此次传输时无差错的,相反,是出了差错的,只是循环冗余检测不出来而已。
CRC是一种检错方法,而FCS是添加在数据后面的冗余码,两者的概念完全不同。
相关文章推荐
- 数据链路层差错检测:CRC(循环冗余检验)
- 数据链路层差错检测之循环冗余检验CRC
- ATM教程:数据链路层
- 第三章 数据链路层(ATM教程)
- 11.4 数据链路层访问
- 数据链路层
- WAN的数据链路层协议
- TCP/IP详解学习笔记(2)-数据链路层 .
- 数据链路层
- 计算机网络数据链路层
- 【数据校验杂谈】循环冗余检验 (CRC) 算法原理
- 《数据通信与网络》笔记--数据链路层的差错控制协议
- 物理层、数据链路层
- 数据链路层网络安全
- 计算机网络笔记--数据链路层(一)
- 【网络基础】数据链路层实现的三大功能
- TCP/IP详解学习笔记(2)-数据链路层
- 数据链路层的三个基本问题
- 计算机网络之 数据链路层
- TCP/IP详解学习笔记(2)-数据链路层