Architetture Web Protocolli di Comunicazione Alessandro Martinelli alessandro.martinelli@unipv.it 10 Maggio 2011 Architetture Web Architetture Web Protocolli di Comunicazione Il Client Side Il Server Side Gli Standard della Comunicazione Fondamenti di Informatica II
Protocolli di Comunicazione I Layer di una Architettura di Comunicazione in Rete Le Architetture TCP/IP moderne ricalcano in larga misura lo schema ISO/OSI (Standard ISO Open Systems Interconnection), dove un unico Layer Applicativo sostituisce gli strati più alti del modello originale. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 2 / 13
Protocolli di Comunicazione Header e Pacchetti L Architettura TCP/IP offre un servizio di comunicazione per il trasferimento dei messaggi realizzati dal Layer Applicativo. Le Applicazioni ed i Server Web utilizzano i protocolli dello Strato Applicativo per dialogare tra di loro. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 3 / 13
Protocolli di Comunicazione I Layer di una Architettura di Comunicazione in Rete Alcuni importanti protocolli del Layer Applicativo HTTP: HyperText Transfer Protocol FTP : File Transfer Protocol SMTP : Simple Mail Transfer Protocol POP : Post Office Protocol IMAP : Internet Message Access Protocol Transport Layer Security : Transport Layer Security SSH : Secure SHell Le specifiche di questi protocolli sono da sempre definite attraverso gli RFC (Request for Comment), documenti pubblici utilizzati per proporre nuovi protocolli di Rete. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 4 / 13
Protocolli di Comunicazione Protocolli e Porte Tra i servizi offerti dal Layer TCP, uno dei più rilevanti è il concetto di Porta. Porta TCP/IP Una Porta è l identificativo di un Canale di Comunicazione. Le Porte sono associate ai Messaggi nell Header TCP. Più protocolli applicativi possono usare il servizio TCP/IP utilizzando porte differenti. Grazie alla Porta il protocollo TCP è in grado di individuare a quale Applicazione o Protocollo Applicativo un messaggio è destinato. Le Porte TCP nelle API: i Socket Il termine Socket nelle API per la programmazione di rete sta ad indicare un Canale di Comunicazione cottraddistinto da una certa Porta. Ad esempio, in un linguaggio come JAVA un programmatore: istanzierà un Oggetto di tipo Socket per avere accesso ad un servizio TCP/IP farà uso di una libreria che implementa un protocollo Applicativo come HTTP che per funzionare avrà bisogno di istanziare un Socket. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 5 / 13
Il Protocollo HTTP HyperText Transfert Protocol L HyperText Transfert Protocol (HTTP) è lo standard WEB per il trasferimento di contenuti ipertestuali e multimediali. Nasce alla fine degli anni 80. Si afferma come standard negli anni 90 grazie ai contributi del World Wide Web Consortium, che in parallelo definiva gli altri standard del WEB, ovvero: l HyperText Markup Language (HTML) per la descrizione dei contenuti multimediali ed il concetto di Uniform Resource Locator(URL) per la locazione dei contenuti multimediali in RETE. HTTP, solitamente, utilizza la porta di comunicazione 80. HTTP e URLs L URL è una stringa di testo con un formato standard che consente l identificazione di una Risorsa di rete. protocollo://[username:password@]nomehost[:porta][/percorso][?parametri] NOTA: [] indicano elementi opzionali. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 6 / 13
Il Protocollo HTTP Un Esempio HTTP e URLs Se il protocollo è http, l URL si traduce in una Richiesta HTTP, da spedire all indirizzo IP il dell host, ovvero il Server HTTP, (eventualmente risolto attraverso i DNS) sul canale identificato dalla porta. Il percorso identifica la posizione univoca all interno al server http del contenuto ipertestuale. I?parametri contengono informazioni aggiuntive che descrivono il modo o le opzioni con cui è richiesto al server di fornire i contenuti ipertestuali. Un Esempio di Richiesta HTTP: GET /wiki/pagina principale HTTP/1.1 Connection: Keep-Alive User-Agent: Mozilla/5.0 (compatible; Konq ueror/3.2; Linux) (KHTML, like Gecko) Accept: text/html, image/jpeg, image/png, text/*, image/*, */* Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5 Accept-Language: en Host: it.wikipedia.org A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 7 / 13
Il Protocollo HTTP HTTP: La Richiesta Il messaggio HTTP ha solitamente una intestazione (header) ed un corpo (body) La prima riga del header HTTP è la riga di richiesta, che è composta da: Il Metodo di Richiesta. Tra i metodi principali, GET, HEAD e POST. l Uniform Resource Identifier (URI), ed è l identificatore dell oggetto che viene richiesto. la versione del protocollo utilizzata. Attraverso le richieste HTTP i Client Web possono interagire con i Server Web: GET: il Client chiede il contenuto Multimediale identificato dall URI. Il Server risponde con: Header Http: un messaggio che descrive il contenuto Multimediale. Body Http: il contenuto multimediale stesso. HEAD: il Client chiede soltanto le informazioni relative al contenuto multimediale (l Header HTTP). POST: il Client fornisce informazioni al Server. Header Http: l URI descrive l informazione che il Client vuole caricare. Body Http: contiene le informazioni che devono essere caricate A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 8 / 13
Il Protocollo HTTP La risposta HTTP è sempre accompagnata da un Header che fornisce informazioni dettagliate sul contenuto relativo all URI. Tra le informazioni principali, la Risposta riporta anche il tipo di contenuto, che deve essere una delle categorie di contenuti standard, i MIME (Multipurpose Internet Mail Extensions) come: text/html image/jpg text/plain image/gif Un Esempio di Risposta HTTP: HTTP/1.0 200 OK Date: Mon, 28 Jun 2004 10:47:31 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 X-Powered-By: PHP/4.3.4 Vary: Accept-Encoding,Cookie Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Content-Language: it Content-Type: text/html; charset=utf-8 Age: 7673 X-Cache: HIT from wikipedia.org Connection: close A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 9 / 13 HTTP: La risposta
Altri Protocolli di Comunicazione Protocolli Mail : PoP e IMAP I Protocolli di Comunicazione per la Posta Elettronica sono protocolli che consentono una comunicazione più specifica tra un server di Posta Elettronica ed un Client. PoP: Post Office Protocol Porta Standard: 110 Consente di scaricare i file che contengono i dati delle e-mail, e quindi la conseguente lettura dei messaggi di posta in locale. IMAP: Internet Message Access Protocol Porta Standard: 143 Consente di richiedere singole e-mail o contenuto MIME specifici delle e-mail. Mantiene aperta la connessione con client. Consente più di una connessione alla stessa casella di Posta. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 10 / 13
Altri Protocolli di Comunicazione FTP : File Transfer Protocol Il File Transfer Protocol è utilizzato per il trasferimento e la gestione di File attraverso la Rete. Prime specifiche all inizio degli anni 70. Utilizza la porta 21. All interno dei Browser è spesso utilizzato per consentire la navigazione del File System di un Server da Remoto. Un problema Noto E noto che uno dei problemi principali dell FTP è la mancanza di meccanismi di sicurezza; infatti, non essendo i messaggi crittografati, i file trasferiti con l FTP possono essere sniffati (come si dice in gergo) attraverso la comunicazione di rete, e possono quindi essere recuperati da utenti della rete non ben intenzionati. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 11 / 13
Altri Protocolli di Comunicazione TLS : Transport Layer Security Messaggio Crittografato Un Messaggio Crittografato è un codice binario illeggibile, risultato da un algoritmo di elaborazione che trasforma un Messaggio Originale. L algoritmo di elaborazione è invertibile. Sia l Algoritmo di Crittografia che l Algoritmo Inverso del messaggio orginale hanno bisogno di conoscere una chiave comune. La chiave comune rappresenta un codice segreto. Solo chi è a conoscenza della Chiave può applicare l Algoritmo Inverso ed ottenere il Messaggio Originale Il Trasport Layer Security è un protocollo che prevede l applicazione di chiavi crittografiche hai messaggi, per rendere sicuro il trasferimento dei dati. Sul TLS si basano: l HTTPS: una versione di HTTP che usa TLS per rendere la comunicazione più sicura il FTPS: una versione di FTP che usa TLS per rendere la comunicazione più sicura A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 12 / 13
Altri Protocolli di Comunicazione SSH : Secure Shell Il Secure Shell (SSH) è un protocollo di comunicazione che raggiunge due importanti obiettivi: Garantire la sicurezza della comunicazione. Fornire un servizio simile a quello di una Shell Linux, ma operando da remoto. L SSH è molto amato ed utilizzato negli ambienti legati a Server Linux e ai Sistemi Embedded che dispongono di moduli di Rete. Dall SSH deriva l SSH File Transfer Protocol (SFTP) una versione di FTP che usa SSH per garantire la sicurezza. A. Martinelli () Architetture Web Protocolli di Comunicazione 10/05/2011 13 / 13