Livello di Trasporto Flashcards
Cos’è il livello di trasporto
I protocolli di Livello Trasporto sono presenti solo negli end-system. Offre un canale di comunicazione logica
tra applicazioni attive su differenti host
Differenze tra livello di rete e livello di trasporto
Network-layer: trasferimento dati tra end-system
Transport layer: trasferimento dati tra processi. Naturalmente necessita dei servizi offerti dal livello rete.
Cosa si intende per Multiplexing e Demultiplexing
Segment: dati che sono scambiati tra processi a livello trasporto
Demultiplexing: inoltrare i segment ricevuti al corretto processo cui i dati sono destinati
Multiplexing: Raccogliere i dati provenienti dalle applicazioni, imbustare i dati con un header approriato
Cos’è UDP
User Datagram Protocol è un protocollo per il livello di trasporto. Ha un servizio best effort come IP ed è connectionless ovvero non è prevista una fase di inizializzazione
E’ possibile rendere UDP affidabile?
Si tramite una conferma di avvenuta ricezione e gestione degli errori che può essere effettuati anche tramite checksum
Come si può realizzare una trasmissione affidabile
Se la rete presenta errori di trasmissione bisogna effettuare il rilevamento degli errori e eventualmente la correzione o notifica di ritrasmissione al mittente. Per risolvere il problema dei duplicati in caso di ritrasmissione occorre inserire nell’header del segmento un numero di sequenza
Nel caso di canale che introduce perdita di pacchetti, è necessario introdurre un altro parametro: il tempo
In particolare un conto alla rovescia chiamato timeout dopo il quale scatterà la ritrasmissione
Come funziona lo Stop & Wait
Viene inviato un messaggio e si aspetta un riscontro prima di ritrasmettere un nuovo messaggio quindi come numero di sequenza è sufficiente utilizzare un bit.
Ad ogni ricezione di pacchetto il ricevente risponde con un ACK per segnalare che il pacchetto è arrivato a destinazione.
In caso di perdita di pacchetto o di ACK avviene una ritrasmissione del pacchetto
Ha delle performance molto basse
Come funziona il Go Back-N
Viene utilizzato il pipelining, ovvero più pacchetti inviati successivamente, senza aspettare il riscontro prima di inviarne un altro.
Nell’header del segmento vengono utilizzati k-bit per il numero di sequenza
Si utilizza una finestra di max N pacchetti dove una porzione della finestra saranno i pacchetti mandati ma che ancora non hanno ricevuto un riscontro e il resto sono ancora da mandare. Prima di questa finestra si trovano i pacchetti già ricevuti e dopo si trova uno spazio al momento non utilizzabile se non con lo scorrimento della finestra.
Viene introdotto l’ACK cumulativo, ovvero ricevere l’ACK di n significa che tutti i pacchetti precedenti all’n-esimo sono stati ricevuti
Come funziona il metodo Selective Repeat
In Go Back-N un errore su un solo pacchetto può
provocare la ritrasmissione di un elevato numero di
pacchetti, quindi va implementato un nuovo metodo. Nel Selective repeat il ricevente invia riscontri specifici per tutti i pacchetti ricevuti correttamente e il mittente ritrasmette soltanto i pacchetti per i quali non ha
ricevuto un ACK.
C’è ancora l’utilizzo della finestra che si sposta solo dopo che avrà ricevuto l’ACK per tutti i pacchetti all’interno di essa.
Cos’è TCP
TCP (Transmission Control Protocol) è un protocollo per il livello di trasporto. Le sue caratteristiche sono:
-una connessione unica tra host
-senza errori e con una sequenza ordinata
-pipelined
-connection oriented (handshaking)
-full duplex data (flusso bidirezionale in una connessione)
-controllo di flusso
Com’è strutturato un segmento TCP
-HLEN: 4 bit che indicano la grandezza dell’intestazione
-Porta: numero di porta di TCP
-Numero di Sequenza: identifica la posizione dei dati nel segmento
-Numero di riscontro: si riferisce allo stream che viene nella direzione opposta del num di sequenza
-Bit di Codice: ACK, RST, SYN, FIN, PSH, URG
-Finestra: numero che specifica la dimensione del buffer che TCP ha a disposizione per i dati in arrivo
-Puntatore urgente: punta i dati non urgenti per garantire che i più urgenti siano inviati per primi
-Checksum: verifica l’integrità dei dati che avviene tramite l’aggiunta di una pseudointestazione
-Opzioni: maximum TCP payload, window scale e selective repeat
Quali sono le caratteristiche principali di TCP
Riscontro e ritrasmissione: consiste nella ritrasmissione di un segmento se non è giunta conferma entro un tempo massimo (time-out)
Il numero di sequenza per un segmento è il numero nel flusso di byte del primo byte nel segmento.
Il numero di riscontro che un host scrive nei propri segmenti è il numero di sequenza del byte successivo che l’host attende da un altro. (ACK)
Invia riscontri cumulativi
Con questo metodo di riscontro cumulativo si ha il vantaggio che la perdita di un riscontro non blocca la trasmissione se confermato dal riscontro successivo
Che valore deve assumere il timeout?
Di sicuro sarà maggiore del RTT ma:
-Se timeout è scelto troppo breve: timeout prematuro, ritrasmissioni ridondanti, scarsa efficienza
-Se timeout è scelto troppo lungo: scarsa efficienza nella gestione delle ritrasmissioni
Quindi viene fatta una stima del RTT:
EstimatedRTT = (1-a)EstimatedRTT + aSampleRTT
(media esponenziale pesata)
e il valore del timeout sarà uguale a:
Timeout = EstimatedRTT + 4DevRTT,
dove:
DevRTT = (1-b)DevRTT + b*|SampleRTT-EstimatedRTT|
Cosa succede se scade il timeout?
Allo scadere di un timeout si imposta il prossimo intervallo al doppio del valore precedente
Quando il timer viene riavviato (ricezione di un ACK o di nuovi dati dall’applicazione), l’intervallo di timeout viene nuovamente configurato in funzione dei valori più recenti (forma limitata di controllo della congestione).
Quando avviene una ritrasmissione veloce?
Gli ACK duplicati ci consentono di rilevare la perdita di un pacchetto prima del timeout poiché se un segmento viene perso ci saranno molti ACK duplicati continui ed è qui che avverrà la ritrasmissione del pacchetto mancante