2012-03-09 12 views
10

Non riesco a capire il concetto e il funzionamento del brutto termine "controllo di ridondanza ciclico". Sto frequentando un corso universitario su Computer Networks e mi sto già perdendo.Che cos'è la verifica della ridondanza ciclica e come funziona in termini semplici (stile for-dummies)?

Il problema è che la mia comprensione della matematica è molto limitata (ho studiato matematica molto tempo fa a scuola e ne ho dimenticato la maggior parte) e non riesco ad ottenere per esempio che diavolo è un polinomio generatore, quali polinomi devono fare con CRC e riassumerlo - tutto ciò mi sembra del tutto incomprensibile.

Ho letto la voce wiki su CRC ma non mi ha aiutato poiché non sono bravo in matematica e tutti questi simboli e termini matematici sono come i cinesi per me.

Capisco che CRC viene utilizzato per il rilevamento degli errori durante l'invio di dati sulla rete ma da quel momento in poi sono perso.

Qualcuno può aiutarmi a spiegare questo concetto in termini semplici ed eventualmente dare un esempio?

Durante l'ultima lezione il professore ha iniziato a disegnare tutti questi numeri e zero, dividendo e io non so cosa e stavo solo guardando e sentendomi stupido.

Sarei molto grato a chiunque possa aiutarmi a capire!

+0

hai provato a leggere un articolo su di esso in Wikipedia? – kirilloid

+0

Ti suggerisco di leggere il seguente pdf: http://www.HackersDelight.org/crc.pdf – guga

+0

sì, ho letto entrambi, ma stavo pensando che qualcuno potesse spiegarlo meglio e in termini più semplici ... –

risposta

19

Se si desidera che la risposta sia molto semplice è necessario accettare qualche semplificazione, se siete disposti a convivere con questo, qui va:

I dati vengono trasmessi su collegamenti imperfetti - errori possono verificarsi sulla modo. Immagina di voler essere sicuro che le informazioni ricevute siano le stesse di quelle trasmesse senza sprecare troppa larghezza di banda, come faresti?

È possibile trasmettere ogni informazione due volte e se sul lato ricevente si vede che il primo è diverso dal secondo si sa che si è verificato un errore ed è necessario richiedere nuovamente i dati - ma questo sarebbe molto dispendioso, ridurrebbe effettivamente la larghezza di banda a metà.

Ora, cosa succede se si può calcolare un valore che è molto più piccolo dei dati stessi ma dipende da esso? Quindi, se i dati sono stati modificati lungo il percorso (a causa di un errore), il valore calcolato non corrisponderebbe più ai dati e si sarebbe verificato un errore. Esiste un tale calcolo?

Che dire di divisione semplice e prendendo un resto come questo valore?

Dire che voglio trasmettere un'informazione/numero 1.000. Lo divido per numero scelto - come 6 per esempio ... che mi dà 166 e un resto di 4. Prendo il resto come valore di controllo che è molto più piccolo delle informazioni che sto trasmettendo in modo da non sprecare troppa larghezza di banda e trasmetto 1.000 seguiti da 4. Un ricevitore lo riceve, prende il numero 1.000 lo divide per 6 e se il resto è 4 allora si presuppone che non si sia verificato alcun errore.

Se si fosse verificato un errore e che avrebbe ricevuto 998 invece di 1.000 causa di un errore sul link - sarebbe dividerlo per 6, ottenere un resto di 2 che non corrisponde a 4 e viola sa è verificato un errore. Questo è il principio di base di CRC.

Ovviamente è un po 'più complicato perché divide per polinomio ma il principio di usare un resto come "valore corto che rappresenta i dati" per controllarlo per errori nello stesso modo.

Spero che questo vi aiuta a ottenere la testa in giro su quello che sta succedendo;)

+1

Questa risposta eccessivamente semplificata potrebbe essere un buon punto di partenza per comprendere realmente il concetto di CRC. :) –

Problemi correlati