Livello di Trasporto Flashcards

Domande su TCP/UDP e relativi servizi

1
Q
  1. Cos’è il livello di trasporto?
A
  • comunicazione logica tra processi applicativi
  • mittente: messaggi applicativi → segmenti → spezzandoli e intestazione → PDU IP
  • ricevente: estrae segmento → livello di trasporto elabora → multiplexing ad app
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. Che servizi offre UDP?
A

IP modello best effort (nessuna garanzia di consegna, ordine e integrità)

UDP e TCP: consegna process-to-process, multiplexing e demultiplexing, controllo integrità

TCP: trasferimento affidabile, controllo di congestione

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
  1. Che servizi aggiuntivi implementa TCP?
A
  • trasferimento dati affidabile (attraverso SEQ, ACK, timer)
  • controllo di congestione (regolando velocità)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  1. Cosa sono multiplexing e demultiplexing?
A
  • multiplexing: più applicazioni comunicano su stesso canale
  • demultiplexing: i pacchetti vengono distribuiti alle applicazioni corrette analizzando header (es. numero di porta)

Un socket ha identificatore univoco (protocollo, ip, numero di porta)

  • DGRAM (datagram) ogni pacchetto UDP viene inviato come tale
  • SOCK_STREAM (stream tcp) quando inviamo i dati non sappiamo come verranno inviati in TCP (entra in uno stream) e ritorna i byte effettivamente inviati
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. Che informazioni utilizzano multiplexing e demultiplexing?
A
  • id per socket
  • porta
    • fino a 1024: riservate per ragioni storiche
    • 1024-49151: porte registrate (IANA le ha assegnate)
    • 49152-65535: effimere, allocate dinamicamente.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Multiplexing non orientato alla connessione
A
  • crea segmento UDP (dati applicativi, porta mitt, porta dest)
  • incapsula in IP (inviato con approccio best-effort)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. Demultiplexing non orientato alla connessione
A
  • esamina porta dest
  • indirizza socket corrispondente (un processo ↔ porta (bind) ma questo si può violare)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Come si differenziano multiplexing e demultiplexing orientati alla connessione?
