Sei sulla pagina 1di 27

Lezione 6

Livello trasporto: multiplexing e


demultiplexing
Corso di Reti di calcolatori
Prof. Antonio Puliafito
apuliafito@unime.it
Sommario
ü L'interfaccia tra trasporto e applicazioni
ü Descrizione dei servizi di Trasporto

ü Gli header dei protocolli nello stack TCP/IP

ü Il Demultiplexing nell'UDP

ü Formato del segmento UDP

ü Checksum dell'UDP

ü Overhead dell'UDP

ü Il Demultiplexing nel TCP


Gli identificatori nello stack TCP/IP
per Internet
Numero di porta (da 0 a 1024 - “well known
ports”- sono riservati ; 1025-65535 liberi)‫‏‬

Numero di protocollo (assegnato da IANA)

L’indirizzo unico a livello mondiale dell’interfaccia, (in


IPv4 intero, 32 bit, unsigned), di solito nella forma
1.2.3.4
Indirizzo MAC, a seconda della tecnologia. Per
ETHERNET nella forma aa:bb:cc:dd:ee:ff

Nulla
L'interfaccia tra lo strato
applicazione e il trasporto
Porta, numero di processo, socket

Descrittore verso il sistema operativo


Porta/indirizzo verso il trasporto

Numero di protocollo (assegnato da IANA)

Indirizzo IP

Una “socket” è: sia una interfaccia di programmazione


(tra applicazione e trasporto), che l'insieme (porte,
indirizzi IP) necessarie al trasporto per gestire le
connessioni
I Protocolli di Internet
IP porta pacchetti per vari protocolli, tra cui due
fondamentali per il trasporto end to end dei
pacchetti.
Lo strato Trasporto

E’ lo strato che si occupa di fornire


un servizio di trasferimento dei dati
dal nodo sorgente al nodo
destinazione.

Normalmente viene richiesto un


trasporto affidabile, efficiente e
indipendente dal comportamento
degli strati sottostanti
Il servizio di Trasporto
Fornisce la comunicazione logica
(orizzontale) fra applicazioni nei
due nodi.
Internet offre comunemente due
tipi di trasporto:

- TCP: affidabile, orientato alla


connessione con controllo della
congestione e di flusso
- UDP: non affidabile, senza
connessione.

Non offrono garanzie sui parametri


di QoS (p.e. ritardo e capacità)‫‏‬
Perché strato di trasporto e rete ?
I due strati svolgono funzioni Essenzialmente l’esistenza
apparentemente simili, cioè dello strato di trasporto rende
portare i messaggi generati possibile fornire un servizio
dall’applicazione a globale di trasporto più
destinazione affidabile e sicuro di quello
MA che offrirebbe da sola la rete
lo Strato di rete svolge il suo e rende le applicazioni
compito distribuito nei router indipendenti dalla tecnologia
lo Strato di trasporto svolge il di rete.
compito nei nodi iniziale e Per esempio nella rete
terminale non conoscendo lo esistono errori fisici nei
stato momentaneo pacchetti, duplicazioni,
(congestione, topologia, perdite …
prestazioni, tecnologie) della
rete
Multiplexing/Demultiplexing
Da “consegna tra sistemi terminali” a consegna “tra processi in esecuzione su sistemi terminali”

Alla ricezione, DEMULTIPLEXING Nel mittente, MULTIPLEXING


Smistare i pacchetti alla socket Raccogliere da tutte le socket con
corretta usando l’header del l'aggiunta dell'header, inviando i dati
trasporto tramite lo strato rete.

Nei Nodi la porta è scelta diversa per ogni processo


I problemi della rete
Durante il tragitto di un Il canale di trasmissione può
pacchetto nella rete, il essere inaffidabile ed essere
pacchetto può: composto da molte reti
diverse con caratteristiche
q subire errori a livello fisico diverse.
q subire ritardi anche elevati

q essere scartato per Questo è il principio base di


congestione progettazione di IP e quindi
q essere consegnato in ordine l’affidabilità deve essere
diverso rispetto all’emissione trasportata allo strato
superiore.
I problemi della rete
Dato che sarebbe complesso Il protocollo deve quindi:
inserire il controllo di
affidabilità in ogni q poter ritrasmettere e
applicazione, lo strato di ricordarsi ciò che deve
trasporto deve poter offrire un trasmettere fino a certezza
servizio affidabile. della ricezione (buffer)‫‏‬
q avere dei timer

Deve quindi garantire che q accorgersi della congestione

una sequenza di byte inviati q riordinare i segmenti

siano ricevuti nello stesso q ricevere feedback dal nodo

ordine e senza perdite destinatario (essere


connesso)‫‏‬
Header
Ogni strato riceve e invia dati agli strati adiacenti.

Vi aggiunge (o toglie) informazione specifica nella


forma di un “header” e crea una nuova unità di
informazione da trasmettere allo strato
successivo.
Header
Il Nodo riceve il datagramma
IP:
q L’header del datagramma IP

contiene gli indirizzi sorgente e


destinazione ed il protocollo
q l’header del segmento di

trasporto contiene le porte


sorgente e destinazione
q l’header del messaggio

contiene informazioni variabili


per ogni applicazione.
q Il nodo usa sia gli indirizzi IP

che i numeri di porta per


