Strato 4 Flashcards

1
Q

A cosa serve IP?

A

A raggiungere destinazioni remote perchè solo con ethernet e quindi con il livello 2 non riusciremmo a farlo. IP infatti costruisce reti logiche su reti fisiche di livello 2.

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

Quali sono i problemi di IP per cui è necessario un altro livello?

A
  • quando un pacchetto IP arriva alla destinazione-IP deve essere trasferito al livello applicazione. Sull’host ci sono molto probabilmente più applicazioni e non solo una. Come fa il pacchetto a essere indirizzato correttamente?
  • ho fatto una richiesta a un web server che mi manda una risposta ma io intanto sto mandando una mail: come fa l’host a capire se i bit di risposta devono andare al browser o al client di posta?
  • si tratta di un protocollo best effort: non si ha la certezza che i dati arrivino. E se si tratta di operazioni bancarie? Bisogna garantire un trasporto end-to-end.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cosa permette di fare in generale l’assegnazione di porte?

A

multiplexing e demultiplexing

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

Cosa permettee in generale il livello 4?

A

trasferimento dati affidabile, controllo di flusso e di congestione

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

Quali sono i due protocolli di trasporto e cosa permettono di fare?

A

UDP: (de)multiplexing

TCP: (de)multiplexing, trasferimento affidabile, controllo di flusso e d congestione,

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

Il canale di livello 4 coinvolge la rete?

A

NO infatti i router in mezzo ai due terminali hanno solo fino al livello 3

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

Cos’è un canale di livello 4?

A

è un canale logico end-to-end

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

Il livello 4 può intervenire su perdita di pacchetti, ritardo e banda?

A

sì su perdita e no su ritardo e banda perchè è una cosa di cui si occupa il livello applicazione

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

come viene gestito il flusso dati da livello 5 a 3?

A

La sorgente (livello 5) manda un messaggio al livello 4 che lo divide in segmenti. I segmenti vengono imbustati in datagram, IP. Arrivati al ricevitore i segmenti vengono riassemblati e viene ricreato il flusso dati originale.

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

Di quali campi necessitano il multiplexing e demultiplexing?

A

iil livello 3 ha bisogno di IP destinazione e sorgente, il livello 4 di porta destinazione e sorgente. il datagram ip infatti imbusta il segmento di liv.4 contenente le porte e lo manda nella rete ip.

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

Cos’è un socket?

A

È l’interfaccia di comunicazione end-to-end tra due processi (programmi) che sono in esecuzione.
È dato da numero di porta e indirizzo IP e un socket è univoco nella rete. L’IP è necessario per l’identificazione del socket.

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

Quali sono le caratteristiche del demultiplexing per UDP?

A
  • il pocket UDP è identificato da 2 parametri: l’indirizzo IP e il numero di porta della destinazione

Quando l’host riceve il segmento UDP controlla il numero di porta di destinazione contenuto nel segmento e dirige il segmento UDP a tale porta. Il processo che riceve il segmento deve \textit{ascoltare} quella porta (socket API) e infatti il numero di porta serve a identificare il socket corretto.

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

Quali sono le caratteristiche del demultiplexing per TCP?

A

il socket TCP è identificato da 4 parametri (IP e porta sia sorgente che destinazione). In questo modo l’host può avere più socket contemporanei e infatti i server web possono avere un socket diverso per ogni client connesso

ci sono istanze diverse di una stessa applicazione -> processo multithread

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

COme fa un client a conoscere il numero di porta da contattare?

A

Well known ports

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

Cosa sono le well known ports?

A

Sono quelle porte che vanno da 0 a 1’24 e che i client conoscono perchè sono stabilite e fisse. Sono porte RISERVATE e associate a SERVIZI PRECISI.
ù

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

Chi e come controlla le well known ports?

A

L’ICANN ma in realtà non ci sono controlli. Se un servizio vuole cambiar porta può farlo ma nessuno lo saprà più raggiungere.

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

