Introduzione al controllo derrore Introduzione Quando dei dati

  • Slides: 14
Download presentation
Introduzione al controllo d’errore

Introduzione al controllo d’errore

Introduzione Quando dei dati vengono scambiati tra due host, può accadere che il segnale

Introduzione Quando dei dati vengono scambiati tra due host, può accadere che il segnale venga alterato. In questi casi, il ricevente riceve un messaggio diverso da quello trasmesso dal mittente. Il controllo d’errore, necessario per ottenere un trasposto affidabile, si basa su: • somme di controllo (checksum); • correzione degli errori. Le tecniche di controllo d’errore sono applicate a tutti i livelli dello stack di protocolli. Ci occuperemo delle tecniche di controllo e correzione importanti per i livelli 3 e 4, e in particolare per la suite di protocolli TCP/IP.

IP checksum Il valore del checksum si calcola: • trattando l’intestazione come una sequenza

IP checksum Il valore del checksum si calcola: • trattando l’intestazione come una sequenza di interi a 16 bit (2 byte alla volta) dove checksum vale 0; • sommando gli interi (con aritmetica in complemento a 1); • prendendo il complemento a 1 (cioè il not binario) del risultato. Si ripete l’operazione e si confronta il valore di checksum ottenuto con quello ricevuto. Versione (4) IHL(4) Tipo di Servizio(8) Id del Datagramma(16) Time To Live(8) Lunghezza Totale(16) Flag(3) Protocollo(8) Offset di Frammentazione(13) Checksum dello header(16) Indirizzo IP sorgente(32) Indirizzo IP destinazione(32) Opzioni Padding Dati

TCP checksum TCP utilizza un meccanismo analogo, inoltre: • aggiunge una pseudo-intestazione che contiene,

TCP checksum TCP utilizza un meccanismo analogo, inoltre: • aggiunge una pseudo-intestazione che contiene, fra l’altro, l’IP della sorgente e della destinazione; • prende in considerazione anche i dati. Porta mittente Porta destinatario Numero di sequenza Numero di acknowledgement Lunghezza header Riservato Bit di codice Finestra Puntatore urgente Eventuali opzioni DATI Riempimento

PARAMETRI

PARAMETRI

Gestione dell’errore (1) Grazie al controllo di ridondanza con questi checksum, il ricevente riesce

Gestione dell’errore (1) Grazie al controllo di ridondanza con questi checksum, il ricevente riesce a stabilire se il frame sia arrivato integro o meno. Il servizio così ottenuto è di tipo best-try: se un frame arriva a destinazione corrotto, lo si scarta. Questa procedura: • è valida per un protocollo connectionless, come UDP, dove il trasporto non è garantito; • è chiaramente insufficiente per un protocollo connection -oriented come TCP.

Gestione dell’errore (2) Perchè il trasporto sia garantito, dobbiamo avere una strategia di reazione

Gestione dell’errore (2) Perchè il trasporto sia garantito, dobbiamo avere una strategia di reazione ad un frame corrotto. Ricordiamo le due principali strategie. • Forward Error Correction (FEC) Vengono utilizzati particolari codici di ridondanza (come il CRC del frame Ethernet) che permettono, non solo di rilevare l’esistenza di un errore, ma anche di correggerlo. • Automatic Repeat re. Quest (ARQ) Richiesta di ripetizione automatica, spesso usata a livello 3. – Il ricevente controlla se il pacchetto ricevuto è integro e manda conferma al mittente. – Se il pacchetto è corrotto il mittente può ritrasmetterlo finché non arriva correttamente.

Tipi di ARQ • IDLE RQ (detto anche “Stop & Wait” o “Send &

Tipi di ARQ • IDLE RQ (detto anche “Stop & Wait” o “Send & Wait”) “Manda pacchetto e aspetta conferma prima di mandare il successivo. Se corrotto ritrasmetti. ” • Continuous RQ “Manda una sequenza di pacchetti. Se alcuni sono corrotti, ritrasmettili. ” Le possibili strategie di ritrasmissione sono: – Go-Back-N – Selective Repeat Obiettivi: • correttezza (i pacchetti devono arrivano integri e nella corretta sequenza); • efficienza (sfruttare al meglio la banda di trasmissione).

Idle RQ I pacchetti vengono trasmessi serialmente da M(ittente) a R(icevente).

Idle RQ I pacchetti vengono trasmessi serialmente da M(ittente) a R(icevente).

Funzionamento di Idle RQ M spedisce il pacchetto e attende conferma da R. •

Funzionamento di Idle RQ M spedisce il pacchetto e attende conferma da R. • Se entro un certo tempo T non viene ricevuto un pacchetto di controllo detto ACK (ACKnoledgement), il pacchetto viene rispedito automaticamente. • Se R riceve correttamente il pacchetto (controllo di ridondanza) manda ad M un ACK (ACKnoledgement), per confermare la corretta ricezione. • Se invece il pacchetto arriva corrotto R può : a) attendere che M lo rispedisca; b) inviare un blocco di controllo NAK (Negative ACKnowledgement) per richiedere la ritrasmissione (explicitrequest).

Idle RQ con ri-trasmissione implicita (1)

Idle RQ con ri-trasmissione implicita (1)

Idle RQ con ri-trasmissione esplicita (2)

Idle RQ con ri-trasmissione esplicita (2)

Idle RQ: temporizzazione

Idle RQ: temporizzazione

Idle RQ: timeout • Il tempo di timeout, dopo il quale M ritrasmette il

Idle RQ: timeout • Il tempo di timeout, dopo il quale M ritrasmette il pacchetto, deve essere scelto tenendo conto dell’entità dei tempi di propagazione, trasmissione ed elaborazione. • Visto che M rispedisce il pacchetto allo scadere del timer, e possibile che R ne riceva più di uno: quelli di troppo vengono scartati. • Perché R possa riconoscere di aver già ricevuto un pacchetto, è necessario che questi siano numerati. In IDLE RQ, visto che M non manda mai un nuovo pacchetto prima di aver ricevuto un ACK su quello precedente, bastano 2 numeri di frame, tipicamente 0 e 1. FINE