Il rumore
In tutti i sistemi di telecomunicazione reali, un canale è soggetto ad errori di trasmissione dovuti alla presenza di rumore. Questa circostanza rende di fondamentale importanza rilevare se i messaggi scambiati tra mittente e destinatario siano integri o meno.
Per rumore si intende un segnale, ad andamento casuale nel tempo, che si sovrappone al segnale originario alterandone il contenuto informativo. I rumori possono essere causati da circostanze ambientali (quali onde elettromagnetiche generate dallo scintillio di interruttori, lampade, apparati industriali, altri circuiti in prossimità) o anche dagli stessi apparati che generano o ricevono il segnale.
Per controllare la presenza di eventuali errori in un messaggi trasmesso attraverso un canale, vi sono numerose tecniche che prevedono la trasmissione di dati aggiuntivi. La capacità di rilevare errori è appannaggio della trasmissione digitale e non può essere fatta in caso di trasmissione analogica.
Nei protocolli di comunicazione strutturati a livelli, il controllo degli errori viene solitamente implementato in tutti i livelli.
La tecnica più ricorrente per il controllo degli errori, prevede l'uso di un checksum, cioè di una sequenza di dati aggiuntivi che, associata al messaggio originario, consente di verificarne l'integrità.
Un esempio di checksum ci è dato dal codice fiscale che riserva l'ultimo carattere ad una funzione di controllo e alla gestione delle omonimie.
Di seguito sono analizzati alcuni algoritmi standard per il calcolo del checksum.
Controllo di parità
E' un meccanismo molto semplice ma anche poco affidabile ed è spesso usato in trasmissioni orientate al carattere.
Nella codifica dei caratteri a 7 bit della tabella ASCII è aggiunto un ulteriore carattere di controllo, detto bit di parità, che consente di rilevare il verificarsi di un errore che alteri un singolo bit durante la trasmissione del carattere stesso.
Si distingue tra due implementazioni di questo meccanismo, dette rispettivamente controllo di parità pari e controllo di parità dispari.
In base al numero di 1 che codificano il carattere viene determinato il valore dell'ottavo bit, quello di controllo. Nel caso di controllo di parità pari il bit di controllo deve essere scelto in modo che il numero di bit con valore ad uno sia sempre pari. Nel caso di controllo di parità dispari il numero di 1 deve essere sempre dispari.
Il dispositivo ricevitore controlla la parità del dato ricevuto. Se essa corrisponde a quella stabilita prima dell'inizio della comunicazione, il ricevitore accetta come corretto il dato. Se un disturbo sulla linea commuta un solo bit, la parità del dato trasmesso cambia ed il controllore può rilevarne l'errore.
Si noti che la simultanea commutazione di due bit dovuta ai disturbi sulla linea non altera la parità e, in questo caso, il controllore non è in grado di rilevare l'errore. Nonostante ciò, il controllo di parità è molto adoperato quando la simultanea commutazione di due bit è un evento ritenuto improbabile.
Il meccanismo di controllo di parità può essere applicato anche nei casi in cui la codifica del carattere non sia basata su 7 bit.
Controllo di parità incrociato
E' un meccanismo più sofisticato che consente non solo di rilevare ma anche di correggere l'errore.
Come sappiamo, la trasmissione di dati lungo un canale di comunicazione è serializzata in modo che le informazioni elementari (di norma corrispondenti ai bit) viaggino una di seguito all'altra. In termini espositivi, tuttavia, possiamo concentrarci su una matrice di bit, in modo da poter fare calcoli per righe e colonne. Deve essere chiaro che la matrice sarà linearizzata all'invio (cioè verranno inviati ordinatamente tutti i bit della matrice procedendo per righe) e alla ricezione verrà fatta un'operazione inversa per ricomporre la matrice di bit.
La seguente immagine si applica al caso in cui si desiderino trasmettere 7 caratteri (nell'esempio ABCDEFG), ciascuno codificato con 7 bit, applicando un meccanismo di controllo di parità pari.
Il bit di controllo è aggiunto ad ogni riga e ad ogni colonna della matrice. In tutto sono utilizzati 15 bit di controllo.
In questo esempio durante la trasmissione si verifica un errore che altera uno dei bit trasmessi, quello evidenziato in rosso. E' bene chiarire che il meccanismo funziona in modo analogo qualsiasi sia il bit alterato.
Dalla verifica dei bit di controllo emerge che sulla riga e la colonna evidenziate il bit di parità ha valore errato. E' possibile affermare che l'errore riguarda il bit nell'incrocio, che in origine aveva il valore opposto.
Nota:
Il bit evidenziato in verde è il "bit di controllo dei bit di controllo". Esso è il bit di parità sia per i bit dell'ultima riga che per quelli della prima colonna. Si dimostra che il valore assunto da questo bit è valido contemporaneamente sia per il controllo della riga che per il controllo della colonna.
Controllo ciclico di ridondanza (CRC)
E' un metodo per il calcolo di un checksum per il controllo degli errori di un generico pacchetto di dati, sia in fase di trasmissione che di registrazione sulle memorie di massa.
Esso si basa sull'aritmetica modulare dei polinomi ed utilizza dei polinomi standardizzati, detti polinomi generatori.
Il checksum risultante, in funzione del polinomio generatore utilizzato, sarà costituito da 12, 16, 32 bit.
Sito: 7ecnologie
Sezione: 13. Reti
Capitolo: 01. Le telecomunicazioni
Paragrafo: 06. Rilevazione degli errori
Indice dei capitoli: 00. Risorse - 01. Le telecomunicazioni - 02. Il modello OSI - 03. La suite TCP/IP - 04. Il cablaggio strutturato - 05. LAB - 07. Tutorial - 98. Esercizi
Indice dei paragrafi: 01. La standardizzazione - 02. Classificazione per estensione - 03. Tipologie di comunicazione - 04. Modalità di interconnessione - 05. I segnali - 06. Rilevazione degli errori
Indice degli approfondimenti: 01. Il CRC