KULT Underground

una della più "antiche" e-zine italiane – attiva dal 1994

Errori di Trasmissione

3 min read

Errori di Trasmissione

Ciao a tutti! Cercherò di spiegarvi quello che ho capito degli errori di trasmissione… spero di essere chiaro e spero che a qualcuno interessi… boh! 🙂
Quando si trasmette un file, cioè dei dati, si possono verificare degli errori che danneggiano in modo irreversibile il contenuto del file. Questi errori arrivano a gruppi (burst) e sono causati principalmente o da rumore termico o da interferenze. E’ necessario per questo motivo che i pacchetti vengano controllati una volta arrivati a destinazione in modo da rilevare eventuali errori. Una volta individuati i pacchetti danneggiati vanno scartati e vanno ri-richiesti alla sorgente.
Principalmente esistono due codici differenti per rilevare gli errori:

* Bit di Parità
* C.R.C.

Il metodo del Bit di Parità funziona in questo modo: conto il numero di bit settati a 1 nel messaggio, se questo numero è pari allora setto a 0 il bit di parità, altrimenti lo setto a 1. Il calcolatore che riceve il pacchetto riconta il numero di 1 nel messaggio e controlla che il risultato coincida con quello scritto nel bit di parità, se così non è allora vuol dire che c’è stato un errore di trasmissione.
Questo codice, però, è un po’ scarso perchè si accorge di un errore solo il 50% delle volte.

Il metodo del C.R.C. (Codice a Ridondanza Ciclica) è più complesso, ma
è molto più preciso.
Un messaggio di k bit può essere visto come un polinomio di ordine k-1
:

11011 diventa P(x)=x^4+x^3+x+1

Per controllare che un messaggio (nel nostro caso supponiamo che P sia un messaggio) arrivi senza errori posso fare delle particolari operazioni sul messaggio prima di spedirlo e spedire nel pacchetto insieme al messaggio anche il risultato di queste operazioni. Il calcolatore che riceve il pacchetto rifà le stesse operazioni sul messaggio e controlla il risultato ottenuto con quello mandatogli col messaggio. Se il risultato è lo stesso non c’è stato errore.
L’ operazione che viene fatta sul messaggio è una divisione (divisione tra polinomi) che ha per divisore un polinomio detto “generatore” :

G(x)= polinomio generatore
M(x)= messaggio
D(x)= M(x)/G(x)
CRC= resto della divisione M(x)/G(x)

Il mittente spedisce al destinatario sia il messaggio M(x) che il resto CRC (che insieme, affiancandoli, chiameremo T(x)).
Il destinatario che conosce a priori G(x) fa la divisione T(x)/G(x).
Se questa divisione dà resto 0 allora non ho avuto errori di trasmissione.
Alcuni polinomi generatori vanno meglio di altri, in particolare risulta molto buono il cosidetto CRC-CCITT che è
G(x)=x^16+x^12+x^5+1.

NOTA. Se utilizzate il PKZIP vi sarà capitato qualche file rovinato, se notate vi dice BAD CRC (cioè cattivo CRC). Ciò significa che copiando il file zip magari da un dischetto (si sputtanano sempre!) si
è rovinato qualche bit e la divisione T(x)/G(x) non ha dato resto nullo.

Se volete contattarmi vi lascio il mio e-mail:
pons@bbs.infosquare.it
se volete visitare la mia web-page musicale eccovi l’indirizzo:
http://www.infosquare.it/muzika/muzika.htm

Giulio Pons

Commenta