数据链路层中的差错检测与纠正
数据链路层 使用差错控制技术来确保帧(即数据位流)从源到目的地以一定的精度传输。
错误
当比特在计算机网络上传输时,由于干扰和网络问题,它们可能会发生损坏。损坏的比特会导致目的地接收到的数据出现错误,这些错误被称为差错。
错误类型
错误可以分为三种类型:单比特错误、多比特错误和突发错误。
单比特错误 - 在接收到的帧中,只有一个比特被损坏,即从 0 变为 1 或从 1 变为 0。
多比特错误 - 在接收到的帧中,有多个比特被损坏。
突发错误 - 在接收到的帧中,有多个连续的比特被损坏。
差错控制
差错控制可以通过两种方式完成
差错检测 - 差错检测涉及检查是否发生了任何错误。错误比特的数量和错误类型无关紧要。
差错纠正 - 差错纠正涉及确定被损坏的比特的确切数量以及损坏比特的位置。
对于差错检测和差错纠正,发送方都需要与数据比特一起发送一些额外的比特。接收方根据额外的冗余比特进行必要的检查。如果发现数据没有错误,则在将消息传递到上层之前删除冗余比特。
差错检测技术
有三种主要的帧差错检测技术:奇偶校验、校验和和循环冗余校验 (CRC)。
奇偶校验
奇偶校验是通过向数据添加一个额外的比特(称为奇偶校验比特)来完成的,以使 1 的数量在偶校验的情况下为偶数,在奇校验的情况下为奇数。
在创建帧时,发送方会计算其中 1 的数量,并以以下方式添加奇偶校验比特
在偶校验的情况下:如果 1 的数量为偶数,则奇偶校验比特值为 0。如果 1 的数量为奇数,则奇偶校验比特值为 1。
在奇校验的情况下:如果 1 的数量为奇数,则奇偶校验比特值为 0。如果 1 的数量为偶数,则奇偶校验比特值为 1。
接收帧时,接收方会计算其中 1 的数量。在偶校验检查的情况下,如果 1 的数量为偶数,则接受该帧,否则拒绝。奇校验检查也采用类似的规则。
奇偶校验仅适用于单比特错误检测。
校验和
在这种差错检测方案中,应用以下过程
数据被分成固定大小的帧或段。
发送方使用 1 的补码算术对段进行加法运算以获得总和。然后对总和进行求补以获得校验和,并将其与数据帧一起发送。
接收方使用 1 的补码算术对传入的段和校验和进行加法运算以获得总和,然后对总和进行求补。
如果结果为零,则接受接收到的帧;否则,将丢弃它们。
循环冗余校验 (CRC)
循环冗余校验 (CRC) 涉及将要发送的数据比特通过通信系统商定的预定除数进行二进制除法。除数是使用多项式生成的。
在这里,发送方执行数据段与除数的二进制除法。然后将余数(称为 CRC 比特)附加到数据段的末尾。这使得生成的数据单元完全可以被除数整除。
接收方将传入的数据单元除以除数。如果没有余数,则假定数据单元正确并被接受。否则,则表示数据已损坏,因此被拒绝。
差错纠正技术
差错纠正技术找出被损坏的比特的确切数量及其位置。主要有两种方法
后向差错纠正(重传) - 如果接收方检测到传入帧中的错误,它会请求发送方重新传输该帧。这是一种相对简单的技术。但是,它只能有效地用于重传成本不高的场合,例如光纤,并且重传时间相对于应用程序的要求较低。
前向差错纠正 - 如果接收方检测到传入帧中的一些错误,它会执行错误纠正代码,该代码生成实际的帧。这节省了重传所需的带宽。在实时系统中是不可避免的。但是,如果错误过多,则需要重新传输帧。
四种主要的差错纠正码是
- 汉明码
- 二进制卷积码
- 里德-所罗门码
- 低密度奇偶校验码