电大亿唐网不做网站做品牌,诸暨有哪些制作网站公司,wordpress 收费主题下载,logo在线设计生成器下载1 文章问题概述 在二进制传输中#xff0c;由于各种原因#xff08;如电磁干扰、硬件故障等#xff09;#xff0c;数据位可能会发生变化#xff0c;导致“1”变成“0”#xff0c;或者“0”变成“1”#xff0c;这就是所谓的传输错误。
1.1 如何检测错误 一般通过在发…1 文章问题概述 在二进制传输中由于各种原因如电磁干扰、硬件故障等数据位可能会发生变化导致“1”变成“0”或者“0”变成“1”这就是所谓的传输错误。
1.1 如何检测错误 一般通过在发送的数据块后附加一些额外的冗余序列来实现错误检测。这个冗余序列是通过特定的函数计算出来的通常基于原始数据。 当数据到达目的地时会用同样的函数对数据进行计算并将计算结果与传输的冗余序列进行比较。如果两者不匹配则意味着在传输过程中发生了错误。
1.2 如何修正错误 如果冗余序列足够详细并具有错误修正的特性可以直接进行错误修正。另一种常见的修正方法是通过重传。当检测到错误时接收方可以请求发送方重发原始数据。 错误检测和修正是通信系统中非常重要的部分它们确保数据的完整性和准确性。有多种算法和协议可以用于错误检测和修正包括奇偶校验、循环冗余校验CRC、哈明码等。 2. 通过冗余序列进行错误检测的过程
2.1 错误检测机制 在发送消息之前会根据原始消息、使用一个特定的计算函数、来生成一个冗余序列。这个冗余序列随后会附加到原始消息的末尾一起组成了最终传输的消息Message transmis。 当消息到达接收方后会用同一个计算函数对接收到的原始消息部分进行计算以产生一个新的冗余序列。 接收方将这个新计算出的冗余序列与接收到的冗余序列进行比较。如果两个冗余序列相同则认为消息没有错误如果不同则认为消息在传输过程中发生了错误。
2.2 常见的错误检测方法
2.2.1 奇偶校验位
2.2.1.1 基本概念 通过添加一个奇偶校验位bit de parité来保证整个数据序列的1的数量为奇数或偶数来检测错误。
2.2.1.2 奇偶校验位 奇偶校验位是在数据序列中加入的一个额外的位用于检测数据是否在传输过程中发生了错误。 偶校验奇偶校验位设置为使得包括校验位在内的整个序列中1的总数为偶数。 奇校验奇偶校验位设置为使得包括校验位在内的整个序列中1的总数为奇数。 举例来说如果数据序列是1 0 0 1 0 0 1 0 我们使用偶校验校验位会被设置为1使得整个序列中1的数量3个加上校验位后总数为偶数4个。 如果是奇校验给定同样的数据序列校验位会被设置为0因为不包括校验位的序列中1的数量3个已经是奇数。 奇偶校验方法不能检测所有类型的错误特别是不能检测到双错误即序列中两个位同时发生错误的情况。它还提到这种方法常用于PC的串行接口标准如ANSI RS232-C国际电信联盟的V24标准。这是一种简单但有限的错误检测技术通常用在错误率不高的通信信道中。
2.2.1.3 检测并修改错误 如果冗余信息足够并且使用的算法足够强大那么即使在数据传输中出现错误也能够检测并且修正这些错误。 示例使用奇偶校验位 提供了一个简单的例子说明如何使用奇偶校验偶校验来检测和定位错误。每行和每列都有一个额外的位这是奇偶校验位。 幻灯片展示了一个数据块其中每行和每列的最后一个位是校验位用以确保该行或该列有偶数个1。 通过比较每行和每列的奇偶校验位可以找出错误位如果有的话。
其他错误修正技术 其他更先进的错误修正技术如Reed-Solomon码和Turbo码。这些技术能够检测并修正更复杂的错误模式它们在现代通信系统中得到了广泛应用。 Reed-Solomon码特别用于CD和DVD的错误修正而Turbo码则用于深空通信和移动通信等领域。 使用足够冗余信息和强大算法的重要性这些可以显著提高数据传输的可靠性。通过这些方法即使在数据中发生了错误也能够被有效地检测和修正。
2.2.2 循环冗余校验CRC, Cyclic Redundancy Code
2.2.2.1 基本概念 一种用于检测数据传输或存储中的错误的方法。 多项式除法来进行错误检测的方法这种方法通常用于计算循环冗余校验CRC码
2.2.2.2 多项式除法错误检测 数据表示一个二进制消息M可以被视为一串位也可以视为一个多项式。例如二进制串101101可以对应于多项式x^5 x^3 x^2 1。 消息长度如果消息M有m个位那么它可以表示为一个m-1次多项式。 生成多项式选择一个n位的生成多项式G其次数为n-1。这个多项式用于生成CRC码其中n必须小于m。 以下是展示了几种循环冗余校验CRC的类型以及使用移位寄存器进行CRC-16计算的示例 CRC CRC-12使用一个12位长的生成多项式x^12 x^11 x^3 x^2 1。 CRC-16使用一个16位长的生成多项式x^16 x^15 x^2 1。 CRC-CCITT使用一个16位长的生成多项式通常用于异步传输x^16 x^12 x^5 1。 CRC-32使用一个32位长的生成多项式通常用于以太网x^32 x^26 x^23 x^22 x^16 x^12 x^11 x^10 x^8 x^7 x^5 x^4 x^2 x 1。 这些多项式代表了在计算CRC时使用的特定算法。每种CRC的设计都有不同的错误检测能力通常与数据的长度和预期错误类型有关。
2.2.2.3 CRC-16的计算 使用移位寄存器来计算CRC-16的过程。 移位寄存器是一种数字逻辑电路用于暂存数据并在每个时钟周期将其向左或向右移动一位。 在计算CRC时数据会被送入这样的寄存器并与生成多项式相结合进行计算。 在图中0和1的位置表示在计算过程中需要进行异或XOR操作的位。异或操作是CRC计算中的核心步骤用于生成校验码。
2.2.2.4 CRC的验证过程 在数据传输或存储过程中通过将CRC校验码附加到数据后面可以在数据接收端进行错误检测。如果在接收端计算出的CRC码与发送端附加的CRC码不一致则表明数据在传输过程中可能已经发生了错误。 多项式乘法将消息M乘以x^n等同于将M向左移n位这样可以在M的末尾腾出n位空间。 除法与余数将修改后的消息M即M乘以x^n的结果除以生成多项式G得到的余数就是CRC码。(这里的除法是模2除法得到商Q和余数R。 构造传输多项式然后构造一个新的多项式T它等于M减去余数R在模2算术中减法与加法相同。 发送消息将原始消息M和这个CRC码一起发送。接收方使用同样的生成多项式G对接收到的消息包括CRC进行除法运算。如果余数为0则认为在传输过程中没有发生错误如果余数不为0则表示检测到错误。 多项式乘法和除法的示意图说明了如何将消息M转换成M并为其添加CRC码。CRC是一种广泛使用的强大错误检测技术能够检测到由于噪声引起的多位错误。 多项式除法在错误检测中的应用特别是循环冗余校验CRC的计算过程。 公式T M - R G × Q展示了如何通过生成多项式G来确保传输的数据T在没有错误的情况下能够被G整除。这是一种非常可靠的错误检测机制广泛应用于各种数据通信和存储系统中。通过这种方法可以检测到传输过程中发生的错误并且在很多情况下还能确定错误发生的位置。
2.2.3 校验和Checksum
2.2.3.1 基本概念 是对数据中所有字节的值进行求和有时还有其他运算然后通常取其反码作为校验和。
2.2.3.2 校验和的计算方法 消息组成设想有一个由多个字words组成的消息每个字由8位一个字节或16位组成。字的示例为 A, B, C, ... R, S, T。 计算校验和是通过将所有的字相加来计算的计算公式可以表示为Z A B C D ... R S T。在这里加法是模2^8或模2^16的加法取决于字的大小。 结果反转计算出的校验和Z随后会被反转即取反得到Z。在8位的情况下如果原始校验和是1111 0000反转后就会变成0000 1111。 传输接着传输整个消息和反转后的校验和Z。 验证接收端收到消息后将消息中的所有字再次相加包括校验和Z计算公式为Z A B C ... R S T Z。 错误检测如果消息在传输过程中没有发生错误最终的计算结果Z应该是全1即1111 11118位的情况或者对应长度的全1。这是因为加上原始的校验和Z和反转的校验和Z应该得到全1的结果。如果Z不是全1那么说明在传输过程中发生了错误。
2.2.3.3 校验和的应用 校验和是一种基本的错误检测方法虽然它不能提供CRC那样的错误检测能力但由于计算简单在某些场合仍然非常有用。例如一些网络协议和文件格式会使用校验和来初步检测数据的完整性。 这些方法能够提高数据传输的可靠性尤其是在不可靠的通信信道中。通过冗余序列的使用即使在数据在传输过程中出现一定程度的损坏也能在一定程度上检测到错误。 3. 重传retransmission来进行错误修正的方法 错误修正通过重传当接收方检测到错误时它会丢弃jette错误的数据段segment de données erroné。
3.1发送方如何知道已经发生了错误 在没有收到确认acquittement的情况下发送方无法知道传输是否成功。因此需要一个确认机制。 确认机制被称为“发送并等待”Send Wait 这是一种流控制机制发送方在发送一个数据段后会暂停发送其他数据等待接收方的确认信号。
3.2 如果数据或确认丢失了怎么办——超时重传机制 如果数据丢失接收方不会发送确认。 如果确认信号丢失发送方不会收到确认会触发超时重传机制。 在超时后发送方会重发数据段然后再次等待确认。这个过程会一直重复直到发送方收到确认或者达到重发次数上限。 发送方发送数据并等待确认Donnée → Acquit.如果确认没有收到发送方会重发数据。 这种错误修正机制是很多通信协议例如TCP传输控制协议中的一个基本组成部分。这种方法保证了即使在不可靠的网络中也能够正确地传输数据。然而它也可能会因为网络状况差或者高延迟而导致效率低下。
3.3 交替位协议 这是一种简单的流控制协议用于确保数据正确地从发送方E传输到接收方R。每个数据包都附带一个标志位这个标志位交替地设置为0和1以此来区分连续的数据包。 在时间1T1发送方E发送了一个标志位为0的数据包Donnée-0。
接收方R正确接收数据包并发送确认Acq-0。 在时间2T2发送方E再次发送一个标志位为0的数据包但在这个例子中这个数据包没有成功地被接收方接收因此没有确认被发送。 在时间3T3发送方E发送一个标志位为1的数据包Donnée-1这次数据包成功到达接收方R并且接收方R发送了确认Acq-1。 在时间4T4发送方E收到确认知道标志位为1的数据包已被成功接收然后继续发送下一个数据包。
3.4 定时器太短的问题 如果发送方设置的定时器太短它可能会在接收方来得及发送确认之前重发数据包。这可能导致发送方错误地认为数据包丢失并因此不必要地重发数据包。这种情况可能会导致网络拥塞和数据包重复从而降低通信效率。 发送方E在时间1T1发送了一个数据包并在时间2T2收到了确认Acq。 但在时间3T3发送方E由于定时器设置太短错误地认为需要重新发送数据包Donnée-0尽管接收方R实际上已经收到了这个数据包并准备发送确认。 这导致了在时间4T4发送方E接收到了两个确认Acq其实是对同一个数据包的确认。 在实施流控制协议时定时器的设置对于协议性能至关重要。如果定时器设置不当可能会导致效率低下和不必要的网络流量。