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
Come viene aperta una connessione prima dell’invio dei dati
Tramite il Three way handshake:
Passo 1: il client invia segmento di controllo TCP SYN al sever
Passo 2: server riceve SYN e risponde con un SYN/ACK
Passo 3: client riceve SYN/ACK e invia ACK al server
Connessione Instaurata
Come viene chiusa la connessione con TCP?
Ci si presenta il problema dei due eserciti.
Passo 1: client invia un segmento TCP con FIN alto al server
Passo 2: server riceve FIN risponde con ACK e inizia la chiusura della connessione inviano FIN al client
Passo 3: client riceve FIN e risponde con un ACK (rimane in attesa nel caso riceva un FIN duplicato)
Passo 4: server riceve ACK e chiude la connessione
Come vengono gestiti il controllo di flusso e il controllo di congestione in TCP
Receiver window: dipende dalla dimensione del buffer di ricezione
Congestion window: basata su una stima della capacità della rete
Come funziona il controllo di flusso
Il mittente non dovrà sovraccaricare il ricevente inviando dati ad una velocità troppo elevata
Il ricevente comunica dinamicamente al mittente la dimensione corrente del buffer (campo RcvWindow nel segmento TCP) e il mittente conserva i dati già trasmessi ma non riscontrati e limita tale quantità all’ultima RcvWindow ricevuta
Cos’è l’algoritmo di Nagle
Per applicazioni che inviano dati un byte alla volta:
invia il primo byte e bufferizza il resto finché non giunge l’ACK, in seguito:
-invia, in un unico segmento, tutti i caratteri bufferizzati
-ricomincia a bufferizzare finché non giunge l’ACK per ognuno di essi
Elimina cosi la sindrome della Silly Window al trasmettitore
Cos’è la sindrome della silly window
Si verifica quando il sender invia blocchi grandi ma il receiver legge un byte alla volta
Soluzione di Clark: Impedisce al receiver di aggiornare la finestra un byte alla volta
Il ricevitore indica una finestra nulla finchè il buffer di ricezione non si è svuotato per metà o per una porzione uguale a MSS.
Come funziona il controllo della congestione
La congestione nella rete è dovuta a:
* un numero elevato di sorgenti di traffico
* sorgenti di traffico che inviano troppi dati
* traffico inviato ad una frequenza troppo elevata
In presenza di questi fenomeni, singoli o concomitanti, la rete è sovraccarica e si possono verificare ritardi e perdita dei pacchetti
Quali sono le tecniche di controllo della congestione
Approccio end-to-end: Nessuna segnalazione esplicita dalla rete ma a partire dall’osservazione di ritardi e perdite di pacchetti gli end-system deducono uno stato di congestione nella rete
Approccio utilizzato da TCP
Approccio in base a segnalazioni della rete: I router forniscono informazioni circa lo stato della rete agli end-system
Come viene controllata la congestione in TCP
Controllo end-to-end: nessun feedback dalla rete
Frequenza di trasmissione variabile, ovvero dipendente dalla cosiddetta finestra di congestione (CongWin)
Considerando controllo di flusso e controllo di congestione insieme, si ha, dunque:
LastByteSent – LastByteAcked ≤ min{RcvWindow, CongWin}
Si procede per tentativi, per stabilire quanto si può trasmettere:
Incrementare Congwin finché non si verifica la perdita di un segmento (interpretata come il sopraggiungere dello stato di congestione)
In seguito alla perdita di un segmento:
– decrementare Congwin
– ricominciare daccapo
Cos’è lo Slow start e l’AIMD in TCP
“Partenza lenta”
Si ha una crescita esponenziale della dimensione della finestra (ogni RTT) fino a quando non si ha un evento di perdita. Dopo di esso abbiamo due possibilità:
-Additive Increase: Una volta raggiunta la soglia ci si avvicina con cautela al valore della banda disponibile tra le due estremità della connessione. Questa fase è nota come fase di congestion avoidance
-Multiplicative Decrease: Al sopraggiungere della congestione (scadenza di un timeout o ricezione di tre ACK duplicati consecutivi), la finestra di congestione viene dimezzata
Cos’è la soglia o threshold
Parametro stimato che ci permette di controllare la congestione
Cos’è il TCP Reno
TCP Reno “fast recovery” elimina la fase di partenza lenta dopo un evento di perdita dedotto dalla ricezione di tre ACK duplicati: tale evento indica che, nonostante si sia perso un pacchetto, almeno 3 segmenti successivi sono stati ricevuti dal destinatario