A
  • sono più complessi (TCP mantiene stato)
  • socket TCP identificata da (ip mitt, porta mitt, ip dest, porta dest)
  • due segmenti con stesso ip/porta dest da host diversi vanno a processi diversi (tranne per socket in listen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. Cosa è UDP?
A

Protocollo non orientato alla connessione

Servizio minimale (mul/demultiplexing) + semplice controllo errori

Veloce e leggero, ma meno affidabile

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. Quali sono le caratteristiche principali di UDP?
A
  • nessuna connessione (dati inviati immediatamente)
  • controllo minimale (header con porta mitt/dest + length e checksum)
  • best-effort senza garanzia consegna dei dati
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. Quali sono le principali applicazioni di UDP?
A
  • app real time → poco ritardo e perdita dati tollerabile
  • nessun ritardo di connessione → DNS, velocità di risposta critica
  • flessibilità → app possono implementare funzionalità aggiuntiva senza vincoli (es QUIC)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. Cosa è QUIC?
A

Quick Udp Internet Connection = UDP + affidabilità a livello applicazione (senza vincoli sulla velocità di trasmissione di meccanismi TCP)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. Come è fatto l’header UDP?
A
  1. Pseudo-header (ip mitt, ip dest, protocollo livello superiore)
  2. Porta mitt
  3. Porta dest
  4. lunghezza (max 16bit -> ~65000 byte)
  5. Checksum (calcolato su segmento UDP e alcuni campi IP)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. Come viene calcolato checksum UDP?
A
  • Rileva errori (bit alterati?)
  • $\sum$parole 16bit pseudo-header+udpheader+data+zeros (RFC768) → complemento a 1 (cioè negazione)
  • In ricezione: somma tutto → deve dare 1*16
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  1. Quali caratteristiche danno affidabilità alla comunicazione?
A

Problema di rdt (Reliable Data Transfer = trasferimento dati affidabile) si presenta a vari livello (app,link,4)

  • 0 errori (nessun bit corrotto o perso)
  • ordine corretto

Deve gestire

  • inaffidabilità livello sotto
  • corruzione bit
  • perdita pacchetti
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. Quali sono le interfacce principali per un rdt (reliable data transfer)?
A
  • rdt_send: mittente spinge dest a trasferire dati a livello superiore
  • rdt_rcv: pacchetto raggiunge dest
  • deliver_data: consegnare dati a livello sup
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q
  1. Cosa avviene rdt su canale completamente affidabile (rdt1.0)?
A
  • Mittente: invia pacchetto
  • Destinatario: riceve pacchetto

Stessa velocità

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q
  1. Se il canale è inaffidabile come si gestiscono gli errori?
A

Situazione: bit corrotti, pacchetti in ordine

ACK

NACK (chiedere ritrasmissione)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
  1. Quali funzionalità sono necessarie?
A
  • Rilevare errore
  • Mittente informato
  • Ritrasmissione
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  1. Come si possono gestire errori su ACK?
A
  1. Dest chiede a mitt di ripetere la risposta
  2. Aggiungono bit di checksum per correggere errori
  3. Rinvio del pacchetto in caso di ACK o NAK alterato
  4. Aggiungere campo al pacchetto dati
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
  1. rdt2.1?
A

Utilizzo di ACK e NAK

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
  1. rdt2.2 come gestisce gli ACK?
A

Si usano solo ACK, includendo numero del pacchetto.
Se duplicati vuol dire che non ha ricevuto pacchetto successivo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  1. rdt3.0 come gestisce i pacchetti persi?
A

Situazione: bit corrotti, perdita pacchetti

Soluzione:

  • rilevazione pacchetto perso e ritrasmissione
  • timer
  • numeri di sequenza

tempo di attesa (troppo breve → troppo ritrasmissioni, troppo lungo → ritarda gestione errori)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q
  1. Perchè stop&wait è inefficiente?
A

Si usa poca banda, inutilizzata per reti con lunghi ritardi di propagazione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
25. Come si migliora da stop&wait?
- pipelining (più pacchetti alla volta) - bufferizzazione (conservare pacchetti inviati ma non confermati lato mitt, e fuori ordine lato dest)
26
26. Con pipelining, come possono essere gestiti errori?
- GBN (Go Back N) - SR (Selective Repeat)
27
27. Cosa fa protocollo Go-Back-N?
Mitt al più N pacchetti senza ACK.
28
28. Come viene implementata finestra scorrevole?
Finestra scorrevole di dimensione N
29
29. Come vengono gestiti i numeri di sequenza?
- trasmessi e confermati | trasmessi | disponibili | oltre finestra - timeout → ritrasmette tutti i pacchetti da quello non confermato VEDI Notion
30
30. Cosa è ACK cumulativo?
ACK n implica ACK i, i≤n pacchetti fuori sequenza vengono scartati (non serve buffer fuori ordine ma forse necessarie ritrasmissioni)
31
31. Quali sono i problemi prestazionali di GBN?
Errore su un singolo pacchetti causa ritrasmissione di molti pacchetti
32
32. Cosa fa il selective repeat?
Dest manda ack per ogni pacchetto Mitt segna i pacchetti consegnati con successo Dopo Timeout se non riceve ACK mitt ritrasmette
33
33. Quale problema può verificarsi con l’ampiezza della finestra?
Dest non riesce a distinguere se Seq si riferisce a pacchetto corrente o precedente
34
Cosa è TCP?
(Transmission Control Protocol) Protocollo orientato alla connessione - 3way handshake - stato della connessione risiede nei sistemi periferici - Full-duplex - singolo mittente e singolo destinatario (non supporta multicast)
35
34a. Cosa è TCB?
Trasmission Control Block Definisce lo stato della comunicazione Fare connessione ↔ Creare TCB
36
35. Da cosa è determinata la lunghezza massima del segmento?
L’MSS (Maximum Segment Size) dipende dall’MTU (Maximum Transmission Unit) del livello collegamento. Tuttavia, per UDP la dimensione è quella data dall’utente (Max ~65536 byte) poi frammentata via IP. Mentre in TCP
37
36. Come vengono usati buffer?
- Buffer di invio - Buffer di ricezione
38
38. Quali sono i campi dell’header TCP?
E’ presente uno pseudo-header che contiene informazioni di IP. Il demultiplexing viene fatto dal TCP, mentre nell’UDP era fatto dall’applicazione. TCP ha dimensione variabile a causa delle opzioni. Campi: - porta mitt, porta dest - Seq n - Ack n - finestra di ricezione (cwd) - lunghezza intestazione (20 byte, di più con opzioni) - flag - ACK: pacchetto di ack - rst, syn, fin: connessione - cwr, ece: controllo congestione - psh: invio immediato di dati al livello - urg: dati urgenti (+ urgent pointer) - checksum
39
39. Cosa è il numero di sequenza?
Per TCP, dati sono flusso di byte La posizione nel file del primo byte dei dati. Il primo è scelto casualmente per evitare che dati di vecchie connessioni in arrivo vengano confusi
40
40. Cosa è il numero di ACK?
Prossimo byte che si aspetta (tuttavia usa ACK cumulativo)
41
41. Cosa succede se arrivano byte fuori ordine?
1. Scartare (semplifica gestione ma riduce efficienza) 2. Conservare in buffer (più efficiente e più utilizzato)
42
42. Esempio di comunicazione TCP
1. primo segmento (dati, 42, 79 casuali) 2. server risponde con (dati, 79, 43) 3. client invia (vuoto, 43, 80) Vedi notion
43
43. L’implementazione del timeout è una cosa semplice?
No. Timeout deve essere > RTT (Round Trip Time)
44
44. Quando viene calcolato RTT?
RTT=tempo tra invio e ricezione ACK corrispondente Viene misura una volta per RTT solo per segmenti inviati una volta sola
45
45. Come viene aggiornato l’EstimatedRTT?
Media ponderata calcolato come EstimatedRTT = (1-a)VecchioEstimatedRTT + a RTTnuovo a=1/8 di solito, così si da maggior peso a campioni recenti
46
46. Come viene calcolato DevRTT?
DevRTT misura variabilità Calcolato come DevRTT=(1-b)OldDevRTT + b(RTTcalcolato-EstimatedRTT) b=1/4 di solito, se è stabile allora DevRTT sarà piccola
47
47. Come dovrebbe essere intervallo di timeout?
Obiettivi - Evitare ritrasmissioni non necessarie (> EstimatedRTT) - Risposta rapida (non >> EstimatedRTT)
48
48. Come viene calcolato intervallo di timeout?
EstimatedRTT + 4xDevRTT Quando avviene TimeOut, esso viene raddoppiato
49
49. TCP come garantisce l’affidabilità
IP è inaffidabile TCP garantisce rdt attraverso ACK e singolo timer di trasmissione.
50
50. Quali sono gli eventi più importanti nel meccanismo di ACK?
1. Ricezione dei dati: incapsula in segmento, passa a IP. Attiva timer se non già attivo (viene manutenuto quello più vecchio senza ACK) 2. Timeout: ritrasmette pacchetto e riavvia timer 3. Ricezione ACK: SendBase = pacchetto dopo ACK ricevuto, riavvia il timer
51
51. In caso di timeout come viene aggiornato? Perchè?
- Ritrasmette segmento con numero di sequenza più basso - Raddoppia timeout precedente (backoff esponenziale) - Per altri eventi, viene calcolato normalmente
52
52. Come rileva errore prima della scadenza del timeout?
Grazie ad ACK duplicati
53
53. Quali sono le differenze con GBN?
1. I segmenti fuori ordine vengono bufferizzati 2. TCP ritrasmette il pacchetto perso se ACK perso che rimane cumulativo 3. SACK: dest conferma segmenti ricevuti anzichè usare ACK cumulativi
54
54. Perchè può avvenire overflow del buffer?
Per evitare questo problema → servizio di controllo di flusso
55
55. Differenza tra il controllo di flusso e congestione?
Flusso: gestisce flusso per evitare overflow buffer ricezione (capacità del ricevente) Congestione: rallenta mittente per prevenire congestione (condizioni della rete) Per controllo di flusso si usa finestra di ricezione (spazio libero disponibile nel buffer del ricevente)
56
56. Come viene instaurata connessione?
1. SYN - client SYN=1 - SEQ iniziale casuale 2. SYN-ACK - risponde con SEQ del client+1 - sceglie SEQ server 3. ACK - server alloca variabili (adesso che ha la conferma, altrimenti suscettibile ad attacchi dos) - client alloca risorse - SYN=0 - ACK=SEQ server +1
57
57. Come viene chiusa la connessione?
1. → FIN (chiusura soft, RST per altrimenti) 2. ← ACK 3. ← FIN (può essere mandato con il pacchetto 2) 4. → ACK
58
58. Cosa succede se non c’è socket che accetta la connessione?
Se SYN è destinato a porta inattiva, dest invia RST UDP a porta inattiva ICMP speciale
59
59. Cosa è Nmap e a cosa serve?
Strumento per analizzare porte. Es. testa TCP inviando SYN Se ottiene SYN-ACK allora è aperta e app è in ascolto RST porta raggiungibile ma non in uso Nessuna risposta: firewall?
60
60. In caso di buffer illimitati come cambia throughput?
A→R→B Va=Vb=$\lambda$ e Capacità Router = R Se buffer illimitati allora il bottleneck è il router quindi tasso di invio non supera R/2
61
61. Mentre il ritardo in caso di buffer illimitati?
Per TassoInvio→R/2, Ritardo medio aumenta TassoInvio>R/2, Numero di pacchetti cresce indefinitamente → ritardo infinito
62
62. Cosa succede se i buffer hanno dimensione limitata?
Si suppone: buffer pieno→nuovi pacchetti scartati, connessione affidabile→ritrasmissione di pacchetti persi carico offerto=tasso totale di trasmissione (includi pacchetti ritrasmessi) Caso Mitt ritrasmette se perdita pacchetto certa: Mitt ritrasmette dopo timeout, carico offerto R/2 ma throughtput è R/3 (su R/2 solo 2/3 sono originali per throughtput mentre 1/3 sono ritrasmissioni) Caso Mitt ritrasmette pacchetti che hanno subito ritardi: per carico offerto R/2 solo R/4 di throughput
63
63. Quando ci sono più mittenti, buffer finiti e percorsi multihop? (inutile)
tasso di invio basso - overflow rari - throughput ~ traffico inviato - aumento tasso di invio → traffico inviato aumenta traffico intenso - tasso di invio molto grande → un collegamento può diventare dominante - Quando traffico B-D tende ad infinito→altro collegamento tende a 0 Vedi Notion (inutile)
64
64. TCP come si accorge della congestione?
IP non fornisce alcun supporto alla congestione Si osserva il comportamento della rete attraverso - perdita di pacchetti o - aumento di ritardi.
65
65. Il router come notifica in caso di congestione?
ATM ABR: Router informa mittente sulla frequenza trasmissiva supportata Choke Packet: Router invia pacchetto al mittente Marcatura dei pacchetti: router imposta un campo in un pacchetto in transito, arriva a dest, torna indietro e avvisa mitt (necessario attendere RTT)
66
66. Cos’è la finestra di congestione?
cwnd: quantità massima di dati che mittente può inviare senza ACK LastByteSent-LastByteAcked≤min{cwnd,rwnd}, rwnd = cwnd ricezione
67
67. Date quali assunzioni si calcola il tasso di trasmissione?
Si assume buffer di ricezione grande da poter essere ignorato Mittente ha sempre dati da inviare, mantenendo finestra sempre piena Tasso di trasmissione ~ cwnd/RTT TCP rileva congestione attraverso - timeout - 3ack duplicati
68
68. Come cambia la dimensione della finestra?
se riceve ACK, aumenta gradualmente cwnd incrementando velocità più veloce arrivano ACK più velocemente cresce velocità
69
69. Quali principi determinano lo stato di congestione?
1. Segmento perso=congestione → ridotta cwnd 2. ACK=rete non congestionata → incrementa cwnd 3. Rilevamento larghezza di banda → adatta cwnd
70
70. Come funziona slow start?
1. Inizializzata a 1MSS 2. Ogni ACK ricevuto, cwnd += 1MSS (2^n)
71
71. Come può terminare slow start?
1. Timeout 1. ssthresh = cwnd/2 2. cwnd riportato a 1MSS 3. slow start 2. ssthresh → Collision avoidance (crescita lineare di cwnd) 3. 3 ack duplicati
72
72. Come viene incrementato cwnd in stato di collision avoidance?
Obiettivo: procedere in modo cauto in modo da evitare congestione cwnd è stato ridotto a metà incrementare MSS x (MSS/cwnd) byte es. se cwnd = 10 ogni ACK incrementa cwnd di 1/10 dopo 10 ack, aumenta di 1mss
73
73. Cosa accade in caso di evento di congestione?
1. Timeout 1. ssthresh = cwnd/2 2. cwnd=1 2. 3ACK duplicati 1. ssthresh = cwnd/2 2. cwnd/=2 Fast recovery
74
74. Cosa succede nello stato di fast recovery?
cwnd += 1 per ogni ack ricevuto relativo al segmento perso (ovvero seq precedente) passa in CA quando arriva ack del segmento perso in caso di timeout si passa a slow start (ssthresh=cwnd/2, cwnd=1)
75
75. Come funziona TCP Tahoe?
- Riduce sempre cwnd a 1MSS - Riparte sempre in slow start (quindi dimezzato + exp)
76
76. Come funziona TCP Reno?
- Usa fast recovery (quindi dimezzato + lineare) - sstresh è 8 MSS di default Usa approccio AIMD che può essere troppo cauto.
77
77. Cosa è TCP Cubic?
Introdotto nel 2008, non si basa su aumento lineare ma cubica Si avvicina più velocemente alla dimensione della finestra di congestione precedente
78
77a. Come funziona TCP Cubic?
wmax: dimensione cwnd all’ultima perdita k: momento in cui raggiungerà di nuovo wmax Funzione cubica cwd=c(t-k)^3+wmax Per t lontano da k cresce più velocemente, quando si avvicina incrementi diventano più piccoli Throughput superiore a TCP reno
79
78. Durante CA come varia throughput di TCP Reno?
Supponendo cwnd alla perdita=w, RTT costante Valore minimo W/2RTT (/2 finestra dopo perdita) → MAx W/RTT Throughput = 0.75 W/RTT
80
79. Perchè sono stati introdotti altre misure di congestione?
Si basa sulla perdita come segnale implicito Adesso si usa sempre più segnale esplicito
81
80. Come funziona ECN per router?
Explicit Congestion Notification 2 bit nel campo tipo di servizio segnalano congestione - Router rileva congestione - imposta questi bit - invia a dest - dest informa mitt RFC non definisce quando un router si accorge di congestione
82
81. Come funziona ECN per mittente e destinatario?
bit ECN usati anche dal mittente per indicare che supportano ECN dest si accorge di congestione invia ECE a mitt
83
82. Quali altri protocolli usano ECN?
DCCP: controlle di congestione leggero ma non affidabile DCTCP: per data center DCQCN: data center Router congestionato può informare host prima che debbano dimezzare cwnd
84
83. Cosa è TCP Vegas?
TCP Vegas usa metodo proattivo basato su ritardo Misura RTT per tutti i pacchetti confermati e usa minimo come riferimento (cwnd/RTTmin) Se throughtput reale e vicino allora aumenta Se è minore allora rete è congestionata
85
84. Cosa è BBR?
Bottleneck Bandwidth and Roundtrip protocollo di controllo della congestione con principi simili a Vegas Ottimizza banda disponibile senza causare congestione Google lo usa su rete privata B4
86
85. AIMD come garantisce fairness***?
AIMD (Additice Increase Multiplicative Decrease) distribuisce in modo equo la banda disponibile tra più connessioni TCP. Garantisce che ciascuna connessiona abbia banda approssimativamente pari a R/K - AI Incremento gradualmente in CA - MD dimezza cwnd
87
86. Quali sono alcuni limiti nella pratica?
RTT diversi connessioni multiple → distribuzione non equa di banda traffico UDP non regolato UDP non si adatta a congestione e può soffocare TCP
88
87. Perchè forzando UDP equo rimane il problema di fairness?
Nulla impedisce a TCP di sfruttare più connessioni in parallelo Si ottiene quota maggiore di banda nei collegamenti congestionati
89
88. Cos’è il modello server-coda?
Concetto usato per analizzare e modellare performance nei sistemi di servizio come router
90
89. Quali caratteristiche ha il modello deterministico?
D/D/1 o D/D/N (N numero server) Arrivi a intervalli regolari e costanti Tempi di servizio costanti e regolari
91
90. Quali caratteristiche ha modello generico?
G/G/N Arrivi seguono distribuzione generica Tempi di servizio hanno distribuzione generica
92
91. Su cosa differiscono varianti TCP?
Si vedono da TCB (transmission control block) - rate control: velocità di invio dei pacchetti - loss: quanto è buona per connessioni wireless - code dei router: non si buttano i pacchetti ma si informa sorgente