3. Il livello trasporto Flashcards
(29 cards)
Spiega il servizio di trasporto e i protocolli che ci “lavorano”.
I servizi di trasporto forniscono la comunicazione logica tra processi applicativi di host differenti. I protocolli di trasporto vengono eseguiti nei sistemi terminali. Il lato invio scinde i messaggi in segmenti e li passa al livello di rete, il lato ricezione invece riassembla i segmenti in messaggi e li passa al livello applicazione. I protocolli più usati in Internet sono TCP e UDP.
Spiega quale è la differenza tra il livello di rete e il livello di trasporto.
Il livello di trasporto è la comunicazione logica tra processi, mentre il livello di rete è la comunicazione logica tra host. Per spiegare meglio il concetto utilizziamo un’analogia con la posta ordinaria. Ad esempio due bambini si mandano delle lettere, il protocollo di trasporto saranno i genitori che porteranno la lettera alle poste, mentre il protocollo di rete sarà il servizio postale.
Quali sono le differenze e caratteristiche principali dei protocolli TCP e UDP?
TCP è affidabile e consegna nell’ordine originale, inoltre controlla la congestione, controlla il flusso e fa il setup della connessione. Invece UDP è inaffidabile, consegna senza ordine, ma questa assenza di controlli la lo rende più veloce rispetto a TCP.
Spiega il concetto di multiplexing e demultiplexing.
Multiplexing al trasmettitore: aggiunge un header con PCI del livello transport, perché ne avrà bisogno il ricevitore per gestire dati da diverse socket. Demultiplexing al ricevitore: utilizza le PCI nell’ header per consegnare i segmenti ricevuti alle socket giuste.
Che cosa sono le porte TCP e UDP.
La destinazione finale di un segmento non è un host, ma un processo che gira sull’host. L’interfaccia tra l’applicazione e il livello di trasporto è la porta. La porta è identificata da un intero di 16 bit, i numeri di porta si possono anche classificare come statici(associati con applicazioni standard, tipo email, DNS …) e dinamici(assegnati automaticamente dal sistema operativo quando si apre una connessione o si crea una socket).
Come funziona il demultiplexing senza connessione?
Il demultiplexing senza connessione si basa sul protocollo UDP. La socket UDP è identificata da due parametri(indirizzo IP e numero di porta della destinazione). Quando l’host riceve il segmento UDP invia il segmento alla socket con quel numero di porta. Datagrammi IP con indirizzi IP di origine e/o numeri di porta di origine differenti vengono inviati alla stessa socket.
Come funziona il demultiplexing alla connessione?
La socket TCP è identificata da 4 parametri(indirizzo IP, numero di porta di origine, indirizzo IP di destinazione, numero di porta di destinazione). L’host ricevente utilizza i 4 parametri per inviare il segmento alla socket appropriata. Un host server può supportare più socket TCP contemporanee. I server web quindi hanno socket differenti per ogni connessione client.
Spiega in maniera leggermente più precisa che cos’è UDP.
UDP(User Datagram Protocol) è un protocollo di trasporto con servizio di consegna best effort. I segmenti UDP possono essere perduti, consegnati fuori sequenza all’applicazione. Inoltre UDP è senza connessione, ovvero no handshaking tra mittente e destinatario UDP. Esiste perché è semplice e veloce, per questo viene utilizzato in applicazioni che possono permettersi di perdere qualche pacchetto ma che invece devono essere veloci, inoltre viene anche utilizzato per i DNS.
Che cos’è checksum UDP e a che cosa serve?
L’obiettivo di checksum UDP è di rilevare gli “errori”(bit alterati) nel segmento trasmesso. Il mittente tratta il contenuto del segmento come una sequenza di interi da 16 bit, checksum somma le parole di 16 bit nel segmento e calcola il complemento a 1 della somma, il mittente pone il valore ottenuto nel campo checksum del segmento UDP. Il ricevente somma tutte le parole di 16 bit del segmento, incluso il checksum e controlla se il risultato è una parola di 16 bit tutti uguali a 1, se sì allora nessun errore rilevato, altrimenti errore rilevato.
Che cosa è ARQ e a che cosa serve?
ARQ(Automatic Repeat reQuest) è una classe di protocolli che cerca di recuperare le perdite di pacchetti. Usa pacchetti speciali per notificare il trasmettitore di una avvenuta ricezione corretta(Acknowledgments(ACK)). Esempi di protocolli basati su forme di ARQ sono: Stop-and-Wait, Go-back-N, Selective Repeat, TCP, il protocollo MAC dei sistemi wifi…
Spiega il protocollo Stop-and-Wait.
In Stop-and-Wait il trasmettitore invia una PDU(e mantiene una copia locale), imposta un timeout e attende la ricezione del rispettivo ACK. Se non riceve nessun ACK entro il timeout, invia nuovamente la stessa PDU, altrimenti se riceve l’ACK, controlla che l’ACK non contenga errori(checksum), controlla il numero di sequenza, se è tutto OK, allora procede con l’invio della PDU successiva. Il ricevitore invece quando riceve una PDU, controlla se ci sono error(checksum) e controlla il numero di sequenza(se è corretto, invia l’ACK e passa l’SDU ai layer superiori, se invece c’è un problema cancella la PDU(drop))
Come funzionano i protocolli con pipelining e quali sono le sue forme?
Con pipelining intendiamo che il trasmettitore accetta che ci siano diversi pacchetti “in volo”, cioè per i quali non ha ancora ricevuto un ACK. Abbiamo due forme di protocolli con pipelining: Go-back-N e selective repeat.
Definisci i seguenti concetti in merio ai protocolli con pipelining: finestra di trasmissione, finestra di ricezione, puntatore low e puntatore up.
La finestra di trasmissione è l’insieme di PDU che il trasmettitore può trasmettere senza avere ancora ricevuto l’ACK corrispondente. La finestra di ricezione è l’insieme di PDU che il ricevitore può accettare e immagazzinare. Il puntatore low punta al primo pacchetto nella finestra di trasmissione, mentre il puntatore up punta all’ultimo pacchetto già trasmesso.
Spiega in parole generali come funzionano Go-back-N e Selective Repeat.
In Go-back-N il mittente può avere fino a N pacchetti senza ACK in pipeline, il ricevente invia solo ACK cumulativi(indica la ricezione corretta di tutti i pacchetti fino a un certo indice), il mittente ha un timer per il più vecchio pacchetto senza ACK(se il timer scade, ritrasmette tutti i pacchetti senza ACK).
In Selective Repeat il mittente può avere fino a N pacchetti senza ACK in pipeline, il ricevente dà gli ACK solo ai singoli pacchetti, il mittente mantiene un timer per ciascun pacchetto che non ha ancora ricevuto ACK(quando il timer scade, ritrasmette solo i pacchetti che non hanno avuto ACK).
Fai una panoramica di TCP.
TCP è un protocollo a livello di trasporto punto-punto. Flusso di byte affidabile e consegnato in ordine. Utilizza il pipelining, dove meccanismi di controllo di flusso e di congestione TCP definiscono la dimensione della finestra e usa ACK cumulativi. Inoltre TCP è full duplex, ovvero il flusso di dati è bidirezionale nella stessa connessione. TCP è orientato alla connessione che significa che fa un setup della connessione tramite handshaking.
Spiega come funziona il setup della connessione TCP.
La procedura di setup della connessione TCP si chiama “three-way handshake”:
- Host A(il client che inizia la connessione): segmento con flag SYN a 1
- Host B(server in attesa di connessioni): segmento con flag SYN e ACK a 1
- Host A: segmento con il flag ACK a 1
Come procede una chiusura di una connessione TCP e quali sono le possibili varianti?
Le connessioni TCP sono sempre bidirezionali, quindi bisogna sempre chiuderle in entrambe le direzioni. Abbiamo al procedure “gentile” dove si invia un segmento TCP con flag FIN a 1 e il ricevitore invia un ACK, così la connessione è semi-chiusa, perché si possono ancora mandare dai nella direzioni opposta(la chiusura è completa solo quando si invia un FIN e si riceve un ACK anche nell’altra direzione). Può esserci anche un chiusura “brusca” con il flag RST, che si usa per resettare le connessioni non gestibili o che si trovano in uno stato di errore.
Che cos’è la congestione di rete?
Informalmente la congestione sono troppi trasmettitori che stanno mandando troppi dati e la rete non riesce a gestire tutto questo traffico. Si manifesta in pacchetti persi e ritardi lunghi.
Che cos’è il controllo di congestione in TCP?
Cominciamo con il dire, che non c’è un solo algoritmo in TCP per gestire la congestione, molto spesso l’implementazione di TCP dipende dal sistema operativo. Il controllo di congestione è una delle caratteristiche più importanti di TCP, perché adatta il tasso di trasmissione alle condizione di rete e evita di saturare e congestionare la rete. Ci sono diversi approcci, come ad esempio quello end-to-end(capisce se c’è congestione osservando le perdite dei pacchetti e ritardi) o il controllo di congestione assistito dalla rete, dove i router forniscono feedback ali host sullo stato della rete, utilizzando un singolo bit per indicare la congestione.
Definisci come funziona il metodo AIMD(Additive Increase Multiplicative Decrease) per il controllo della congestione in TCP.
Il AIMD è un approccio dove il mittente aumenta il tasso di trasmissione(cioè la dimensione della finestra) cercando di occupare la banda disponibile, finché non si rilevano perdite. Additive Increase perché aumenta la finestra di 1 MSS ogni RTT finché non ci sono perdite. Multiplicative decrease perché riduce la finestra(tipicamente della metà) quando si rileva una perdita.
Perché usare AIMD(Additive Increase Multiplicative Decrease)?
Il principale motivo per utilizzare AIMD è per ottenere equità.
Quali sono le principali caratteristiche dei meccanismi per il controllo della congestione?
Il controllo di congestione gestisce l’adattamento della cosiddetta finestra di congestione(CWND=byte che il trasmettitore può inviare nella rete). In TCP ci sono diversi algoritmi per adattare la CWND.
Nel controllo della congestione della connessione TCP, spiega che sono slow start e congestione avoidance?
In Slow Start per ogni ACK valido ricevuto, aumento CWND di 1 MSS(dunque un aumento esponenziale), quando CWND raggiunge o supera una soglia(slow start threshold) passa alla modalità congestion avoidance. In congestion avoidance per ogni ACK ricevuto, aumento la CWND di 1/CWND segmenti(un aumento lineare).
Spiega il fast recovery nel controllo della congestione TCP.
Il fast recovery è un meccanismo del controllo della congestione in TCP che entra in azione dopo una perdita di pacchetti, rilevata tramite l’arrivo di duplicated ACK. Invece di ridurre drasticamente la velocità di trasmissione, come avviene nel slow start, Fast Recovery riduce la CWND di circa la metà e consente al mittente di mandare pacchetti senza attendere il timeout(RTO).