Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di...

22
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

Transcript of Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di...

Page 1: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

Programmazione su Reti

Il livello trasporto di TCP/IP: TCP e UDPGiuseppe Persiano

Dipartimento di Informatica ed Applicazioni

Università degli Studi di Salerno

http://www.dia.unisa.it/~giuper

Page 2: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

2

I protocolli TCP e UDP

OSI

Application

Presentation

Session

Transport

Network

Data Link

PhysicalNon Specificati

IP

TCP e UDP

RPC

XDR

NFS

Internet Protocol Suite

Arp e Rarp

ICMP Protocollidi routing

Telnet

FTP

SMTP

SNMP

Page 3: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

3

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

Page 4: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

4

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

Page 5: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

5

TCP e UDP: demultiplexing

Appl. 3 porta 26890

Trasporto

Network

Appl. 2 porta 21345

Appl. 1 porta 24561

Page 6: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

6

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).

Page 7: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

7

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.

Page 8: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

8

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.

Page 9: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

9

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)

Page 10: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

10

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

Page 11: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

11

UDP: Header

00 4 8 16 19 24 31

UDP Source Port UDP Destination Port

UDP Checksum

DATA

UDP Message Length

Page 12: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

12

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.

Page 13: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

13

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)

Page 14: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

14

UDP: PDU

Per calcolare il valore da inserire nel campo Checksum, il software crea una pseudo-intestazione composta dai seguenti campi:

Page 15: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

15

UDP: PDU

Page 16: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

16

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.

Page 17: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

17

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.

Page 18: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

18

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

Page 19: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

19

UDP: applicazioni

Le applicazioni principali che utilizzano UDP sono:» NFS (Network File System)

» Talk

» Applicazioni Runix rwho ruptime ...

Page 20: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

20

Frammentazione IP

Ogni interfaccia ha un MTU (Maximum Maximum Transferable UnitTransferable 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.

Page 21: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

21

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

Page 22: Programmazione su Reti Il livello trasporto di TCP/IP: TCP e UDP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di.

G. Persiano -- Dipartimento di Informatica ed Appl. Università di Salerno -- http://www.unisa.it/~giuper

22

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 traceroutetraceroute