Livello di trasporto (Transport layer 4) Flashcards

1
Q

Quali sono le funzioni del livello di trasporto?

A

Il livello di trasporto ha il compito di instaurare un collegamento logico tra le applicazioni residenti su host remoti, rende invisibile il trasporto fisico dei messaggi alle applicazioni
Il livello di trasporto è presente solo negli end systems (host)
Svolge funzioni di multiplexing/demultiplexing per applicazioni

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Come avviene l’indirizzamento dei processi applicativi? (Gestione del multiplexing)

A

Le funzioni di multiplexing/demultiplexing vengono gestite mediante indirizzi contenuti nelle PDU di livello di trasporto, questi indirizzi sono lunghi 16 bit e prendono il nome di porte e possono assumere valori compresi tra 0 e 65535.

I numeri noti sono assegnati ad importanti applicativi dal lato server (HTTP, FTP, SMTP, DNS, ecc.) 1 - 1023
I numeri registrati sono assegnati a specifiche applicazioni da chi ne faccia richiesta (tipicamente protocolli proprietari) 1024 - 49151
I numeri dinamici sono assegnati dinamicamente ai processi applicativi lato client 41952 - 65535

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cos’è il servizio di buffering?

A

Quando un processo viene associato ad una porta (lato client o lato server) viene associato dal sistema operativo a due code, una d’ingresso e una d’uscita

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quali sono i principali protocolli per il servizio di trasporto?

A

TCP (Transmission Control Protocol), orientato alla connessione e affidabile

UDP (User Datagram Protocol), senza connessione e non affidabile

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quali sono le caratteristiche del protocollo UDP?

A

E’ il modo più semplice di usare le funzionalità di IP

Funzionalità aggiuntive:
– Indirizzamento delle applicazioni (mux/demux)
– Blando controllo d’errore sull’header (senza correzione)

Protocollo datagram
Non garantisce la consegna
Non esercita nessun controllo (né di flusso, né di errore)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Come sono formati i segmenti del protocollo UDP?

A

Gli header contengono 4 campi: source port, destination port, length, checksum
Infine vi è il campo dati a cui è destinato un numero arbitrario di spazio

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Perchè usare UDP e non TCP?

A

Minore latenza poichè non occorre stabilire una connessione

Maggiore semplicità:
– Non occorre tenere traccia dello stato della connessione
– Poche regole da implementare

Minore overhead cioè l’header UDP è minore dell’header TCP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Come viene effettuato il controllo di integrità?

A

Il protocollo UDP per effettuare questo controllo utilizza il campo checksum
Il campo di checksum (16 bit) è calcolato dal trasmettitore ed inserito nell’header del datagram
Il ricevitore ripete lo stesso calcolo sul segmento ricevuto e se il risultato è corretto accetta il segmento, altrimenti lo scarta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Come viene calcolato il checksum lato client e lato server?

A

Viene calcolato considerando l’header UDP, uno pseudo-header IP ed i dati

Lato trasmettitore:
L’insieme dei campi è diviso in blocchi da 16 bit
Il campo Checksum è inizializzato a 0
Tutti i blocchi vengono sommati in aritmetica complemento a uno
Il risultato è complementato ed inserito nel campo di checksum del segmento inviato

Lato ricevitore:
L’insieme di bit è diviso ancora in blocchi da 16 bit
Tutti i blocchi vengono sommati in aritmetica complemento a uno
Il risultato è complementato

Se sono tutti 0 il pacchetto è accettato altrimenti è scartato

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cos’è un collegamento ideale?

A

Un collegamento su cui tutto ciò che viene trasmesso arriva nello stesso ordine e viene correttamente interpretato a destinazione

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Come vengono effettuati i controlli d’errore?

A

Gli errori sono gestiti attraverso i protocolli d’errore

Ciascuna trama ricevuta correttamente viene riscontrata positivamente con un messaggio di (Acknowledgment o ACK)
A volte l’errore può essere segnalato da un messaggio detto di NACK
La mancanza di ACK o la presenza di NACK segnala la necessità di ritrasmettere
La procedura si ripete finché la trama viene ricevuta corretta

Sono usati meccanismi come: timeout, finestra di ritrasmissione

Queste procedure possono essere attivate a qualunque livello, sono state sempre presenti a livello di linea
sui collegamenti fisici a causa delle cattive linee fisiche del passato ma proteggere i collegamenti fisici non basta, i pacchetti
possono andare persi nei buffer dei router

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Da quali componenti è composto il protocollo di ritrasmissione Stop and Wait? Cos’è e come si calcola la sua efficienza?

