Zyklische Redundanzprüfung (CRC)

Wenn Sie Daten über ein Computernetzwerk übertragen, ist die Datenintegrität sehr wichtig. Um sicherzustellen, dass Daten nicht beschädigt oder manipuliert wurden, verwenden wir häufig die zyklische Redundanzprüfung (CRC).

CRC ist eine einfache und effiziente Fehlererkennungstechnologie. Durch Berechnen der Daten wird ein Prüfwert ermittelt, der Prüfwert wird dann zu den Daten addiert und zusammen übertragen. Nach dem Empfang der Daten führt der Empfänger erneut eine CRC-Berechnung durch und vergleicht das berechnete Ergebnis mit dem empfangenen Prüfwert. Wenn beide konsistent sind, können die Daten als korrekt angesehen werden. Wenn sie nicht konsistent sind, bedeutet dies, dass bei der Übertragung der Daten ein Fehler aufgetreten ist.

Lassen Sie uns das Prinzip und die Schritte des CRC-Tests im Detail vorstellen und anhand eines praktischen Beispiels veranschaulichen.

  1. CRC-Prinzip:
    CRC verwendet zur Berechnung ein Generatorpolynom und einen Anfangswert. Es moduliert die Daten, indem es sie als Binärzahl mit einem Generatorpolynom als Teiler behandelt. Der letzte Rest ist der Prüfwert, auch CRC-Code genannt.

  2. CRC-Schritte:
    (1) Generatorpolynom auswählen: CRC verwendet verschiedene Generatorpolynome für die Berechnung, gängige sind CRC-8, CRC-16 und CRC-32 usw. Ein Generatorpolynom wird normalerweise als Binärzahl mit einer festen Anzahl von Bits dargestellt.

    (2) Wählen Sie den Anfangswert: Der Anfangswert ist ein Wert, der vor der Berechnung des CRC voreingestellt werden muss, normalerweise alle 1 oder alle 0. Es spielt die Rolle der Initialisierung des CRC-Registers.

    (3) Datenfüllung: Die zu übertragenden Daten werden nach bestimmten Regeln gefüllt. Normalerweise werden am Ende der Daten einige zusätzliche Bits hinzugefügt, um den CRC-Code aufzunehmen.

    (4) CRC-Berechnung: Geben Sie die gefüllten Daten in den CRC-Rechner ein, führen Sie eine Division gemäß dem Generatorpolynom durch und erhalten Sie den Rest als CRC-Code.

    (5) Übertragungsdaten: Übertragen Sie die Originaldaten und den generierten CRC-Code zusammen an den Empfänger.

    (6) Überprüfung des Empfängers: Nach dem Empfang der Daten gibt der Empfänger die Daten zur erneuten Berechnung in den CRC-Rechner ein und vergleicht den erhaltenen Rest mit dem empfangenen CRC-Code. Wenn sie konsistent sind, bedeutet dies, dass kein Fehler in den Daten vorliegt; wenn sie inkonsistent sind, bedeutet dies, dass bei der Datenübertragung ein Fehler aufgetreten ist.

  3. Beispiel:
    Angenommen, wir möchten eine 8-Bit-Binärzahl 10101010 übertragen und CRC-8 zur Überprüfung verwenden.

    (1) Generatorpolynom auswählen: Das Generatorpolynom von CRC-8 ist x^8 + x^2 + x + 1, und die entsprechende Binärdarstellung ist 100000111.

    (2) Wählen Sie den Anfangswert: Wir wählen den Anfangswert so, dass er alle 0 ist, was anzeigt, dass der Anfangszustand des CRC-Registers 0 ist.

    (3) Datenauffüllung: Fügen Sie am Ende der zu übertragenden Daten 8 Nullen hinzu, um 10101010 00000000 zu erhalten.

    (4) CRC-Berechnung: Geben Sie die gefüllten Daten in den CRC-Rechner ein und führen Sie eine Modulo-2-Division gemäß dem Generatorpolynom durch. Der Betriebsablauf ist wie folgt:

    1010101000000000 / 100000111 = 1001010 余数1010
    

    (5) Übertragungsdaten: Übertragen Sie die Originaldaten 10101010 und den generierten CRC-Code 1010 an den Empfänger.

    (6) Empfängerüberprüfung: Nach dem Empfang der Daten 10101010 1010 gibt der Empfänger die Daten zur Berechnung erneut in den CRC-Rechner ein. Der Betriebsablauf ist wie folgt:

    101010101010 / 100000111 = 1001010 余数0
    

    Der vom Empfänger berechnete Rest ist 0, und im Vergleich zum empfangenen CRC-Code 1010 wird festgestellt, dass er konsistent ist, was darauf hinweist, dass in den Daten kein Fehler vorliegt.

Anhand der obigen Beispiele können wir sehen, dass die CRC-Prüfung Fehler, die bei der Datenübertragung auftreten, effektiv erkennen kann. Es ist nicht nur einfach und effizient, sondern verfügt auch über starke Fehlerkorrekturfunktionen und wird häufig in Computernetzwerken, Speichersystemen und anderen Bereichen eingesetzt.

Ich hoffe, dass die obige Einführung Ihnen hilft, den CRC-Test zu verstehen. Wenn Sie weitere Fragen haben, können Sie diese gerne stellen.

おすすめ

転載: blog.csdn.net/qq_37037348/article/details/132163819