Livello di Trasporto Flashcards
Domande su TCP/UDP e relativi servizi
- Cos’è il livello di trasporto?
- comunicazione logica tra processi applicativi
- mittente: messaggi applicativi → segmenti → spezzandoli e intestazione → PDU IP
- ricevente: estrae segmento → livello di trasporto elabora → multiplexing ad app
- Che servizi offre UDP?
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
- Che servizi aggiuntivi implementa TCP?
- trasferimento dati affidabile (attraverso SEQ, ACK, timer)
- controllo di congestione (regolando velocità)
- Cosa sono multiplexing e demultiplexing?
- 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
- Che informazioni utilizzano multiplexing e demultiplexing?
- id per socket
- porta
- fino a 1024: riservate per ragioni storiche
- 1024-49151: porte registrate (IANA le ha assegnate)
- 49152-65535: effimere, allocate dinamicamente.
- Multiplexing non orientato alla connessione
- crea segmento UDP (dati applicativi, porta mitt, porta dest)
- incapsula in IP (inviato con approccio best-effort)
- Demultiplexing non orientato alla connessione
- esamina porta dest
- indirizza socket corrispondente (un processo ↔ porta (bind) ma questo si può violare)
- Come si differenziano multiplexing e demultiplexing orientati alla connessione?
- 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)
- Cosa è UDP?
Protocollo non orientato alla connessione
Servizio minimale (mul/demultiplexing) + semplice controllo errori
Veloce e leggero, ma meno affidabile
- Quali sono le caratteristiche principali di UDP?
- nessuna connessione (dati inviati immediatamente)
- controllo minimale (header con porta mitt/dest + length e checksum)
- best-effort senza garanzia consegna dei dati
- Quali sono le principali applicazioni di UDP?
- 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)
- Cosa è QUIC?
Quick Udp Internet Connection = UDP + affidabilità a livello applicazione (senza vincoli sulla velocità di trasmissione di meccanismi TCP)
- Come è fatto l’header UDP?
- Pseudo-header (ip mitt, ip dest, protocollo livello superiore)
- Porta mitt
- Porta dest
- lunghezza (max 16bit -> ~65000 byte)
- Checksum (calcolato su segmento UDP e alcuni campi IP)
- Come viene calcolato checksum UDP?
- 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
- Quali caratteristiche danno affidabilità alla comunicazione?
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
- Quali sono le interfacce principali per un rdt (reliable data transfer)?
- rdt_send: mittente spinge dest a trasferire dati a livello superiore
- rdt_rcv: pacchetto raggiunge dest
- deliver_data: consegnare dati a livello sup
- Cosa avviene rdt su canale completamente affidabile (rdt1.0)?
- Mittente: invia pacchetto
- Destinatario: riceve pacchetto
Stessa velocità
- Se il canale è inaffidabile come si gestiscono gli errori?
Situazione: bit corrotti, pacchetti in ordine
ACK
NACK (chiedere ritrasmissione)
- Quali funzionalità sono necessarie?
- Rilevare errore
- Mittente informato
- Ritrasmissione
- Come si possono gestire errori su ACK?
- Dest chiede a mitt di ripetere la risposta
- Aggiungono bit di checksum per correggere errori
- Rinvio del pacchetto in caso di ACK o NAK alterato
- Aggiungere campo al pacchetto dati
- rdt2.1?
Utilizzo di ACK e NAK
- rdt2.2 come gestisce gli ACK?
Si usano solo ACK, includendo numero del pacchetto.
Se duplicati vuol dire che non ha ricevuto pacchetto successivo
- rdt3.0 come gestisce i pacchetti persi?
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)
- Perchè stop&wait è inefficiente?
Si usa poca banda, inutilizzata per reti con lunghi ritardi di propagazione.