Come viene scelta la porta del client sorgente?

A

randomicamente

18
Q

Per cosa stanno UDP e TCP?

A

User Datagram Protocol e Transmission Control Protocol

19
Q

Quali sono le caratteristiche generali di UDP e per cosa viene usato?

A
  • best effort (segmenti possono essere persi o consegnati nell’ordine sbagliato)
  • connection-less: ogni pacchetto indipendente dagli altri
  • è semplice
  • l’header ha dimensione ridotta
  • la mancanza di controllo di congestione lo fa essere veloce

usato per quei servizi in cui non c’è bisogno di garanzie o in cui dare garanzie peggiorerebbe solo il servizio -> app di streaming, DNS, SNDP

il fatto che non ci sia una connessione preventiva elimina del ritardo

20
Q

Quante porte di ingresso e di uscita ci possono essere per UDP?

A

i campi porta dest e porta source sono di 16 bit quindi 2^16 porte

21
Q

Com’è fatto un segmento UDP?

A

header: source port e dest port (16 bit), checksum sui dati (mentre quello dell’ip controlla l’header), lunghezza dell’header

dati (payload) con ovviamente gli indirizzi IP derivati dal datagram

22
Q

Che tipo di servizio offre il TCP?

A
  • point-to-point: ha sempre e soltanto un trasmettitore e un ricevitore. Una comunicazione broadcast infatti è gestita attraverso l’UDP
  • affidabile e ordinato. Non ci sono confini e definizione fissa di messaggi, e qualunque stream di byte viene suddiviso in segmenti
  • basato sulla pipeline: utilizza uno dei protocolli a finestra con la possibilità di settare la dimensione della finestra. Il controllo di flusso e di congestione si basano sul poter cambiare la dimensione della finestra durante la comunicazione
  • full-duplex: flusso di dati in entrambe le direzioni su una stessa connessione (non c’è bisogno di averne due differenti). Il canale ha come parametro il MSS (Maximum Segment Size) che deriva dalla MTU (Maximum Transmission Unit) dei livelli precedenti (per IP 1500 byte).
  • connection-oriented: handshaking tra trasmettitore e ricevitore che si mandano messaggi prima del trasferimento effettivo
  • flow control
23
Q

TCP può gestire broadcast?

A

no, quello solo udp perché tcp è Point-to-point

24
Q

Com’è fatto un segmento TCP?

A
  • porta sorgente e destinazione
  • lunghezza dell’header
  • vari flags, per esempio: A dice se il campo ack ha davvero significato e poi altri tre per la gestione della connessione
  • sequence number: conta i BYTE e non i segmenti
  • ack: conta i byte ricevuto e indica quale ci si aspetta
  • receive window: grandezza della finestra di ricezione
  • checksum su dati
  • opzioni
  • dati
25
Q

Fare disegno di una comunicazione di livello 4 con tcp da A a B in cui A parte con seq=42 e ack=79

A

pagina 93

26
Q

Come si costruisce un reliable data transfer su livello 4?

A

o con go-back-N in cui però la finestra è maggiore di 1 e si usa cumulative ack, o con selettive repeat

27
Q

Quali sono le caratteristiche di go back n e selective repeat per TCP?

A

go back n
- il trasmettitore può avere N pacchetti che non hanno ricevuto ack
- il ricevitore usa cumulative ack
- nel TX il timer è mantenuto per il primo pacchetto che non ha avuto ack
- quando scade il timer vengono rimandati tutti i pacchetti senza ack

selective repeat
- il trasmettitore può avere N pacchetti che non hanno ricevuto ack
- il ricevitore manda individual ack
- nel TX è mantenuto un timer per ogni pacchetto senza ack
- quando termina il timer viene mandato solo il pacchetto relativo

28
Q

Eventi al trasmettitore MANCA

A

pagina 94-94

29
Q

Eventi al ricevitore MANCA

A

pagina 95-96

30
Q

Come viene stabilito il valore del timeout per i protocolli a finestra in TCP?