identificare la socket corretta
Anteprima formato datagramma IP
Demultiplexing con UDP
La socket crea automaticamente Il nodo ricevente:
la porta o si forza la scelta q  controlla la porta di destinazione
(esempio in Java): q  smista il datagramma sulla
socket relativa a quella porta
DatagramSocket mySocket = new
DatagramSocket(); Datagrammi con IP o porta
DatagramSocket mySocket = new
DatagramSocket(9222);
sorgente differenti sono inviati alla
stessa socket.
La socket UDP è identificata MA
dalla coppia: si puo' utilizzare anche la coppia
(IP, porta destinazione)‫‏‬ {IP,porta} sorgente per effettuare il
demultiplexing (attraverso una
chiamata all'implementazione del
trasporto)
Demultiplexing con UDP
DatagramSocket serverSocket = new DatagramSocket(6428);

Se il Server decidesse di inviare qualcosa al Client, saprebbe identificarlo tramite il suo IP e numero di porta.
UDP: User Datagram Protocol
RFC 768 del 1980 (3 pagine)‫‏‬ Vantaggi di UDP?

Definisce un trasporto q senza connessione (ritardo


semplice in cui ogni minimo quindi)‫‏‬
operazione di invio da parte q semplice: nessuno stato nel

dell’applicazione produce mittente e nel ricevente


esattamente un datagramma, q header minimo

mentre con TCP questo non è q nessun controllo di

vero. congestione o flusso: i


Non garantisce la consegna e pacchetti possono essere
quindi neanche altri parametri inviati costantemente alla
di qualità. massima velocità
Formato del segmento UDP
Usato spesso per applicazioni
multimediali (voce, video):

q tollerano la perdita di dati


q isocrone

altre applicazioni su UDP:


q DNS

q Simple Network Monitor

Protocol

Se l’applicazione desidera
affidabilità deve avere
internamente una parte di
controllo e recupero errori.
Datagramma IP + UDP
Checksum
Scopo: scoprire “errori” (cioè bit cambiati) nel segmento
trasmesso.

Mittente: Destinatario

q divide il segmento in blocchi Ricalcola il checksum


da 16 bit includendo il checksum stesso
q somma i blocchi (senza senza fare il complemento ad 1
riporto)‫‏‬ Il risultato sono tutti “1” ?
q ne fa il complemento ad 1 q NO - errore

q lo inserisce nel campo q SI - nessun errore trovato


Esempio di Checksum (8bit)‫‏‬
Pseudo Header CheckSum
The UDP Checksum field is the one area where the protocol actually is a bit confusing.
The concept of a checksum itself is nothing new; they are used widely in networking protocols to provide protection against errors.
What's a bit odd is this notion of comouting the checksum over the regular datagram and also a pseudo header.
What this means is that instead of calculating the checksum over just the fields in the UDP datagram itself, the UDP software first
constructs a “fake” additional header that contains the following fields:

UDP Pseudo Header Format

The total length of this “pseudo header” is 11 bytes. It is padded to 12 bytes with a byte of zeroes and then prepended to the real
UDP message. The checksum is then computed over the combination of the pseudo header and the real UDP message, and the
value is placed into the Checksum field. The pseudo header is used only for this calculation and is then discarded; it is not actually
transmitted. The UDP software in the destination device creates the same pseudo header when calculating its checksum to compare
to the one transmitted in the UDP header.
Computing the checksum over the regular UDP fields protects against bit errors in the UDP message itself.
Adding the pseudo header allows the checksum to also protect against other types of problems as well, most notably the accidental
delivery of a message to the wrong destination.
Perchè usare il Pseudo Header per
il calcolo del checksum
q  Errato instradamento: se l'indirizzo destinazione che
il nodo sorgente aveva inserito all'atto della spedizione
è differente da ciò che la destinazione ha ricevuto, il
checksum fallisce. Lo stesso accade per l'indirizzo
sorgente.

q  Protocollo non corretto: se il datagramma è stato


erroneamente “affidato” all'UDP, mentre in origine era
specificato un altro protocollo (per esempio TCP), il
sistema lo può rilevare immediatamente
ATTENZIONE: il Pseudo Header costituisce una violazione della struttura a stack
del TCP/IP
Checksum
Nel caso di una lunghezza in byte dispari del segmento, si
aggiunge un byte di “pad” (completamento) di valore zero.

Il checksum è calcolato in modo tale che, se si deve


cambiare anche un sola coppia di byte, basta sottrarre il
vecchio valore e sommare il nuovo, senza ricalcolare
completamente il checksum.
L’RFC non obbliga ad effettuare il calcolo del checksum,
ma è meglio che sia sempre abilitato.

Naturalmente non è in grado di correggere gli errori o di


rivelare errori multipli …
Overhead e lunghezza massima
La massima lunghezza di un datagramma IP è di 65535
bytes (dovuto al campo lunghezza dell'header IP di 16 bit).
Togliendo 20 bytes minimo di header IP ed 8 byte per
quello UDP, rimangono 65507 byte (teorici) di dati.

28 byte sono l’overhead di protocollo, cioé la parte di


informazione trasmessa che non sono dati utente.

Da notare che la dimensione di 65535 bytes è puramente


teorica. Richiederebbe dei buffer negli hosts estremamente
elevati. Lo RFC 791 prevede che gli hosts debbano
garantire la ricezione di datagrammi di 576 bytes.
Demultiplexing con TCP
La socket TCP è identificata Un server può mantenere
dai quattro valori (4-tuple): molte socket aperte:
q ogni socket è identificata da

q indirizzo IP mittente una quadrupla


q porta mittente Per esempio i Web server
q indirizzo IP destinatario hanno una socket diversa per
q porta destinatario ogni client attivo.

Il nodo ricevente usa questi


quattro valori per smistare il
segmento alla socket
corretta.
Demultiplexing con TCP

Grazie all'identificazione a 4 tuple delle socket, demultiplexing più “fine”


dell'UDP

Potrebbero piacerti anche