Livello di trasporto (Transport layer 4) Flashcards
Quali sono le funzioni del livello di trasporto?
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
Come avviene l’indirizzamento dei processi applicativi? (Gestione del multiplexing)
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
Cos’è il servizio di buffering?
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
Quali sono i principali protocolli per il servizio di trasporto?
TCP (Transmission Control Protocol), orientato alla connessione e affidabile
UDP (User Datagram Protocol), senza connessione e non affidabile
Quali sono le caratteristiche del protocollo UDP?
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)
Come sono formati i segmenti del protocollo UDP?
Gli header contengono 4 campi: source port, destination port, length, checksum
Infine vi è il campo dati a cui è destinato un numero arbitrario di spazio
Perchè usare UDP e non TCP?
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
Come viene effettuato il controllo di integrità?
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
Come viene calcolato il checksum lato client e lato server?
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
Cos’è un collegamento ideale?
Un collegamento su cui tutto ciò che viene trasmesso arriva nello stesso ordine e viene correttamente interpretato a destinazione
Come vengono effettuati i controlli d’errore?
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
Da quali componenti è composto il protocollo di ritrasmissione Stop and Wait? Cos’è e come si calcola la sua efficienza?
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«_space;tau
Protocollo non adatto a situazioni con elevato ritardo di propagazione e/o elevato ritmo di trasmissione
Utilizzato spesso in modalità half-duplex
Com’è organizzata la numerazione dei pacchetti nel flusso?
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
Da quali componenti è composto il protocollo di ritrasmissione Go Back N? Cos’è e come si calcola la sua efficienza?
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%)
Cos’è il piggy banking?
Gli ACK possono anche essere inseriti negli header dei pacchetti che viaggiano in direzione opposta
Come funziona lo sliding window flow control?
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
Come può essere usato il campo W nello sliding window flow control?
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.
Quali servizi offre e quali sono le caratteristiche del protocollo TCP?
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
Come viene gestito il flusso dati in una comunicazione tra socket TCP?
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.
Quale meccanismo di controllo d’errore utilizza TCP?
TCP adotta un meccanismo per il controllo delle perdite di pacchetti di tipo Go-Back-N
Da quali campi è formato l’header di un segmento TCP?
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
Cos’è il MSS?
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
Cos’è il fattore di scala della finestra?
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
Quali sono le porte delle applicazioni più diffuse?
22 SSH 21 FTP signalling 20 FTP data 23 telnet 25 SMTP 53 DNS 80 HTTP 110 POP 143 IMAP