Programmazione su Reti
Il livello trasporto di TCP/IP: TCP e UDP
Giuseppe Persiano
Dipartimento di Informatica ed Applicazioni
Università degli Studi di Salerno
http://www.dia.unisa.it/~giuper
I protocolli TCP e UDP
Application
Telnet
NFS
FTP
Presentation
Session
SMTP
RPC
SNMP
TCP e UDP
Transport
Network
XDR
ICMP
IP
Protocolli
di routing
Arp e Rarp
Data Link
Physical
OSI
Non Specificati
Internet Protocol Suite
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
2
Transport Layer in TCP/IP


Fornisce un flusso di dati tra due host da passare allo
strato Application
TCP/IP prevede due protocolli di trasporto
» TCP (Transmission Control Protocol)
garantisce un flusso affidabile di dati tra due host
spezzetta i dati in segmenti della taglia appropriata
gestisce acknowledgement dei segmenti
controllo del flusso
» UDP (User Datagram Protocol)
spedisce datagram tra i due host
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
3
TCP e UDP: Porte

Diverse applicazioni possono usare lo stesso
trasporto allo stesso istante sullo stesso host.

TCP e UDP identificano le applicazioni mediante
numeri di porta a 16 bit.

Sistemi UNIX hanno il concetto di porta riservata
» porte con numero da 1 a 1023 possono essere usate solo
da processi con privilegi di superuser
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
4
TCP e UDP: demultiplexing
Appl. 2
porta
21345
Appl. 1
porta
24561
Appl. 3
porta
26890
Trasporto
Network
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
5
TCP e UDP: Porte


L'assegnazione della porta di protocollo ad un processo da
parte del sistema operativo avviene sotto richiesta del
processo stesso.
Come si assegna una porta di protocollo ad un processo?
Esistono due metodologie fondamentali:
» Assegnazione statica;
» Assegnazione dinamica (portmapper).
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
6
Modello Client Server (informale)


Due attori: client e server
Server: fornisce un servizio
» Web server rende disponibile pagine html ed altri servizi.
» Applicazione server si lega ad una porta locale ed attende
richieste di servizio dal client.

Client: richiede un servizio dal server
» Web browser richiede una pagina html al web server.
» Applicazione client si lega ad una porta locale ed invia
una richiesta al server.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
7
Dove è il server?

Il client deve conoscere l’indirizzo applicativo del
server per potersi connettere:
» Indirizzo IP dell’host su cui gira l’applicazione server.
» Porta a cui è legata l’applicazione server.

Il server non ha bisogno di conoscere l’indirizzo del
client:
» Quando questi si connetterà, il server conoscerà
l’indirizzo del client.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
8
Localizzazione del server


La parte server di applicazioni C/S di larga
diffusione si legano sempre alla stessa porta
chiamata la well-known port dell’applicazione.
Ad esempio:
» server web (Apache, MSIS) si legano alla porta 80 di TCP
(protocollo HTTP)
» server telnet (telnetd) è associato alla porta 23 di TCP
(protocollo telnet)
» Server per gestione posta (sendmail) utilizza la porta 25
di TCP (protocollo SMTP)
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
9
UDP: User Datagram Protocol (RFC 768)

Protocollo di trasporto di tipo non connesso

Aggiunge due funzionalità a quelle di IP:
» multiplexing delle informazioni tra le varie applicazioni
tramite il concetto di porta
» checksum (opzionale) per verificare l’integrità dei dati

Ogni operazione di output di un’applicazione che
utilizza UDP come trasport produce esattamente un
datagram UDP
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
10
UDP: Header
0
4
8
16
19
24
UDP Source Port
UDP Destination Port
UDP Message Length
UDP Checksum
31
DATA
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
11
UDP: PDU

Porta di provenienza UDP:
» è un campo di 16 bit che contiene il numero di porta di
protocollo del processo mittente, è facoltativa. Viene usata
per comunicare al processo destinazione il numero di
porta a cui dovrebbe spedire eventuali risposte.

Porta di destinazione UDP:
» è un campo il cui contenuto è analogo al precedente, ma
riferito alla destinazione. Infatti contiene il numero di
porta di protocollo del processo destinazione.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
12
UDP: PDU

Lunghezza del messaggio:
» Contiene il numero totale di ottetti (parole di 8 bit) del
datagramma UDP. In esso saranno contenuti dei valori
positivi superiori o uguali ad 8, che rappresenta il valore
minimo ammissibile (datagramma formato dalla sola
intestazione).

Checksum:
» Campo facoltativo di 16 bit
» E’ calcolato come funzione dell’header UDP, dati UDP e
pseudo-header UDP (parte dell’header TCP)
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
13
UDP: PDU
Per calcolare il valore da inserire nel campo Checksum, il software
crea una pseudo-intestazione composta dai seguenti campi:
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
14
UDP: PDU
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
15
UDP: Caratteristiche


User Datagram Protocol (UDP) fornisce un servizio di
recapito dei datagrammi connectionless ed inaffidabile,
usando l'IP per trasportare messaggi da una macchina ad
un'altra;
E' simile all'IP, ma il messaggio UDP contiene sia il numero
di porta di destinazione che quello di origine, rendendo
possibile al software UDP di destinazione di recapitare il
messaggio al corretto ricevente (programma od utente), ed a
quest'ultimo di inviare una replica.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
16
UDP: Caratteristiche


L'inaffidabilità è quella propria dell'IP, in quanto l'UDP non
prevede nessun protocollo per il controllo dell'errore: non
usa acknowledgement per assicurare al mittente che i
messaggi siano arrivati,
Non dispone le sequenze di datagrammi in ordine e non
fornisce una retroazione per il controllo del rate del flusso
di informazioni tra macchine.
I messaggi UDP possono essere persi, duplicati oppure arrivare fuori
ordine; inoltre i datagrammi possono arrivare più velocemente di
quanto il ricevente sia in grado di processarli.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
17
UDP: applicabilità

Utile quando:
» si opera su rete locale
» l’applicazione mette tutti i dati in un singolo pacchetto
» non è importante che tutti i pacchetti arrivino a
destinazione
» l’applicazione gestisce meccanismi di ritrasmissione
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
18
UDP: applicazioni

Le applicazioni principali che utilizzano UDP sono:
» NFS (Network File System)
» Talk
» Applicazioni Runix
 rwho
 ruptime
 ...
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
19
Frammentazione IP

Ogni interfaccia ha un MTU (Maximum
Transferable Unit) associata che definisce la
grandezza massima di un frame.
» Esempio: frame ethernet <= 1500byte di dati
20 byte header IP
8 byte header UDP


1472 byte di dati
Datagrammi IP che eccedono la MTU devono essere
frammentati.
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
20
Frammentazione IP

Identification
viene copiato in ciascun frammento

flag
more fragment=1 per tutti i frammenti tranne l’ultimo
don’t fragment=1 il datagramma non deve essere
frammentato

fragment offset
contiene offset del frammento relativamente all’inizio
del datagramma originario

total length
modificato per riflettere la nuova lunghezza
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
21
ICMP Unreachable Error (Fragmentation Required)

Se per un datagram con flag DF settato è necessaria
la frammentazione
» viene generato un errore unreachable



type 3
code 4
contiene MTU della rete del next hop
Path MTU può essere scoperta anche con traceroute
G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper
22
Scarica

UDP - Università di Salerno