A

Come messaggio usa ACK
Meccanismo di timeout
Ogni messaggio ricevuto correttamente è riscontrato dal ricevitore
Numerazione dei pacchetti

L’efficienza di un protocollo è data dalla frazione di tempo in cui il canale è usato per trasmettere informazione utile in assenza di errori (Tempo utile/Tempo totale)

Efficienza bassa se T&laquo_space;tau
Protocollo non adatto a situazioni con elevato ritardo di propagazione e/o elevato ritmo di trasmissione
Utilizzato spesso in modalità half-duplex

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Com’è organizzata la numerazione dei pacchetti nel flusso?

A

Sono numerati i pacchetti (sn) e gli ack

Se viene inviato uno stesso pacchetto questo viene riconosciuto perchè avrà lo stesso sn di un precedente
Quando il trasmettitore riceve un ACK lo può assegnare al pacchetto corretto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Da quali componenti è composto il protocollo di ritrasmissione Go Back N? Cos’è e come si calcola la sua efficienza?

A
Come messaggio usa ACK
Meccanismo di finestra scorrevole: se il riscontro del primo pacchetto arriva prima della fine della finestra, la finestra viene fatta scorrere di una posizione, sennò (quando si verifica un errore) si ricomincia a trasmettere la finestra dal primo pacchetto non riscontrato allo scadere di un timeout
Il riscontro (ACK) può essere collettivo, dunque convalidare la ricezione di pacchetti precedenti

Se non ci sono errori la trasmissione non si ferma mai (efficienza 100%)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cos’è il piggy banking?

A

Gli ACK possono anche essere inseriti negli header dei pacchetti che viaggiano in direzione opposta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Come funziona lo sliding window flow control?

A

Controllo di flusso a finestra mobile

E’ possibile usare un meccanismo come quello del Go-Back-N

La sorgente non può inviare più di W trame (stessa funzione del parametro N) senza aver ricevuto il riscontro

I riscontri vengono inviati dal ricevitore solo quando i pacchetti vengono letti (tolti dal buffer) dal livello superiore

17
Q

Come può essere usato il campo W nello sliding window flow control?

A

Può essere usato per la gestione della finestra del controllo di flusso, comunicando lo spazio di buffer libero. Si può anche decidere di comunicare un numero minore dell’effettivo spazio libero come margine di sicurezza.

18
Q

Quali servizi offre e quali sono le caratteristiche del protocollo TCP?

A

Mediante TCP è possibile costruire applicazioni che si basano sul trasferimento di file senza errori tra host remoti
Il TCP effettua anche un controllo di congestione end-to-end che limita il traffico in rete e consente agli utenti di condividere in modo equo le risorse

TCP è connection oriented:
Prima del trasferimento di un flusso dati occorre instaurare una connessione mediante opportuna segnalazione, che si appoggia su una rete connectionless (datagram) e le connessioni TCP sono di tipo full-duplex

19
Q

Come viene gestito il flusso dati in una comunicazione tra socket TCP?

A

TCP trasmette un flusso di dati, la socket del trasmettitore converte il flusso di dati in segmenti che possono essere trasmessi in rete, le dimensioni dei segmenti sono variabili. Il processo applicativo che vuole comunicare passa i dati alla TCP socket che li posiziona in un buffer da cui, periodicamente, o quando avvengono particolari condizioni, TCP forma un segmento.

20
Q

Quale meccanismo di controllo d’errore utilizza TCP?

A

TCP adotta un meccanismo per il controllo delle perdite di pacchetti di tipo Go-Back-N

21
Q

Da quali campi è formato l’header di un segmento TCP?

A

Source port, Destination port: indirizzi di porta sorgente e porta destinazione di 16 bit
Sequence Number: il numero di sequenza del primo byte nel payload
Acknowledge Number: numero di sequenza del prossimo byte che si intende ricevere (numero valido solo se flag ACK valido)
HLEN (4 bit): contiene la lunghezza complessiva dell’header TCP, che DEVE essere un multiplo intero di 32 bit
Window: contiene il valore della finestra di ricezione come comunicato dal ricevitore al trasmettitore
Checksum: il medesimo di UDP, calcolato in maniera uguale

Flags:
URG: vale 1 se vi sono dati urgenti e quindi il TCP deve passare in modalità urgente; in questo caso urgent pointer punta all’ultimo byte dei dati all’interno del flusso oltre il quale TCP può tornare in modalità normale

