Zyklische Redundanzprüfungen (CRCs) sind ein weit verbreiteter Fehlererkennungsmechanismus in digitalen Kommunikations- und Speichersystemen. Sie funktionieren, indem sie einem Datenblock einen Prüfwert fester Länge, einen sogenannten CRC-Rest oder eine Signatur, hinzufügen. Der CRC-Rest wird auf der Grundlage des Inhalts des Datenblocks und einer vorgegebenen mathematischen Formel, einem sogenannten Generatorpolynom, berechnet.
Das Grundprinzip von CRCs besteht darin, dass bei Fehlern während der Datenübertragung oder -speicherung die Wahrscheinlichkeit groß ist, dass sich die Bits im Datenblock ändern. Wenn der Datenblock am Ziel empfangen wird, wird der CRC-Rest unter Verwendung desselben Generatorpolynoms neu berechnet und mit dem ursprünglichen CRC-Rest verglichen, der mit den Daten angehängt wurde.
Wenn der neu berechnete CRC-Rest mit dem ursprünglichen CRC-Rest übereinstimmt, weist dies darauf hin, dass der Datenblock wahrscheinlich fehlerfrei ist. Wenn die CRC-Reste jedoch nicht übereinstimmen, deutet dies darauf hin, dass möglicherweise Fehler bei der Datenübertragung oder -speicherung aufgetreten sind.
Hier ist eine vereinfachte Übersicht über die Funktionsweise von CRCs:
Datenaufbereitung:Der zu schützende Datenblock wird in eine feste Anzahl von Bits unterteilt.
CRC-Berechnung:Das Generatorpolynom wird zur Berechnung des CRC-Rests für den Datenblock verwendet. Diese Berechnung umfasst mathematische Operationen und das Verschieben der Datenbits basierend auf dem spezifischen Polynom.
Anhängen des CRC-Rests:Der berechnete CRC-Rest wird an den ursprünglichen Datenblock angehängt und bildet so eine geschützte Dateneinheit.
Fehlererkennung:Wenn die geschützte Dateneinheit am Ziel empfangen wird, berechnet der Empfänger den CRC-Rest unter Verwendung desselben Generatorpolynoms neu und vergleicht ihn mit dem angehängten CRC-Rest.
Wenn die CRC-Reste übereinstimmen, weist dies darauf hin, dass der Datenblock wahrscheinlich korrekt ist und nicht beschädigt wurde.
Wenn die CRC-Reste nicht übereinstimmen, deutet dies darauf hin, dass möglicherweise Fehler bei der Datenübertragung oder -speicherung aufgetreten sind.
CRC-Algorithmen können eine Vielzahl häufiger Fehler erkennen, darunter Einzelbitfehler, Burst-Fehler und einige Synchronisationsfehler. Es ist jedoch wichtig zu beachten, dass CRCs nicht narrensicher sind und bestimmte Arten von Fehlern oder absichtliche Datenmanipulationen möglicherweise nicht erkennen.
CRCs werden häufig in verschiedenen Anwendungen verwendet, einschließlich Netzwerkprotokollen, Datenspeichersystemen und Kommunikationssystemen, um die Integrität und Genauigkeit von Daten während der Übertragung und Speicherung sicherzustellen.