CRC

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

CRC, som står för Cyclic Redundancy Check, är en kraftfull kontrollsummateknik som används för att upptäcka och eventuellt korrigera fel i dataöverföring. CRC-algoritmen genererar en kort kontrollsumma (checksum) från de data som överförs och bifogar den till data för att underlätta felkontroll. Här är en teknisk beskrivning av CRC:

Kontrollsummaberedning

CRC-algoritmen behandlar datan som en bitsekvens och utför en matematisk beräkning på dessa bits för att generera en kontrollsumma. Vanligtvis används en binär division med en förutbestämd generatorpolynom.

Generatorpolynom

En viktig del av CRC är generatorpolynomet, som är en binär sekvens som används för att utföra divisionen. Längden på generatorpolynomet avgör längden på den resulterande CRC-kontrollsumman. Vanliga längder är 8, 16, 32 eller 64 bitar. Exempel på populära generatorpolynom är CRC-32 (0x04C11DB7) och CRC-16 (0x8005).

Beräkning av CRC

För att beräkna CRC-kontrollsumman, delas den binära datasekvensen med generatorpolynomet. Denna division utförs bit för bit genom att jämföra de mest signifikanta bitarna i datan och generatorpolynomet. Om de är lika, utförs en XOR-operation (exklusiv OR) och den översta (mest signifikanta) biten av datan förflyttas till nästa position. Denna process upprepas för varje bit i datan.

CRC-kontrollsumma

Efter divisionen resulterar en kvarvarande sekvens av bitar som representerar CRC-kontrollsumman. Denna kontrollsumma bifogas till de ursprungliga datan som en del av meddelandet.

Kontroll och upptäckt av fel

När mottagaren tar emot data, inklusive CRC-kontrollsumman, utför den samma CRC-beräkning på de mottagna datan. Om de mottagna datan är felfria och inte ändrades under överföringen, kommer den mottagna CRC att matcha den beräknade CRC från mottagaren. Om det finns något fel i data eller om data har ändrats under överföringen, kommer CRC-värdena att vara olika, och mottagaren kan upptäcka detta som ett fel.

Felupptäckt

CRC är främst en teknik för att upptäcka fel, inte att korrigera dem. Om CRC-värdena inte matchar, indikerar detta att det har uppstått fel i dataöverföringen, och mottagaren kan avgöra att datan är osäker och behöver överföras igen eller att användaren ska underrättas om felet.

Användningsområden

CRC används i en mängd olika applikationer, inklusive datanätverk, lagringsenheter, filöverföringar över seriella anslutningar, och många andra områden där dataintegritet är viktig. Det används i protokoll som Ethernet, ZIP-arkivering och i många andra teknologier och system.

CRC är en pålitlig teknik för att upptäcka och rapportera fel i överförda data och har en bred användning i datakommunikation och datalagringsteknologier för att säkerställa pålitlig dataintegritet.