ACK: vale 1 se il pacchetto è un ACK valido; in questo caso l’acknowledge number contiene un numero valido

PSH: vale 1 quando il trasmettitore intende usare il comando di PUSH; il ricevitore può anche ignorare il comando (dipende dalle implementazioni)

RST: reset, resetta la connessione senza un tear down esplicito

SYN: synchronize; usato durante il setup per comunicare i numeri di sequenza iniziale

FIN: usato per la chiusura esplicita di una connessione

Options and Padding: riempimento (fino a multipli di 32 bit) e campi opzionali, es., durante il setup per comunicare il MSS o il fattore di scala della finestra

22
Q

Cos’è il MSS?

A

Il MAX SEGMENT SIZE definisce la dimensione massima del segmento che verrà usata nella connessione TCP
La dimensione è decisa dal mittente durante la fase di setup, di default è 536 byte, il valore massimo 65535 byte

23
Q

Cos’è il fattore di scala della finestra?

A

Definisce il fattore di scala della finestra, di default è 1
L’opzione fa sì che venga moltiplicato il valore del campo Window di un fattore pari a 2 elevato al valore contenuto nel campo fattore di scala

24
Q

Quali sono le porte delle applicazioni più diffuse?

A
22 SSH
21 FTP signalling
20 FTP data
23 telnet
25 SMTP
53 DNS
80 HTTP
110 POP
143 IMAP
25
Q

Come avviene il setup delle connessioni? Three Way HandShake

A
  1. Passive open: Il processo applicativo server comunica alla socket di essere pronto a ricevere connessioni
  2. Active open: Il processo applicativo client comunica alla socket di volersi connettere a una data socket
  3. Il client manda un SYN con un SN iniziale casuale (900)
  4. Quando il client lo riceve manda un ACK/SYN con un SN iniziale casuale (6667) e AN (901)
  5. Quando il client riceve l’ACK/SYN invia un ACK con AN = 6668 ed SN = 901 ed inserisce anche la dimensione della finestra del server.
  6. A questo punto la connessione TCP è aperta sul client la socket client notifica all’applicazione che la
    connessione è aperta
  7. Non appena il TCP server riceve l’ACK del TCP client, notifica al suo applicativo che la connessione è aperta
26
Q

Come avviene il teardown (chiusura) delle connessioni TCP?

A

Il socket TCP che chiude la connessione invia un messaggio di FIN (flag FIN=1) con gli ultimi dati
L’altro socket invia un ACK per confermare la chiusura

La connessione rimane comunque aperta nell’altra direzione e quindi il TCP dall’altra parte può continuare ad inviare dati

Infine, il TCP dall’altra parte chiude la connessione invia anch’esso un messaggio di FIN (flag FIN=1)
Il TCP che aveva già chiuso la connessione in direzione opposta invia un ACK finale per confermare

27
Q

Qual è l’utilità del flag RST?

A

Il flag RST se impostato permette di chiudere la connessione in entrambi le direzioni ed interrompendo ogni invio dati

28
Q

Come viene eseguito il controllo sul flusso nel protocollo TCP?

A

Il TCP ricevente controlla il flusso di quello trasmittente ed organizza i dati ricevuti in buffer di entrata, al contrario il TCP trasmittente li organizza in buffer di uscita per inviarli al momento giusto

Nel lato ricevitore:
Esiste il campo Receiver Window (RCVWND) che indica lo spazio disponibile per ricevere nuovi dati

Nel lato trasmittente:
Esiste il campo Send Window (SNDWND): parte inutilizzata del buffer, rappresenta i byte che possono essere trasmessi senza attendere ulteriori riscontri

29
Q

Cos’è la Silly Window Syndrome lato ricevente e lato trasmittente? E quali sono le rispettive soluzioni?

A

Lato ricevitore:

Se il ricevitore per qualche eventualità svuota lentamente il buffer di ricezione, il trasmettitore invia segmenti di finestra molto piccola ed invia segmenti corti con molto overhead (penalità: poca informazione e molti più header)
La soluzione è l’algoritmo di Clark: il ricevitore “mente” al trasmettitore indicando una finestra nulla sino a che il suo buffer di ricezione non si è svuotato per metà o per una porzione almeno pari al MSS
Finestra = max(1/2 Receive_Buffer_Size, Maximum_Segment_Size)

Lato trasmettitore:

