TCP, UDP
o
Rete: instradamento dei datagrammi dall’origine al
destinatario
IP, protocolli di instradamento
o
Link (collegamento): instradamento dei datagrammi
attraverso una serie di commutatori di pacchetto
PPP, Ethernet
o
Fisico: trasferimento dei singoli bit sfrutta l’incapsulamento
Per trasmettere i dati da un mittente ad un destinatario si
descritto nella figura sottostante:
L’origine produce un messaggio M nel livello applicazione, viene passato nel livello
trasporto sotto forma di segmento, poi va a finire nel livello rete come datagramma
e infine arriva nel livello di collegamento in forma di frame. Qui, sfruttando il livello
fisico, il frame passa nel livello di collegamento di uno switch, ovvero un
commutatore che ha la funzione di far passare i pacchetti da una macchina all’altra a
seconda dell’indirizzo MAC del destinatario. Invece il router ha la funzione di
IP. Una volta
trasmettere i pacchetti da una macchina all’altra attraverso l’indirizzo
che i messaggi arrivano nel livello rete del router, questi vengono mandati nel
destinatario che segue il processo inverso chiamato “deincapsulamento” per far
arrivare il messaggio M nel livello applicazione.
Servizi Con Connessione
Abbiamo detto che i servizi possono essere o “con connessione” (TCP) o “senza
connessione” (UDP). Nel primo caso il servizio è offerto attraverso tre fasi:
1. Apertura della connessione tra due punti della rete
2. Utilizzo della connessione per inviare i dati
3. Chiusura della connessione
accomuna tutti i servizi di connessione è che i dati sono ricevuti
La caratteristica che
nello stesso ordine in cui vengono inviati.
Esistono due variante di flusso di dati: stream di messaggi o stream di byte.
Servizi Senza Connessione
I servizi senza connessione saltano sia la prima che l’ultima fase dei servizi con
connessione.
I dati sono inviati impacchettati in messaggi, ognuno dei quali contiene l’indirizzo
completo del destinatario.
Non arrivano necessariamente nell’ordine in cui sono inviati.
Qualità del Servizio
La qualità del servizio è data da diversi parametri:
Ordine di consegna dei dati: è garantito solo dai servizi con connessione
Ricezione garantita del messaggio
Il ricevitore manda un ack (ricevuta) per ogni messaggio.
o Gli ack possono essere usati sia per servizi con connessione che senza
o connessione.
Se il trasmittente non riceve l’ack, può decidere di inviare di nuovo il
o messaggio. Dopo quanto tempo? Uso di un timer.
Consegna corretta dei messaggi (es. uso di checksum)
Tempi di consegna: ritardo e jitter (es. per servizi real‐time multimediali)
Servizi Con Connessione e Senza Connessione
I principali tipi di servizi sono descritti nella tabella sottostante:
TCP/IP: Protocolli e Servizi Offerti
Vediamo i protocolli e i servizi offerti dal livello di rete e il livello di trasporto:
Livello di RETE
IP Internet Protocol
• Invio di datagrammi senza garanzia di consegna
• Indirizzamento
• Routing
• Controllo della congestione
• Trasmissione multicast
• Internetworking
Livello di TRASPORTO
TCP Transmission Control Protocol
• Apertura e chiusura della connessione
• Flusso di byte bidirezionale lungo un canale virtuale
• Ordinamento dei dati
• Garanzia della non duplicazione dei dati
• Controllo di flusso
• Controllo degli errori
UDP User Datagram Protocol
• Trasmissione senza connessione e senza garanzia di ordinamento
non affidabile, ma più rapido (es. per servizi real‐time)
• Scambio di messaggi
Confronto tra ISO‐OSI e TCP/IP
Mettiamo a confronto i due modelli.
Quello che si nota è che il modello ISO‐OSI è formato da 7 livelli, mentre il modello
TCP/IP da solo 4 livelli, infatti il livello applicazione di quest’ultimo corrisponde ai
del modello TCP/IP corrisponde
livelli 5, 6 e 7 del modello ISO‐OSI, mentre il livello 1
al primo e al secondo livello del modello ISO‐OSI. Corrispondono solo i livelli rete e
trasporto.
I vantaggi del modello TCP/IP sull’OSI sono fondamentalmente due:
Quando nacque OSI, TCP/IP era già presente nel mondo accademico come
supporto ad alcune applicazioni molto diffuse (ftp, telnet)
I protocolli del modello TCP/IP sono molto più semplici e facili da
implementare; inoltre sono open‐source!
Il modello OSI è stato ed è utile per discutere e progettare le reti di computer, ma i
protocolli non si sono mai affermati, al contrario di quelli di TCP/IP
LIVELLO APPLICAZIONE
Creare un’Applicazione di Rete
Creare un’applicazione di rete significa scrivere programmi che girano su sistemi
terminali diversi e che comunicano attraverso la rete. Ad esempio il software di un
server Web comunica con il software di un browser.
Inoltre non occorre predisporre programmi per i dispositivi del nucleo della rete,
quali router o commutatori Ethernet.
Processi Comunicanti
Chiaramente quando realizziamo un’applicazione di rete, stiamo facendo
comunicare fra loro dei processi che girano su macchine diverse. Un processo è un
programma in esecuzione su di un host.
All’interno dello stesso host, due processi comunicano utilizzando schemi
interprocesso (definiti dal sistema operativo). Mentre processi su host differenti
scambio di messaggi.
comunicano attraverso lo
Si distinguono due tipi di processi:
Processo client: processo che dà inizio alla comunicazione
Processo server: processo che attende di essere contattato
Nelle applicazione con architetture P2P sono presenti questi due tipi di processi.
Indirizzamento
Affinché un processo su un host invii un messaggio a un processo su un altro host, il
mittente deve identificare il processo destinatario. Su internet tuti gli host sono
identificati attraverso il cosiddetto indirizzo IP, univoco a 32 bit. ad indirizzare
Però l’indirizzo IP è sufficiente ad indirizzare un computer, ma non
un’applicazione. Poiché su uno stesso computer possono girare più applicazioni, si
deve usare un altro numero aggiuntivo per distinguere le varie applicazioni presenti
su uno stesso computer: questo numero è chiamato “numero di porta”.
serve ad
La coppia indirizzo IP‐numero di porta è definita in gergo “socket” e
identificare un’applicazione particolare su una determinata macchina.
Esempio:
Indirizzo IP: 128.119.245.12
Numero di porta: 80
Protocollo a Livello di Applicazione
I protocolli a livello di applicazione sono usati per questi scopi:
Tipi di messaggi scambiati, ad esempio messaggi di richiesta e di risposta
Sintassi dei tipi di messaggio: quali sono i campi nel messaggio e come sono
descritti
Semantica dei campi, ovvero significato delle informazioni nei campi
Regole per determinare quando e come un processo invia e risponde ai
messaggi
Inoltre i protocolli possono essere definiti o da noi o dai altri. Si distinguono in
protocolli di pubblico dominio, che possono essere definiti ad esempio nelle
protocolli
“Request for comments” descritte in precedenza (esempi: HTTP, SMTP), in
proprietari, ovvero protocolli riservati ad esempio a soli due utenti senza che gli altri
lo comprendano (esempio: Skype).
Quale Servizio di Trasporto Richiede un’Applicazione?
Il livello applicazione per funzionare ha bisogno del livello trasporto, quindi quando
viene definito, ad esempio, il protocollo HTTP bisogna decidere quale livello di
trasporto deve usare. La scelta può ricadere o su TCP o su UDP e dipende dalla
fattori:
qualità del servizio che si desidera avere e da altri quattro
Perdita di dati
Temporizzazione
Throughput
Sicurezza
‐ WEB E HTTP
Una pagina web è costituita da un insieme di oggetti che possono essere file HTML,
un’immagine JPEG, un’applet Java, un file audio, …
Di solito la pagina web contiene un file HTML di base che descrive la formattazione
degli oggetti all’interno della pagina e un insieme di oggetti referenziati da quella
pagina. Il riferimento di un oggetto all’interno di un file HTML avviene attraverso
degli URL.
Un esempio di URL:
Panoramica su HTTP
Il protocollo HTTP (hypertext transfer protocol) è un
protocollo di livello applicazione che permette ad un
client di scaricare una pagina web e i relativi
contenuti da un server web.
Viene implementato un modello client/server dove:
Client: è il browser che richiede, riceve,
“visualizza” gli oggetti del Web
Server: il server web invia oggetti in risposta a
una richiesta
HTTP usa il protocollo TCP a livello trasporto e procede come segue:
Il client inizializza la connessione TCP (crea un socket) con il server, la porta 80
Il server accetta la connessione TCP dal client
Messaggi HTTP scambiati fra browser (client HTTP) e server web (server HTTP)
Connessione TCP chiusa
Inoltre HTTP è un protocollo “senza stato” (stateless), ovvero il server non mantiene
informazione sulle richieste fatte dal client.
Connessione HTTP
HTTP si può realizzare in due modi:
Connessioni non persistenti: almeno un oggetto viene trasmesso su una
connessione TCP
Connessioni persistenti: più oggetti possono essere trasmessi su una singola
connessione TCP tra client e server
Connessione Non Persistenti
Supponiamo che l’utente immetta l’URL
“www.someSchool.edu/someDepartment/home.index”, e supponiamo inoltre che la
pagina home.index contenga, oltre al testo, i riferimenti a 10 immagini jpeg.
Vediamo cosa succede quando immettiamo questo URL.
1a. Il client HTTP inizializza una connessione TCP con il server HTTP (processo)
a www.someSchool.edu sulla porta 80.
Il server HTTP all’host www.someSchool.edu in attesa di una connessione
1b.
TCP alla porta 80 “accetta” la connessione e avvisa il client.
2. Il client HTTP trasmette un messaggio di richiesta (con l’URL) nella socket
della connessione TCP. Il messaggio indica che il client vuole l’oggetto
someDepartment/home.index.
HTTP riceve il messaggio di richiesta, forma il messaggio di risposta
3. Il server
che contiene l’oggetto richiesto e invia il messaggio nella sua socket.
4. Il server HTTP chiude la connessione TCP.
5. Il client HTTP riceve il messaggio di risposta che contiene il file html e
il file html, trova i riferimenti a 10
visualizza il documento html. Esamina
oggetti jpeg.
6. I passi 1‐5 sono ripetuti per ciascuno dei 10 oggetti jpeg.
Il vantaggio della connessione non persist
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.