O controlo de erros Die Fehlerkontrolle Le contrôle des erreurs Verificación de errores Error checking

Il controllo d'errori

La codifica binaria è molto pratica per un'utilizzazione nelle apparecchiature elettroniche come i computer, nei quali l'informazione può essere codificata grazie alla presenza o meno di un segnale elettrico.

Il segnale può tuttavia subire dei disturbi (distorsione, presenza di rumore), soprattutto al momento del trasporto dei dati su un lungo tragitto. Così, è necessario il controlle della validità dei dati per alcune applicazioni (professionali, bancarie, industriali, confidenziali, relative alla sicurezza, ...).

Ecco perché esistono dei meccanismi che permettono di garantire un certo livello di integrità dei dati, cioè di fornire al destinatario la sicurezza che i dati ricevuti siano effetivamente simili ai dati dati emessi. La protezione contro gli errori può effettuarsi in due modi :

  • sia rendendo affidabile il supporto di trasmissione, cioè basandosi su una protezione fisica . Un collegamento convenzionale ha generalmente un tasso di errore compreso fra 10-5 e 10 -7.
  • sia attuando dei meccanismi logici di detezione e di correzione degli errori.

La maggiorparte dei sistemi di controllo d'errore a livello software sono basati su una somma di informazioni ( si parla di « rindondanza' ») che permette di verificare la validità dei dati. Questa informazione supplementare si chiama somma di controllo (in inglese checksum).

La correzione degli errori

E' così che dei sistemi di detezione d'errore più perfezionati sono stati messi a punto, questi codici sono chiamati' :

  • codici autocorrettori
  • codici autoverificatori

Il controllo di parità

Il controllo di parità (detto talvolta VRC, per Vertical Redundancy Check o Vertical Redundancy Checking) è uno dei sistemi di controllo più semplici. Consiste nell'aggiungere un bit supplementare (detto bit di parità) ad un certo numero di bits di dati chiamato parola di codice(generalmente 7 bits, per formare un byte con il bit di parità) il cui valore (0 o 1) è uguale al numero totale di bits a 1 cioè pari. Per esssere più chiari consiste nell'aggiungere un 1 se il numero di bits della parola di codice è dispari, 0 nel caso contrario.

Prendiamo l'esempio seguente :

In questo esempio, il numero di bits di dati a 1 è pari, il bit di parità è quindi posto a 0. Nell'esempio seguente, invece, dato che i bits di dati sono dispari, i bit di parità è a 1 :

Immaginiamo ormai che dopo la trasmissione il bit di peso minore (il bit posto a destra) del byte precedente sia vittima di un'interferenza :

Il bit di parità non corrisponde più alla parità del byte: un errore è rilevato.

Tuttavia, se due bits (o un numero pari di bits) arriva a modificarsi simultaneamente durante il trasporto dei dati, nessun errore sarà allora rilevato...

Il sistema di controllo di parità rileva solo gli errori in numero dispari, pari quindi solamente al 50% degli errori totali. Questo sistema di rilevamento degli errori possiede anche l'incoveniente maggiore di non correggere gli errori rilevati (il solo mezzo è di esigere la ritrasmissione del byte errato...).

Il controllo di parità incrociato

Il controllo di parità incrociato (detto anche controllo di rindondanza longitudinale o Longitudinal Redundancy Check, sigla LRC) consiste non nel controllare l'integrità dei dati di un carattere, ma bensì nel controllare l'integrità dei bits di parità di un blocco di caratteri.

Sia « HELLO » il messaggio da trasmettere, utilizzando il codice ASCII standard. Ecco i dati che saranno trasmessi con i codici di controllo di parità incrociato  :

LetteraCodice ASCII
(su 7 bits)
bit di parità
(LRC)
H10010000
E10001011
L10011001
L10011001
010011111
VRC10000100

Il controllo di rindondanza ciclica

Il controllo di rindondanza ciclica (siglato CRC, o in inglese Cyclic Redundancy Check) è un mezzo di controllo d'integrità dei dati potente e facile da attuare. Rappresenta il metodo principale di rilevazione d'errori usato nelle telecomunicazioni.

