发布于 2003-06-02 18:06:35
0楼
解决差错问题有两种基本策略。一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么字符。另一种方法是只加入足够的冗余位使接收方能推算出是否发生了差错,但不知道哪些位出错,然后接收方可以请求重发。
数据通信中,在大多数情况下采用检错码加重传,效率较高。将每个数据块组成一个n位宽和k位高的长方形矩阵来发送。对每一列单独计算奇偶位,并附在矩阵之后作为最后一行。然后发送这个矩阵,每次一行。当数据块到达时,接收设备检查所有奇偶位。假若其中任一奇偶位错了,就需要重传整个块。
帧以块检查码BCC(Block Check Code)结尾,检查码可以是纵向冗余检查LRC(Longitudinal Redundancy Check),也可以是循环冗余检查CRC(Cyclic Redundancy Check)。
接收方计算检查码时,如果与发送方的CRC或LRC不匹配,接收方就在一个单独的控制帧中给发送方返回一个NAK。当检查码匹配时,接收方在一个单独的控制帧中返回一个肯定确认。如果收到一个NAK序列,源发方就重发整个有错的块。如果继续有NAKs返回,发送方将认为链路有了故障,并且中止传输。