Livello di trasporto Flashcards
Qual è la funzione del livello di trasporto? Dove è presente?
Il livello di trasporto ha il compito di instaurare un collegamento logico tra le applicazioni residenti su host remoti: tale livello rende trasparente il trasporto fisico dei messaggi alle applicazioni, consentendo il collegamento logico tra processi applicativi.
Il livello fisico è presente solo negli end systems (host).
Quando più applicazioni sono attive su un host, il livello di trasporto svolge funzioni di multiplexing/demultiplexing: ciascun collegamento logico tra applicazioni è indirizzato dal livello di trasporto
Come funziona la gestione delle funzioni di mutiplexing/demultiplexing? (sistema porte)
Tali funzioni vengono gestite mediante indirizzo contenuti nelle PDU di livello di trasporto;tali indirizzi sono numeri da 5 cifre e si dividono in:
- Numeri noti: assegnati ad importanti applicativi dal lato server
- Numeri registrati: assegnati a specifiche applicazioni a chi ne faccia richiesta
- Numeri dinamici: assegnati dinamicamente ai processi applicativi lato client
Quali sono i due tipi di trasporto?
TCP (Trasmission Control Protocol) orientato alla connessione e affidabile
UDP (User Datagram Protocol) senza connessione e non affidabile
Quali sono le caratteristiche di UDP?
Tale protocollo è il modo più semplice di usare le fnzionalità di IP, in quanto non vi aggiunge nulla se non
- Indirizzamento delle applicazioni
- Controllo d’errore sull’header, ma senza correzione
Dunque
- é un protocollo datagram: consente l’invio senza connessione di datagrammi
- non garantisce la conferma e non esercità nè controllo di flusso nè controllo di errore
A livello di grandezza: ogni pacchetto è caratterizzato da 65535 byte
- vengono riservati 2 byte all’header
- i restanti 65527 byte sono disponibili per il payload
Perchè a volte è più efficace usare UDP rispetto a TCP?
1) Minore latenza: non occorre stabilire una connessione
2) Maggiore semplicità: non si tiene traccia dello stato di connessione e ci sono poche regole da implementare
3) Minore overhead: header più piccolo
Cos’è il campo Checksum?
Il campo Checksum svolge un controllo d’errore sul segmento trasmesso: viene inserita un’informazione ridondante nell’header
- il campo checksum (2 byte) è calcolato dal trasmettitore e inserito nell’header
- il ricevitore ripete lo stesso calcolo sul segmento ricevuto e se il risultato è soddisfacente lo accetta
- tale campo viene calcolato considerando l’header UDP. uno pseudo header Ip e i dati
Come è strutturato l’header UDP?
PSEUDO-HEADER
Prima riga: indirizzo IP del trasmettitore
Seconda riga: indirizzo IP della destinazione
Terza riga: 8 zeri + protocol + lunghezza
HEADER
Quarta riga: porta di origine + porta di destinazione
Quinta riga: lunghezza di payload e header + checksum
Sei in poi: dati
In cosa consiste un “collegamento ideale”?
In un collegamento ideale tutto ciò che viene trasmesso arriva nello stesso ordine e viene correttamente interpretato a destinazione
Come funziona il recupero d’errore?
Per il recupero d’errore è necessario avere un Protocollo di ritrasmissione.
Gli ingredienti sono:
- Ciascuna trama ricevuta correttamente viene riscontrata positivamente con un messaggio ACK
- Un eventuale messaggio di errore 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
Quali sono i 3 protocolli di ritrasmissione? Qual è il loro obiettivo?
Obiettivo:
- integrità del messaggio/pacchetto
- ordine corretto della sequenza dei pacchetti
- no duplicazione
Tipologie:
- Stop&Wait
- Go-back-N
- Selective Repeat
Quali sono le caratteristiche del protocollo Stop&Wait?
Quali problematiche presenta? Come si rimedia a queste problematiche?
- Utilizza solo ACK e un contatore time out
- Ogni messaggio ricevuto correttamente è riscontrato dal ricevitore
Problema: se si perde l’ACK il pacchetto viene ritrasmesso di nuovo –> duplicazione
Rimedio: numerazione de pacchetti –> il ricevitore riconosce che il nuovo pacchetto è duplicato perchè ha lo stesso numero dell’ultimo ricevuto
Problema: errata interpretazione di un ACK –> il riceitore crede un pacchetto ricevuto mentre non lo è
Rimedio: numerazione degli ACK
Come è definita l’efficienza del protocollo stop&wait?
Efficienza = T trasmissione / T trasmissione + Tack + 2tau
Bassa efficienza se T«tau –> protocollo non adatto a situazioni con elevato ritardo di propagazione o elevato ritmo di trasmissione
Quali sono le caratteristiche del protocollo Go-back-N?
Con il protocollo Go-back-N si possono trasmettere ino a N pacchetti senza aver ricevuto il riscontro:
- Se il riscontro del primo pacchetto arriva prima della fine della finestra, la finestra viene fatta scorrere di una posizione
- Altrimenti si ricomincia a trasmettere la finestra dal primo pacchetto non riscontrato
Il time out ha lo stesso significato dello Stop&Wait:
- Raggiunto l’ultimo pacchetto della finestra, la trasmissione si blocca in attesa di un ACK o della scadenza del time out
- La ritrasmissione del primo pacchetto non riscontrato inizia allo stadere del timeout
Questo procedimento può causare la ritrasmissione di pacchetti corretti, ma semplifica il funzionamento perchè permette al ricevitore di ignorare le ricezioni fuori sequenza –> l’ordine è mantenuto automaticamente
Altra caratteristica è che l’ACK può essere collettivo (comune a più pacchetti), ovviamente entro certi limiti, il che rimedia alla perdita di ACK
Come viene dimensionata la finestra in Go-back-N?
La finestra ottimale coincide con il RTT: T trasmissione + tau + Tack + tau
Ovviamente è possibile dimensionare la finestra anche in altri modi: infatti il dimensionamento diventa complicato quando non si conoscono i tempi di propagazione. Normalmente si rimedia facendo la finestra grande, oppure stimando il RTT e adattando ad esso la finestra, oppure usando il NACK
Perchè è conveniente l’uso del NACK?
L’uso del NACK può abbreviare i tempi di ritrasmissione in caso d’errore, evitando di aspettare la fine del time-out.
Tuttavia non è comunque possibile inviare immediatamente il NACK perchè il ricevitore dovrebbe conoscere l SN del pacchetto errato.