A
  • deve essere più lungo dell’RTT, che però non ha un valore stabile
  • non può essere troppo corto perchè ci sarebbero ritrasmissioni premature e non necessarie
  • non può essere troppo lungo perchè si rallenterebbe troppo la reazione alla perdita del segmento

La soluzione è quella di cercare di mediare opportunamente i valori misurati utilizzando una EWMA (Exponential Weighted Moving Avarage) con cui l’influenza del campioni passati decresce in modo molto veloce:

(1 - \alpha) \cdot EstimatedRTT + \alpha \cdot SampleRTT 

I coefficienti mostrano che, in base al valore di $\alpha$, si va a dare più valore al passato rispetto al presente e viceversa. Tipicamente $\alpha = 0.125$.

Per una stima migliore conviene usare anche la deviazione standard

DevRTT = (1 - \beta) \cdot DevRTT + \beta \cdot |SampleRTT - EstimatedRTT|, in cui tipicamente $\beta = 0.25$. 

In conclusione:
$TimeoutInterval = EstimatedRTT + 4\cdot DevRTT$

31
Q

Come avviene il controllo del flusso?

A

Lo scambio di dati avviene attraverso un socket a cui viene associato un buffer (porzione di memoria). Il TCP riceve i segmenti dall’IP, prende i dati e li memorizza nei buffer. L’applicazione poi legge dal buffer associato al socket.

Se il livello applicazione del ricevitore è più veloce nella lettura rispetto alla velocità di trasmissione dei dati il buffer si svuota, altrimenti il buffer tende a riempirsi. La \textit{free buffer space} è la finestra di ricezione disponibile nella comunicazione. $\$
Il ricevitore deve comunicare al trasmettitore la dimensione del free buffer space e lo fa attraverso il campo \textit{receive window - rwnd} dell’header del segmento, indicante la dimensione della finestra. La dimensione della \textit{transmission window} è quindi analoga: $twnd = rwnd$.

32
Q

Cos’è una connessione di TCP?

A

Abbiamo detto che TCP è un protocollo Connection-Oriented ma nel caso del TCP, più che di segnalazione (termine generico), parliamo più propriamente di handshaking: non si fa una segnalazione vera e propria come nel caso della creazione del circuito nel livello collegamento; in questo caso i due nodi si connettono per concordare alcuni parametri (non presenti in UDP) e la connessione coinvolge solo i due terminali agli estremi e non anche i nodi intermedi che costituiscono la rete (che infatti non hanno il livello 4). \underline{Il livello 4 non coinvolge la rete}.

33
Q

Come avviene una apertura della connessione in TCP?

A
  • A sceglie un numero x come Seq e lo manda a B con SYNbit=1
  • B sceglie come Seq y e manda anche lui SYNbit=1. Inoltre fa l’ACK per x e quindi manda ACKbit=1 e ACKnum=x+1
  • A manda ACKbit=1 e ACKnum=y+1
34
Q

Come avviene la chiusura di una connessione in TCP?

A

entrambi devono specificare di voler chiudere la connessione
- A manda FINbit=1 e seq=x
- B manda l’ack come nella apertura mqndando ACKnum=x+1 e ACKbit=1

a questo ounto A non può più mandare dati ma può ricevere (e mandare ack), infatti:
- B manda FINbit=1 e seq=y
- A risponde con ACKnum=y+1 e ACKbit=1

i FIN possono anche essere contemporanei

alla fine si aspetta del tempo (il doppio del massimo tempo di vita che ce nei segmenti)

35
Q

Quali sono gli approcci per il controllo di congestione in generale?

A

network-assisted congestion control: coinvolgimento dei router che inviano feedback dei loro stati agli end system. Viene specificata una ben precisa frequenza di invio che il TX deve rispettare.
Soluzione praticamente mai implementata perchè renderebbe la rete più complessa.

end-to-end congestion control: la congestione viene controllata senza il coinvolgimento dei nodi di rete; si vuole controllare il sistema senza ricevere dei feedback.

