CRC

Livello fisico - Sistemi e Reti

Calcolo del Cyclic Redundancy Check con divisione modulo 2
Polinomio generatore, resto, messaggio trasmesso e verifica
← Torna al modulo sul livello fisico
Concetti principali
  • funzione del CRC nella rilevazione degli errori;
  • uso del polinomio generatore;
  • divisione modulo 2 tramite xor;
  • calcolo del resto e verifica lato ricevente.
Idea generale

Il CRC è una tecnica di rilevazione degli errori. Il mittente calcola un resto a partire dai dati e da un generatore. Il resto viene aggiunto ai dati e trasmesso insieme al messaggio.

Il ricevente ripete il controllo: se il resto finale non è zero, il messaggio viene considerato alterato.

Divisione modulo 2

La divisione usata nel CRC non usa sottrazioni con prestito. Al posto della sottrazione si usa l'operazione xor.

0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
Esempio di calcolo completo
  • Dati: 101101
  • Generatore: 1101

Il generatore ha 4 bit. Il resto sarà lungo 3 bit, quindi ai dati vengono aggiunti 3 zeri.

Dati estesi = 101101000

Divisione modulo 2

dato esteso 1 0 1 1 0 1 0 0 0
generatore 1 1 0 1
dopo xor 0 1 1 0 0 1 0 0 0
generatore 1 1 0 1
dopo xor 0 0 0 0 1 1 0 0 0
generatore 1 1 0 1
resto 0 0 0 0 0 0 0 1 0
Messaggio trasmesso

Il resto finale è 010. Questo valore viene accodato ai dati originali.

Dati originali = 101101
CRC = 010
Messaggio trasmesso = 101101010
Verifica al ricevente

Il ricevente divide l'intero messaggio ricevuto per lo stesso generatore. Se il messaggio è 101101010, la divisione produce resto nullo.

ricevuto 1 0 1 1 0 1 0 1 0
generatore 1 1 0 1
dopo xor 0 1 1 0 0 1 0 1 0
generatore 1 1 0 1
dopo xor 0 0 0 0 1 1 0 1 0
generatore 1 1 0 1
resto 0 0 0 0 0 0 0 0 0
  • resto 000: controllo coerente;
  • resto diverso da 000: errore rilevato.
Effetto di un bit alterato

Se durante la trasmissione un bit cambia, il controllo al ricevente non produce più resto nullo.

Messaggio corretto = 101101010
Messaggio alterato = 101111010
ricevuto 1 0 1 1 1 1 0 1 0
generatore 1 1 0 1
dopo xor 0 1 1 0 1 1 0 1 0
generatore 1 1 0 1
dopo xor 0 0 0 0 0 1 0 1 0
generatore 1 1 0 1
resto 0 0 0 0 0 0 1 1 1
CRC ed Ethernet

Nelle trame Ethernet il campo FCS usa un controllo basato su CRC. Se la verifica fallisce, la trama viene scartata. La correzione non avviene nel livello fisico: eventuali ritrasmissioni dipendono da protocolli superiori o da meccanismi specifici del collegamento.

Sintesi finale

Il CRC aggiunge ridondanza calcolata sui dati. Il controllo è robusto perché molti errori producono un resto diverso da zero. Il CRC rileva l'errore, ma normalmente non indica quale bit correggere.