L’applicazione genera dati da inviare lentamente e la socket invia segmenti molto piccoli man mano che vengono prodotti
La soluzione è l’algoritmo di Nagle: il TCP sorgente invia la prima porzione di dati anche se corta, gli altri segmenti vengono generati e inviati solo se: 1 - Il buffer d’uscita contiene dati sufficienti a riempire un MSS, 2- Quando si riceve un acknowledgement per un
segmento precedente

30
Q

Come viene gestito il controllo d’errore nel protocollo TCP?

A

Il meccanismo di ritrasmissione è di tipo Go-back-N con Timeout con delle differenze:
TCP mantiene nel buffer anche i segmenti fuori ordine
Quando arrivano i segmenti mancanti la finestra scorre in avanti fino al primo segmento non riscontrato in quelli ricevuti fuori ordine
Viene mandato un ACK che riscontra collettivamente anche i segmenti fuori ordine

31
Q

Come viene stimato il valore ottimale del timeout?

A

Il TCP adatta il timeout di trasmissione alle condizioni reali della rete tramite gli algoritmi di Karn e Jacobson
All’inizio il timeout parte da 1 s

A seguito di una ritrasmissione è meglio passare all’algoritmo di Karn:
– RTT non viene aggiornato
– Il timeout è moltiplicato per un fattore fisso (tipicamente 2)
– Il timeout cresce fino ad un valore massimo
– Dopo un numero massimo di ritrasmissioni la connessione viene chiusa

32
Q

Come viene gestito il controllo di congestione dal protocollo TCP?

A

Il modo più naturale per controllare il ritmo di immissione in rete dei dati per il TCP è quello di regolare la finestra di trasmissione. Il trasmettitore mantiene una Congestion Window (CWND) che varia in base agli eventi che osserva.
Il trasmettitore non può trasmettere più del minimo tra RCVWND e CWND. W = min(RCVWND, CWND)
Ogni perdita viene interpretata come un congestionamento della rete da TCP
La reazione ad un evento di congestione è quella di ridurre la finestra (CWND) a 1 MSS

Il valore della finestra CWND viene aggiornato dal trasmettitore TCP in base ad un algoritmo

33
Q

Come funziona il meccanismo slow start?

A

Il trasmettitore pone la CWND a 1 segmento (MSS) e la SSTHRESH ad un valore di default molto elevato
Dunque essendo CWND < SSTHRESH si parte in Slow Start
La CWND viene incrementata di 1 per ogni ACK ricevuto (crescita esponenziale di ordine 2)

L’incremento può andare avanti fino
– Primo evento di congestione
– Fino a che CWND < SSTHRESH, se vale il contrario si entra nel meccanismo di congestion avoidance
– CWND < RCWND, altrimenti W viene posta pari a RCWND

34
Q

Quando un collegamento (link) si definisce congestionato?

A

Un link è congestionato quando la somma dei ritmi di trasmissione dei flussi che lo attraversano è maggiore della sua capacità

35
Q

Cosa accade quando scade un timeout di ritrasmissione? (TCP)

A

Il TCP reagisce ponendo SSTHRESH uguale alla metà dei “byte in volo” e ponendo CWND a 1MSS
SSTHRESH = max(flightbyte/2, 2MSS)

Dunque CWND è minore di SSTHRESH e si entra nella fase di Slow Start
Il trasmettitore riparte ritrasmettendo tutti i segmenti a partire da quello per cui il timeout è fallito

36
Q

Come funziona il meccanismo di Congestion Avoidance?

A

Si incrementa la CWND di 1/CWND ad ogni ACK ricevuto (creascita lineare della finestra)

37
Q

Descrivi i meccanismo di fast retransmit e fast recovery

A

Se arrivano ACK duplicati un pacchetto sarà andato perso. Se arrivano ACK duplicati vuol dire che i pacchetti successivi a quello perso sono arrivati (niente congestione) e se non c’è congestione si può incrementare la CWND del numero di
pacchetti sicuramente arrivati.

  1. Alla ricezione del 3° ACK consecutivo duplicato (con lo stesso AN): Si pone: SSTHRESH = max(flightbyte/2, 2MSS)
  2. Viene ritrasmesso il pacchetto indicato dall’AN
  3. Si pone la CWND = SSTHRESH + 3*MSS
  4. Per ogni ulteriore ACK duplicato ricevuto la CWND viene incrementata di 1
  5. Vengono trasmessi nuovi segmenti se consentito dai valori di CWND e RWND
  6. Appena arriva un ACK che riscontra nuovi dati si esce dalla fase di fast recovery e si pone di nuovo:
    CWND = SSTHRESH = max(flightbyte/2, 2MSS)