Servizi di rete e web Prof. Maurizio Naldi A.A. 2015/16
Applicazione Unità di trasmissione dati a livello applicazione Applicazione Presentazione Unità di trasmissione dati a livello presentazione Presentazione Sessione Unità di trasmissione dati a livello sessione Sessione Trasporto Unità di trasmissione dati a livello trasporto Trasporto Limite della sottorete di interconnessione Rete Pacchetto Rete Pacchetto Rete Pacchetto Rete Frame Frame Frame Data link Data link Data link Data link Fisico Bit Fisico Bit Fisico Bit Fisico HOST A Router Router HOST B
Protocolli TCP/IP Coprono 2 livelli Trasporto: controlla l affidabilità del trasporto end-to-end Rete: protocollo IP di invio ed instradamento dei singoli pacchetti di dati sulla rete Indirizzo IP = indirizzo dei dispositivi in rete
La struttura di Internet il contenuto della comunicazione protocollo applicativo: livello applicativo Posta elettronica Accesso remoto SMTP/POP TELNET Copia di file World Wide Web FTP HTTP protocolli di trasmissione: livello di trasmissione TCP UDP protocollo di instradamento: livello di rete IP infrastruttura di connessione: livello di connessione fisica
Protocolli TCP e IP Il TCP Suddivide i dati in uscita in pacchetti a cui viene aggiunta un intestazione (header) con tutte le informazioni sulla destinazione (Internet è una rete a commutazione di pacchetto) I singoli pacchetti (datagrammi) hanno piccole dimensioni (<1500 byte) I pacchetti sono spediti separatamente e poi riassemblati dal ricevente TCP controlla se la comunicazione va a buon fine conferma esplicita (ack) di avvenuta ricezione in assenza di ack la trasmissione viene ripetuta L IP provvede all instradamento dei messaggi.
Indirizzi TCP/IP Livello Applicazione HOST A HOST B Livello Applicazione App. Y App. Y App. X App. X Livello TCP Punti di accesso al servizio (porte) Connessione logica (TCP) Livello TCP Livello IP Protocollo di accesso alla rete 1 Livello Fisico (collegato a rete 1) Indirizzo di rete (globale) Indirizzo del punto di collegamento alla sottorete ROUTER Livello IP Protocollo di accesso alla rete Livello IP Protocollo di accesso alla rete 2 Livello Fisico (collegato a rete 2) Rete 1 Livello Fisico Rete 2
Da un livello all altro Ogni livello attraversato aggiunge un intestazione (header) (contiene informazioni utili alle funzioni proprie di quel livello): TCP (porta TCP, checksum, numero d ordine, ) IP (indirizzo host destinazione, indirizzo host mittente, ) Rete (indirizzo MAC destinazione, indirizzo MAC mittente, ) Dati utente Flusso dati proveniente dall applicazione Intestazione TCP Unità dati a livello TCP Intestazione IP Unità dati a livello IP (datagramma) Intestazione di rete Unità dati a livello rete (frame) Nota: indirizzo MAC (Medium Access Control) assegnato in modo univoco dal produttore ad ogni scheda di rete
Affidabilità su TCP/IP IP è un protocollo connectionless (non orientato alla connessione) frammenta il flusso dei dati in pacchetti; ogni pacchetto inviato a destinazione lungo percorsi (potenzialmente) distinti; il controllo di integrità (checksum) consente soltanto la verifica dell intestazione non dei dati; attenzione: non c è garanzia che tutti i pacchetti arrivino a destinazione né che arrivino in ordine la correttezza e l ordine di ricezione dei dati devono essere assicurati da protocolli di livello più elevato.
Affidabilità su TCP/IP TCP è un protocollo connection-oriented (orientato alla connessione) Stabilisce preliminarmente una connessione garantisce la consegna di un flusso di dati completo di tutte le sue parti, ordinato correttamente e senza duplicazioni il controllo di integrità riguarda sia l intestazione TCP sia i dati il protocollo gestisce le situazioni di congestione del traffico
Affidabilità su TCP/IP La combinazione delle due modalità permette di ottenere sia una buona efficienza di trasmissione sia una elevata affidabilità: OK per applicazioni client-server; Non necessaria dove l affidabilità è requisito meno essenziale della leggerezza del protocollo. In questi casi che corrispondono, ad esempio a trasmissione in streaming o comunicazioni VoIP, il TCP può essere sostituito con altri protocolli (e.g., UDP - User Datagram Protocol).
Pagina Web: È costituita da oggetti (di solito: pagina HTML iniziale+oggetti indirizzati) È indirizzata da un URL Uniform Resource Locator Identifica un oggetto nella rete e specifica il modo per accedere ad esso World Wide Web: terminologia essenziale Ha due componenti: nome dell host e percorso nell host: http://www.cersi.it/testcenter Il browser è un user agent per il Web : MS Internet Explorer Firefox Chrome Safari etc. Un server per il Web è detto semplicemente Web server: Apache (open source) MS Internet Information Server etc.
Application layer: World Wide Web Si basa sul protocollo HTTP (HyperText Transfer Protocol) che gestisce l interazione tra un user agent (browser) e un server web Client e server si scambiano dei messaggi Richieste da parte del client Risposte da parte del server Più precisamente: L utente richiede una pagina residente su un server Il browser richiede una connessione TCP con il server Il server accetta la connessione iniziata dal browser Il browser ed il server si scambiano messaggi La connessione viene chiusa
URL (Uniform Resource Locator) http://docenti.luiss.it/naldi/informatica-canale-b/ protocollo://indirizzo_ip[:porta]/cammino/file (http)
Il Web: protocollo HTTP http: HyperText Transfer Protocol Protocollo di livello applicativo per il Web Usa il modello client/server client: browser che richiede, riceve e mostra oggetti Web server: Web server che invia oggetti in risposta alle richieste PC running Chrome Server con Apache Web server Mac running Firefox
Il protocollo HTTP HTTP: usa TCP: Il client inizia una connessione TCP (crea un socket) verso il server sulla porta 80 Il server accetta la connessione TCP dal client Vengono scambiati messaggi http (messaggi del protocollo di livello applicativo) tra il browser (client http) e il Web server (server http) La connessione TCP è chiusa HTTP è stateless Il server non mantiene informazioni sulle richieste precedenti del client I protocolli che mantengono informazione di stato sono complessi (e.g., TCP)!
Esempio HTTP L utente accede alla URL www.cersi.it/ecdl.html 1a. Il client http inizia una connessione TCP verso il server (processo) HTTP sull host www.cersi.it. La porta 80 è quella standard (default) per i server HTTP. 2. Il client http invia un messaggio di richiesta HTTP (request message) del tipo Tempo GET ecdl.html (contiene testo e Immagini) 1b. Il server HTTP presso l host www.cersi.it è in ascolto sulla porta 80. Accetta la richiesta di connessione e ne dà conferma al client 3. Il server HTTP riceve il messaggio di richiesta, costruisce un messaggio di risposta (response message) contenente l oggetto richiesto (ecdl.html), inoltra il messaggio nel socket
Esempio HTTP (cont.) 4. Il client http riceve il messaggio di risposta contenente il file HTML. Analizzando il file HTML, il browser trova i riferimenti a 10 oggetti jpeg ed invia una richiesta GET per gli oggetti JPEG 6. Il client invia l ultimo ACK per TCP 5. Il server HTTPriceve il messaggio di richiesta, costruisce un messaggio di risposta (response message) contenente l oggetto richiesto (ecdl.html), inoltra il messaggio nel socket 7. Il server HTTP chiude la connessione TCP. Tempo
Socket (lato server) Un socket (presa, attacco) è uno dei terminali di un collegamento bidirezionale tra due applicazioni di rete. Un socket è legato (bind) a una porta così che il livello TCP possa identificare l applicazione a cui sono destinati i dati: l indirizzo di un socket è la combinazione dell indirizzo IP e del numero di porta (# telefono, interno). Ogni servizio utilizza un socket connesso ad uno specifico numero di porta La porta 25 è utilizzata per l email La porta 80 per il web Il servizio mette in ascolto (listen) il socket in attesa che un cliente inoltri una richiesta di connessione.
Socket (lato client) Un client che vuole usufruire del servizio: crea un socket si connette (connect) al servizio in ascolto specifica l indirizzo IP del server ed il numero di porta corrispondente al servizio di cui vuole usufruire invia sul socket la sua richiesta rimane in attesa della risposta al termine chiude il socket.
Socket
Formato dei messaggi HTTP Due tipi di messaggi HTTP: request, response Messaggio HTTP request: ASCII (formato testo leggibile) Richiesta (GET, POST, HEAD commands) header lines Carriage return, line feed indica fine richiesta GET /somedir/page.html HTTP/1.1 Host: www.cersi.it Connection: close User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr (extra carriage return, line feed) Chiudi la connessione al termine della richiesta
status line (protocol codice di ritorno status phrase) Formato dei messaggi HTTP header lines (response) HTTP/1.1 200 OK Connection: close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998... Content-Length: 6821 Content-Type: text/html data, e.g., l oggetto html richiesto data data data data data... Client HTTP 1.0: Server chiude connessione al termine della richiesta Client HTTP 1.1: mantiene aperta la connessione oppure chiude se Connection: close
Sintesi del flusso dei messaggi HTTP
Posta elettronica outgoing message queue Tre componenti principali : User agent (client) Server di posta Simple Mail Transfer Protocol: SMTP User Agent Interfaccia utente per l email Composizione e lettura di messaggi di posta Es., Eudora, Outlook, elm, (oppure interfaccia web: gmail) I messaggi in ingresso/uscita memorizzati sul server mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user mailbox user agent user agent user agent
Posta elettronica: mail server Mail Server Mailbox contenente messaggi (non ancora letti) per l utente (nella casella di posta) Coda di messaggi in uscita (non ancora spediti) Protocollo SMTP tra i mail server per il recapito dei messaggi client : mail server che invia il messaggio server : mail server che riceve il messaggio mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user agent user agent user agent
Come viene recapitato un messaggio di posta elettronica 1. Alice compone un messaggio e lo inoltra al suo Mail Server 2. Mail Server dispone il messaggio nella coda di messaggi in uscita 3. Mail Server di Alice apre una connessione smtp con il Mail Server di Bob ed inoltra il messaggio 4. Se il contatto fallisce, l invio è ripetuto ogni trenta minuti 5. Se l invio fallisce per diversi giorni (in genere 5), mail di notifica inviata ad Alice 6. Mail Server di Bob riceve il messaggio dal Mail Server di Alice e lo salva nella Mailbox (casella di posta) di Bob 7. Bob accede la propria Mailbox specificando Username e Password 8. Messaggi possono essere trasferiti dalla Mailbox all host da cui Bob ha effettuato l accesso (attraverso il POP) o consultati direttamente sull server (IMAP) 9. Bob legge il messaggio di Alice
Posta elettronica: SMTP [RFC 821] (1982!) Usa TCP per il trasferimento affidabile dei messaggi da client a server, porta 25 Il trasferimento può coinvolgere più server Ad ogni passaggio (hop) si ripete la procedura Tre fasi Handshaking (saluto) Trasferimento di uno o più messaggi (connessione permanente) Chiusura Interazione mediante comandi/risposte Comando: testo ASCII HELLO, MAIL FROM, RCPT TO, etc. Risposta: codice di stato (200, 354, etc,) e frase Attenzione: I messaggi devono essere comunque inviati in formato ASCII a 7 bit, anche i dati multimediali.
Formato dei messaggi SMTP: protocollo per lo scambio di messaggi di posta RFC 822: standard per il formato dei messaggi inviati: header, ad esempio To: From: Subject: Diversi dai comandi smtp! body Il messaggio vero e proprio, solo caratteri ASCII header body Linea vuota
SMTP Connessioni TCP persistenti Richiede che il messaggio (header & corpo) sia in formato ascii 7-bit Alcune sequenze di caratteri non consentite (es., <CRLF>.<CRLF>). Conseguenza: il messaggio deve essere codificato Il server smtp usa <CRLF>.<CRLF> per determinare la fine del messaggio Confronto con HTTP http: pull email: push Entrambi usano un interazione mediante comandi/risposta in testo ASCII e codici di stato http: ogni oggetto incapsulato nel messaggio di risposta smtp: un messaggio con più oggetti è inviato mediante un messaggio in più parti
Protocolli di accesso alla posta Soluzione tradizionale: l utente legge direttamente la posta sul Mail Server L host su cui è attivo il Mail Server deve essere sempre attivo I client di posta permettono di trasferire l email dal Mail Server al computer dell utente Possibile visualizzare file multimediali e di specifiche applicazioni Occorre un protocollo Pull per accedere alla Mailbox collocata sul Mail Server
Protocolli di accesso alla posta user agent SMTP SMTP POP3 o IMAP user agent mail server del mittente mail server del ricevente SMTP: consegna al / memorizzazione nel server di posta del ricevente Protocollo di accesso: recupero della posta dal server locale POP: Post Office Protocol [RFC 1939] Autenticazione (agent <-->server) e scaricamento IMAP: Internet Mail Access Protocol [RFC 1730] Manipolazione dei messaggi memorizzati sul server attraverso client di posta, es.: outlook HTTP: Interfaccia web, es: Hotmail, Yahoo! Gmail,...
Protocollo POP3 Scarica ed elimina: 1. User Agent elimina la posta dalla Mailbox dopo averla scaricata 2. Un utente disperde la posta sui diversi host da cui accede la Mailbox 3. User Agent permette di creare cartelle, spostare messaggi, effettuare ricerche nei messaggi Scarica e conserva: 1. User Agent conserva la posta sulla Mailbox 2. Utente può leggere i messaggi da host diversi 3. POP3 stateless: non permette di strutturare i messaggi in cartelle Si può ottenere lo stesso effetto con altre applicazioni
Protocollo IMAP Permette di gestire cartelle di posta remote come se fossero locali IMAP deve mantenere una gerarchia di cartelle per ogni utente Permette allo User Agent di scaricare solo parti del messaggio: Intestazione Solo intestazione file MIME Multipart Messaggi di dimensione piccola per utenti a banda limitata Stati: Non-authenticated: utente deve fornire username e password per la connessione Authenticated State: utente deve specificare una cartella prima di eseguire comandi che influiscono sul messaggio Selected State: utente può dare comandi che influiscono sul messaggio, e.g. elimina, salva, sposta Logout State: sessione terminata
Un esempio moderno: Whatsapp Servizio di messaggistica istantanea Oltre a messaggi testo può inviare immagini, video, file audio, etc. Utilizza una versione proprietaria di un protocollo open: Extensible Messaging and Presence Protocol (XMPP). XMPP: specificamente sviluppato per Messaggistica real-time Fornire informazioni sulla disponibilità e la localizzazione Mantenimento della lista di contatti Originariamente proposto nel 1999! Utilizza il TCP come protocollo di trasporto, porta 5222 L applicazione notifica la ricezione di messaggi
Un esempio moderno: Whatsapp Multipiattaforma: ios, Android, MS Windows Phone, Blackberry, Symbian, etc. Creazione automatica di un utenza all atto dell installazione: [numero_di_telefono]@s.whatsapp.net La password dipende dallo specifico dispositivo Centinaia di milioni di utenti!