36
Q

Quale approccio per il controllo di congestione viene utilizzato in TCP?

A

L’idea è quella di modellare l’intera rete con un singolo buffer che, come nel controllo di flusso, aumenta e diminuisce a seconda della quantità di dati che contiene, e che influenza così la velcoità di invio dei dati da parte del trasmettitore. Se però nel controllo di flusso il ricevitore comunica lo spazio disponibile nel suo buffer al trasmettitore e il buffer esiste realmente, in questo caso invece il buffer è solo un modello non reale. In questo caso infatti il buffer rappresenta in generale tutti i buffer presenti nei nodi della rete, dei quali quindi deve essere stimata una dimensione totale affinchè la sorgente possa utilizzare tale valore per regolare la velocità. Questo buffer è detto \textit{Congestion Window - cwnd}.
Dobbiamo modificare la relazione vista per il controllo di flusso $twnd = rwnd$ in $twnd \leq min{rwnd, cwnd}$.

37
Q

Cos’è la congestion window?

A

è il buffer “non reale” che rappresenta idealmente tutti i buffer della rete per il controllo della congestione in TCP

38
Q

come si stima la grandezza della congestion window?

A

Additive Increase Multiplicative Decrease - AIMD

39
Q

Cos’è l’AIMD e per cosa sta?

A

Additive Increase Multiplicative Decrease - AIMD -> algoritmo per determinare la grandezza della finestra di congestione

40
Q

Come funziona l’AIMD?

A

Il primo algoritmo proposto per la stima di cwnd è stato l’Additive Increase Multiplicative Decrease - AIMD il quale si applica nella fase di Congestion-Avoidance del TCP. Questo algoritmo fa crescere, a partire da $cwnd = 1 \ MSS$, lentamente e linearmente il potenziale valore di cwnd fino a quando non si arriva in una situazione critica di potenziale congestione (iniziano le perdite e quindi non si ricevono gli ack $\rightarrow$ scatta il timeout), arrivati alla quale avviene una decrescita esponenziale (multiplicative decrease) che dimezza la stima di cwnd.
Si parte quindi da $cwnd = 1 MSS$ ma, supponendo di essere molto distanti da una situazione di congestione, con la tecnica di Slow Start per un primo tratto il valore viene fatto crescere esponenzialmente: per ogni ack ricevuto si aumenta la finestra di 1 e quindi $cwnd_i = cwnq_{i-1} + 1 \cdot cwnq_{i-1}$. La crescita di tipo esponenziale viene interrotta alla prima perdita.
Successivamente si passa alla fase di Congestion Avoidance con la crescita lineare di $\frac{1}{cwnd}$ ogni ack ricevuto:
\underline{esempio} $cwnd = 4$, ricevuti $4$ ack quindi per ogni ack ricevuto bisogna aumentare di $\frac{1}{4}$ e quindi in totale $cwnd = 4 + 4\cdot \frac{1}{4} = 5$.

41
Q

In cosa vediamo i 3 ack duplicativi nel livello 4?

A

TCP -> congestion control -> Oltre al timeout, un altro modo per capire se c’è stata una perdita sono i 3-ack-duplicati. Se le prime versioni di TCP trattavano entrambi i casi allo stesso modo, quelle più recenti li differenziano:
- se scatta il timeout vuol dire che tutti i pacchetti sono stati persi $\rightarrow$ situazione di congestione probabilmente grave. La finestra non viene solo dimezzata ma viene settata a $cwnd = 1MSS$ (atteggiamento molto conservativo).

  • se arrivano gli ack duplicati vuol dire che TX ed RX riescono a raggiungersi $\rightarrow$ situazione di congestione probabilmente meno grave. Quando si è in congestion avoidance difficilmente scatta un timeout ma arrivano gli ack duplicati. $\$Viene dimezzata la finestra di congestione e la si fa crescere linearmente (come detto sopra)