Principio

Il controllo di rindondanza ciclica consiste nel proteggere dei blocchi di dati, chiamati trame(frames in inglese). Ad ogni trama è associato un blocco di dati, detto codice di controllo(a volte CRC per abuso di linguaggio o FCS per Frame Check Sequence in caso di un codice a 32 bits). Il codice CRC contiene degli elementi rindondanti rispetto alla trama, che permettono di rilevare gli errori, ma anche di ripararli.

Contrôle de redondance cyclique (CRC)

Il principio di CRC consiste nel trattare le sequenze binarie come dei polinomi binari, cioè dei polinomi i cui coefficienti corrispondono alla sequenza binaria. Così la sequenza binaria 0110101001 può essere rappresentata con la forma polinomiale seguente  :

0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 + 1*X0sia X8 + X7 + X5 + X3 + X0o ancora X8 + X7 + X5 + X3 + 1

In questa maniera, il bit di peso minore della sequenza (il bit più a destra) rappresenta il grado 0 del polinomio (X0 = 1), il quarto bit partendo da destra rappresenta il grado 3 del polinomio (X3)… Una sequenza di n bits costituisce quindi un polinomio di grado massimo n-1. Tutte le espressioni polinomiali sono manipolate successivamente con un'aritmentica modulo 2.

Nel meccanismo di rilevamento degli errori, un polinomio predefinito (detto polinomio generatore e siglato G(X)) è conosciuto dall'emettitore e dal ricettore. Il rilevamento d'errore consiste per l'emettitore nell'effettuare un algoritmo sui bits della trama per generare un CRC, e di trasmettere questi due elementi al ricettore. Basterà quindi che il ricettore effettui lo stesso calcolo per verificare che il CRC sia valido.

Applicazione pratica

Sia M il messaggio corrispondente ai bits della trama da inviare et M(X) il polinomio associato. Chiamiamo M' il messaggio trasmesso, cioè il messaggio iniziale al quale sarà concatenato il CRC di n bits. Il CRC sarà M'(X)/G(X)=0. Il codice CRC è così uguale al resto della divisione polinomiale di M(X) (al quale sono stati innanzi tutto concatenati n bits nulli corrispondenti alla lunghezza del CRC) per G(X).

Con un esempio risulta ancora più chiaro: prendiamo il seguente messaggio M di 16 bits: 1011 0001 0010 1010 (sigla B1 in esadecimale). Prendiamo G(X) = X3 + 1 (rappresentato in binario da 1001). Dato che G(X) è di grado 3, si tratta di aggiungere 4 bits nulli a M : 10110001001010100000. Il CRC è uguale al resto della divisione di M per G :

10110001001010100000
1001...,..,.,.,.....
----...,..,.,.,.....
 0100..,..,.,.,.....
 0000..,..,.,.,.....
 ----..,..,.,.,.....
  1000.,..,.,.,.....
  0000.,..,.,.,.....
  ----.,..,.,.,.....
  1000.,..,.,.,.....
   1001,..,.,.,.....
   ----,..,.,.,.....
	1111..,.,.,.....
	1001..,.,.,.....
	----..,.,.,.....
	 1100.,.,.,.....
	 1001.,.,.,.....
	 ----.,.,.,.....
	  1101,.,.,.....
	  1001,.,.,.....
	  ----,.,.,.....
	   1000.,.,.....
	   0000.,.,.....
	   ----.,.,.....
	   10001,.....
		1001,.,.....
		----,.,.....
		10000.,.....
		 1001.,.....
		 ----
		  1111,.....
		  1001,.....
		  ----,.....
		   1100.....
		   1001.....
		   ----.....
			1100....
			1001....
			----....
			 1010...
			 1001...
			 ----...
			  0110..
			  0000..
			  ----..
			   1100.
			   1001.
			   ----.
				1010
				1001
				----
				0011

Per creare M' basta concatenare il CRC così ottenuto ai bits della trama da trasmettere :

M' = 1011000100101010 + 0011
M' = 10110001001010100011

