网络数据传输的差错检测
2008-5-01 系统必须保证数据从一端传送到另一端时完好无损,然而很多时候从源点传输到目的点的数据会被各种因素干扰,比如线路的串扰。
无论何时,从一个点流向另一个点的数据流都可能被各种因素干扰而产生错误。就是说,任何人都不能保证信在传递过程中不受到的磨损,怎样让收信人知道这封信被磨损,就要靠差错检测。有的发件人在信里附加了一张这封信的照片,这样收件人收到此封信后和照片对比一下,就知道信是否有磨损了。
10个最好的PNG转ICO工具,轻松生成Windows 7的256x256像素超清晰图标: http://blog.yiyidu.com/2012_1792.html差错的类型D618311E9A274BD28422AA89D4E746A3
1. 一个比特位出错
一个比特位出错是指在给定的数据单元(如一个字节、一个字符、一个数据分组)中只有一个比特被改变了,1变成了0或0变成了1。比如发送端发送的是1100001(ASCII码中的字符A),接受端收到的却是1100011(ASCII码中的字符C)。
单比特出错在串行链路(如以太网线)中很少见。比如发送端以1Mb/s的速率发送数据,也就是说每个比特在线路上持续的时间仅为1/1000000秒,若想产生但比特错误,噪声干扰持续的时间同样仅为1/1000000秒,而这非常罕见,一般噪声持续时间通常不会这么短。
但是,如果系统使用的是并行传输方式发送数据,单比特错误就可能发生。比如,用8条线同时发送1个字节的所有8个比特,若其中一条线出现噪声,那么每个字节中都会有1比特的错误。例如,CPU和存储器间的就是并行传输。
2. 多比特出错
多比特出错是指在给定的数据单元中多个比特被改变了。多比特差错通常出现在串行链路中,因为噪声干扰持续的时间通常大于一个比特持续的时间。
检测
收件人如何检测信息是否在传输过程中出现差错,这就需要检测技术。
1. 拷贝。所谓拷贝,就是把同样的信息发两次,接收设备将两次发送的数据一比较就知道是否有差错。使用这种差错检测机制的好处是准确,不好的地方是这不仅增加了有效数据的传输时间,而且还增加了比较每一个比特的时间,效率太低。
2. 拍照。发送端在传输数据前先给整个数据拍个照,然后把数据连同照片一同发给接收方,接收方收到数据后和照片一比较就知道数据是否受到破坏。常见生成照片的算法有MD5(摘要报文5)和SHA-1(安全散列算法1)。对于生成照片的过程,专业点说叫散列,而MD5和SHA-1都叫散列函数。
3. 奇偶校验。奇偶校验也叫垂直冗余校验(VRC)。使发送的每组数据都有偶数个1,接收端如果发现一组数据中出现奇数个1就认为出错。性能上来说,奇偶校验可以检测出所有的一个比特位出错出错的情况。也可以检测出多比特出错情况,但变化的比特总数必须是奇数(如3,5,7,9等)。
4. 循环冗余校验(CRC)。CRC是一种非常快速并且有效的差错检测方法。常见的CRC标准有CRC-8(ATM首部校验)、CRC-10(ATM AAL部分校验)、CRC-32(用于局域网802.3的数据帧校验)。
5. 校验和。将传输的消息按照8位、16位或32位整数的序列,把这些整数加起来而得出校验码,该校验码也叫校验和。比如IP协议分组和UDP协议分组都采用的是校验和计算。这种差错检测的弊端是:如果整数序列中有两个整数出错,一个值增加了,另一个减小了相同的值,这种错误就不会被检测出来。
- 欢迎大家转载,转载请复制:
- 原文链接:网络数据传输的差错检测
- 原文地址:http://blog.yiyidu.com/2008_1092.html
- 转载超过10篇需经本人书面许可。