Professional Documents
Culture Documents
IL P R O T O C O L L O U D P
Generalit
Il protocollo UDP (User Datagram Protocol) stato concepito per tutte quelle applicazioni per le
quali non necessaria una completa gestione delle connessioni, come per esempio le trasmissioni
televisive i n streaming dove pu essere tranquillamente perso qualche fotogramma senza pregiudicare la visione del programma. Tale protocollo utilizza i l protocollo IP per trasportare i messaggi
ma, rispetto a quest'ultimo, distingue tra pi destinazioni all'interno di uno stesso host mediante i l
meccanismo delle porte (socket). Viene utilizzato pertanto da tutte le applicazioni che trasmettono
pacchetti singoli, senza necessit d i a c k n o w l e d g m e n t n d i
handshaking tra mittente e
destinatario.
gfmmj
A Handshaking Indica la fase preliminare con la quale i dispositivi definiscono i protocolli e le v e l o cit da utilizzare per poter comunicare tra loro e d composta da uno scambio di segnali prestabiliti
tra i d u e dispositivi stessi: l'handshake necessario tra protocolli connection-oriented mentre non
necessario nei protocolli connectionless.
Il protocollo UDP inoltre adatto a essere impiegato dalle applicazioni che richiedono bassi ritardi
di trasferimento end-to-end ma tollerano perdite/errori nei segmenti ricevuti dai processi d i destinazione. La tabella seguente riporta le pi comuni applicazioni e i relativi protocolli utilizzati nello
strato di applicazione, che sar descritto nell'unit di apprendimento 4.
170
il protocollo UDP
Applicazione
Voip
Applicazioni Multimediali
Protocolli di instradamento
RIP
Risoluzione di nomi
DNS
Amministrazione di rete
SNMP
NFS
tftp
ntp
Il segmento UDP
Ogni segmento UDP fa uso di datagrammi con un'intestazione di 8 byte, gestito indipendentemente dagli altri e pu dare luogo a una modalit di trasferimento tra processi di tipo:
I punto-punto;
I bidirezionale;
I full-duplex.
A differenza del protocollo TCP, i l protocollo UDP i n grado di supportare i l -4 multicast , cio la
distribuzione simultanea di informazione verso un gruppo di destinatari.
Multicast Multicast is the delivery of a message or information t o a g r o u p of destination computers
simultaneously in a single transmission f r o m the source. Copies are automatically created in other network elements, such as routers, b u t only when the t o p o l o g y of the network requires it.
Ogni datagramma UDP viene incapsulato i n u n datagramma IP, quindi la dimensione del datagramma UDP non pu superare la dimensione massima della parte dati del datagramma IP ed formato
da due parti:
un header (8 byte);
> un campo -4 payload , di lunghezza variabile ma non superiore al M M a x i m u m S e g m e n t Size
(MSS)
IP datagram
UDP datagram
IP header
UDP header
20 bytes
l bytes
UDP data
Il valore di default Maximum Segment Size di 536 byte mentre i l valore massimo 65535 byte: la
dimensione decisa dal mittente durante la fase di setup della comunicazione.
4 Payload Indica il carico utile che viene ricevuto dal sistema destinazione, cio i dati contenenti le
informazioni al netto di tutti i campi legati al protocollo e necessari affinch avvenga la comunicazione.
n. porta sorgente
n. porta destinazione
lunghezza
checksum
Dati dell'applicazione
(messaggio)
Si pu osservare che n o n s o n o presenti g l i indirizzi IP in q u a n t o q u e s t i s o n o gi presenti nel
h e a d e r IP che lo incapsula.
I '
Source IP address
32 bit
Destination IP address
TuttiO
Protocol
UDP length
Source port
Destination port
Lenght
Checksum
Pseudo-header
UDP-header
II checksum viene calcolato coinvolgendo anche gli indirizzi IP, per verificare che i l datagramma
UDP sia effettivamente arrivato al giusto indirizzo IP di destinazione.
La p s e u d o intestazione n o n v i e n e trasmessa, serve u n i c a m e n t e p e r il calcolo d e l c h e c k s u m .
La multiplazione/demultiplazione in UDP
Il servizio di trasferimento di messaggi privo d i connessione e le operazioni di multiplazione/demultiplazione effettuate attraverso i l canale logico tra un processo sorgente e un processo destinazione
vengono realizzate mediante la coppia d i parametri:
<indirizzo IP destinatario: Porta del d e s t i n a t a r i o
Descriviamo un semplice esempio di una applicazione che sfrutta i socket per trasmettere u n datagram UDP contenente una stringa d i testo "ciao" da un host sender 137.200.70.14 ( i l client) a u n
host receiver 130.130.12.17 ( i l server), che ha come punto d i accesso la porta 3069, stabilita tra
quelle libere dal programmatore della applicazione.
I l server manda i n esecuzione l'applicazione e si mette in attesa sulla porta 3069 fino a che i l client
invia su di essa un datagram: fondamentale che client e server si accordino sul numero della porta
da usare e, naturalmente, i l client deve conoscere l'indirizzo IP del server.
172
Il protocollo UDP
Applicazione
/"ciie n t \
(^Serwr^)
ta)y
cp
Lezione 2
Applicazione
Trasporto
Network
137.20 J.70.14
130.133.12.17
Data link
Trasporto
Network
Data link
Physical
Physical
media
Indirizzo dei socket del server: <130.130.12.17:3069>
A l server arrivano segmenti che hanno differenti indirizzi IP sorgente e/o numeri d i porta sorgente
ma che possono avere, oltre che lo stesso indirizzo IP, anche lo stesso numero d i porta destinazione:
vengono consegnati allo stesso socket all'interno del terminale d i destinazione.
Quando i l terminale di server riceve u n segmento UDP, allora:
legge i l numero della porta d i mittente;
> estrae i l messaggio contenuto nel segmento;
invia i l messaggio al socket col numero d i porta di destinazione specificato:
- socket mittente host A: <69.12.0.54:3030>
- socket destinatario host B: <137.200.70.14:3010>
Host A
HostC
Host B
173
Per fare questo viene calcolato dal mittente del messaggio i l checksum, analogamente a quanto accade per i l checksum IP ma, come gi detto prima, tenendo conto non solo dei campi del segmento
UDP ma anche dello pseudo-header IP:
1
32 bit
Source IP address
Pseudo-header
Destination IP address
Tutti 0
Protocol
UDP length
Source port
Destination port
Lenght
Checksum
UDP-header
Messaggio
Dati
I l mittente genera i l checksum considerando i byte del segmento come una sequenza d i interi da
16 bit ed effettua la somma, cio i l complemento a 1 , e memorizza i l valore ottenuto nel campo
checksum del segmento UDP. I l ricevente calcola i l checksum del segmento ricevuto e controlla tale
valore con i l contenuto del campo checksum: se ci sono delle differenze rileva la presenza d i u n
errore.
Zoom su.
ESEMPIO DI CALCOLO DEL CHECKSUM
Quando si sommano i numeri, un riporto dal bit pi significativo deve essere sommato al risultato: vediamo con un esempio come operare per generare il checksum su due stringhe di 16 bit.
Eseguiamo dapprima la somma dei bit in colonna
a capo
e a questa necessario aggiungere il riporto generato dalla overflow dei bit pi significativi:
a capo
'
1
1
somma
1
0
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
0
1
1
0
1
Il protocollo UDP
Verifichiamo le
conoscenze
porta sorgente
porta destinatario
IP destinatario
lunghezza dati
checksum
dati
Test vero/falso
1 UDP utilizza l'IP per trasportare i messaggi.
2 UDP offre in pi la capacit di distinguere tra pi destinazioni all'interno di uno stesso host.
3 I segmenti inviati possono essere perduti durante la trasmissione pregiudicando il sistema.
4 In UDP avviene l'handshaking tra mittente e destinatario.
5 L'handshake sempre necessario tra protocolli connection-oriented.
6 II segmento UDP ha un header di non pi di 8 byte.
7 II valore di default Maximum Segment Size di 536 byte.
8 Ogni segmento IP viene incapsulato in un datagram UDP.
9 II socket del server in grado di ricevere pi richieste dallo stesso cliente.
10 II protocollo UDP in grado di effettuare il controllo su errori di indirizzamento.
OQ
OQ
OQ
OQ
OQ
OQ
OQ
OQ
OQ