Così, se il destinatario del messaggio effettua la divisione di M' con G, otterrà un resto nullo se la trasmissione si è effettuata senza errore :

10110001001010100011
1001...,..,.,.,...,,
----...,..,.,.,...,,
 0100..,..,.,.,...,,
 0000..,..,.,.,...,,
 ----..,..,.,.,...,,
  1000.,..,.,.,.....
  1001.,..,.,.,.....
  ----.,..,.,.,.....
   0010,..,.,.,.....
   0000,..,.,.,.....
   ----,..,.,.,.....
	0101..,.,.,.....
	0000..,.,.,.....
	----..,.,.,.....
	 1010.,.,.,.....
	 1001.,.,.,.....
	 ----.,.,.,.....
	  0110,.,.,.....
	  0000,.,.,.....
	  ----,.,.,.....
	   1101.,.,.....
	   1001.,.,.....
	   ----.,.,.....
		1010,.,.....
		1001,.,.....
		----,.,.....
		 0111.,.....
		 0000.,.....
		 ----
		  1110,.....
		  1001,.....
		  ----,.....
		   1111.....
		   1001.....
		   ----.....
			1100....
			1001....
			----....
			 1010...
			 1001...
			 ----...
			  0110..
			  0000..
			  ----,,
			   1101,
			   1001,
			   ----,
				1001
				1001
				----
				   0

Polinomi generatori

I polinomi generatori più frequentemente impiegati sono :

  • CRC-12 : X12 + X11 + X3 + X2 + X + 1
  • CRC-16 : X16 + X15 + X2 + 1
  • CRC CCITT V41 : X16 + X12 + X5 + 1
    (Questo codice è utilizzato soprattutto nella procedura HDLC.)
  • CRC-32 (Ethernet) : = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
  • CRC ARPA : X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1


Ultime modificazione ilvenerdì 6 febbraio 2009 alle 16:52:01.Questo documento intitolato «  » da Kioskea (it.kioskea.net) è reso disponibile sotto la licenza Creative Commons. È possibile copiare, modificare le copie di questa pagina, alle condizioni previste dalla licenza, come questa nota appare chiaramente.
Migliori risposte per « Il controllo degli errori » in :
Il protocollo ICMP Vedi La gestione degli errori Il protocollo ICMP (Internet Control Message Protocol) è un protocollo che permette di gestire le informazioni relative agli errori dei terminali connessi. Dato il basso controllo realizzato dal protocollo IP , esso...
Backup Vedi Il backup Tuttavia, la realizzazione di un' architettura ridondante permette di assicurarsi solamente della disponibilità dei dati di un sistema ma non di proteggere i dati contro gli errori di manipolazione degli utenti o contro delle catastofi...
BIOS Vedi Presentazione del BIOS Il BIOS (« Basic Input/Output System » tradotto « Sistema di gestione elementare delle entrate/uscite ») è una componente essenziale del computer, che permette il controllo degli elementi hardware. Si tratta di un piccolo...
Il mio PC è lentissimo, cosa faccio ? VediIl tuo PC diventa molto lento ad ogni utilizzo o quando si utilizzano alcuni software? ... un po di pulizia è certamente necessaria, perché un computer in un buono stato di manutenzione è un computer più potente! Preambolo - Identificare le...
Riavvio continuo del computer VediSommario Che cosa riavvia un PC? 1. Memoria difettosa 2. Hardware conflitto 3. Surriscaldamento del CPU 4. Alimentazione difettosa 5. Software conflitto 6. Materiale difettoso 7. Il BIOS 8. I Virus Aprire il registro di sistema del...
Flashare il BIOS VediCosa significa flashare? Il BIOS (Basic Input/Output System) è una piccola memoria posta sulla scheda madre, i cui dati definiscono i parametri del sistema. Questi possono tuttavia contenere degli errori (bug). Inoltre, con la comparsa di nuovi...
Il protocollo UDP VediLe caratteristiche del protocollo UDP Il protocollo UDP (User Datagram Protocol) è un protocollo non orientato connessione del livello trasporto del modello TCP/IP. Questo protocollo è molto semplice dato che non fornisce nessun controllo degli...