Stack protocolli TCP/IP Application Layer Transport Layer Internet Layer Host-to-Nework Layer DNS SMTP Telnet HTTP TCP UDP IP Insieme di eterogenei sistemi di rete... 1 Concetti base Differenza tra i concetti applicazione di rete (es. il Web, la posta elettronica) e protocolli dello strato applicazione (es. http, smtp) Modello tipicamente implementato dalle applicazioni di rete: client / server Porta: (canale d accesso) indirizzo di un processo, numero a 16 bit (tra 1 e 65.535) utilizzato per identificare un particolare processo di rete (connessione) tra quelli attivi su un calcolatore. Socket di un processo: interfaccia tra il processo dell applicazione e il protocollo di trasporto Disegno socket 2 1
Il World Wide Web = Servizio per il trasferimento e la visualizzazione di file ipermediali (all inizio ipertestuali) Permette di trasferire documenti ipermediali (= composti di più file di tipo diverso: testo, immagini, ecc.) da un host a un altro e di interpretarli. Client = web browser, Server = web server Protocollo di comunicazione tra client e server: HTTP (HyperText Transfer Protocol). Linguaggio base dei documenti scambiati mediante HTTP: HTML 3 Il World Wide Web Tappe principali 1989 inizio progetto al CERN (Centro Europeo per la Ricerca Nucleare) guidato da Tim Berners Lee per condivisione report, fotografie, progetti e altri documenti 1991 prima dimostrazione alla conferenza sull ipertesto 1993 prima release di un browser con interfaccia grafica: Mosaic, realizzato da Marc Andressen, che fonda poi Netscape 1994 il CERN e il MIT di Boston costituiscono il W3C (World Wide Web Consortium) per guidare gli sviluppi del Web e per la standardizzazione dei protocolli 4 2
HTTP (HyperText Transfer Protocol) URL (Uniform Resource Locator), per identificare le risorse Porta standard 80 Protocollo ASCII, in chiaro Stateless (senza memoria di stato, non conserva le informazioni relative alle connessioni precedenti) Usa TCP per il trasporto HTTP/1.0: consente solo connessioni non persistenti HTTP/1.1: consente sia connessioni non persistenti sia persistenti 5 HTTP (HyperText Transfer Protocol) Modello Request/Response: Client: richiede connessione TCP al server Httpd Server: accetta la connessione Client: invia richiesta (client request) Server: invia risposta (server response) Client: interpreta il documento e lo visualizza; se HTTP/1.1, invia richieste di oggetti da caricare nella stessa connessione, se HTTP/1.0 chiude connessione e ripete i passi precedenti per tutti gli oggetti eventuali da caricare nel documento Server: chiude la connessione (se HTTP/1.0) o rimane in attesa (se HTTP/1.1) 6 Disegno request/response 3
HTTP (HyperText Transfer Protocol) Modello Request/Response Client request Solo la parte dopo il numero di pota GET POST HEAD PUT DELETE <method><url><http version> [<HEADER>:<value> ] CRLF.. [<HEADER>:<value> ] CRLF linea vuota CRLF [Entity Body] Es. CRLF Request line (= linea di caratteri) Request HEADER BODY CRLF = carriage return/line feed (ossia andare a capo ). GET /index.html HTTP/1.0 Host:www.di.unito.it Accept:text/html Accept :audio/x CRLF Request line Request HEADER (usato solo per inviare dati, es. form) 7 HTTP (HyperText Transfer Protocol) Modello Request/Response Server response <HTTP version> <result code>[<info>]crlf Response line (= linea di caratteri) [<HEADER>:<value> ] CRLF.. [<HEADER>:<value> ] CRLF lineavuota CRLF [Entity Body] Response HEADER BODY CRLF = carriage return/line feed (ossia andare a capo ). (presente se il result code classe 2xx) Perché la ver. del client era 1.0 Es. HTTP/1.1 200 OK Connection:close Content-Type:text/html Contenuto del file index.html inviato Request line Request HEADER Body 8 4
HTTP status codes 1xx: Informational - Not used 2xx: Success - action received, understood, accepted. 3xx: Redirection - Further action requested 4xx: Client Error - bad syntax 5xx: Server Error - server failed Status-Code = "200" ; OK "201" ; Created "202" ; Accepted "204" ; No Content "301" ; Moved Permanently "302" ; Moved Temporarily "304" ; Not Modified "400" ; Bad Request "401" ; Unauthorized "403" ; Forbidden "404" ; Not Found "500" ; Internal Server Error "501" ; Not Implemented "502" ; Bad Gateway "503" ; Service Unavailable 9 HTML È un applicazione dell SGML (Standard Gereralized Markup Language), creato per gli ipertesti e semplificato per il Web. Sono state definite versioni successive: 1.0 (1993): tag di base: html, head, body, formattazione, img, href: è un linguaggio monodirezionale, senza interazione pagine statiche 2.0 (1995): mappe cliccabili, form: queste ultime consentono di inviare dati a un programma che li elabora pagine dinamiche 10 5
HTML il metodo CGI Il metodo standard con il quale il client invoca l esecuzione di questo programma sul server e ottiene un output è detto CGI (common gateway interface). E ci si riferisce ai programmi come programmi CGI. Caratteristica dei programmi CGI è l essere parametrizzati da una stringa di valori ricevuti dal client I valori dell attributo method del tag form sono mappati sui metodi HTTP della request line I valori dei campi input, radio, textarea, ecc. vengono inviati come NAME=VALUE&NAME=VALUE, ecc. e inseriti: nel body della request (se il metodo è POST) nell URL della request line, preceduti da? (se è GET) 11 HTML il metodo CGI Web browser Web server Environmnet variables 1 Submit Submit 2 Post 3 4 creazione ambiente programma 5 CGI esecuzione 6 lettura ambiente invio file HTML 10 7 input 9 output standard standard 8 risorsa (Es. DBMS) 12 6
HTML 3.2 (1996): tabelle, fogli di stile, applet: Fogli di Stile = meccanismo per aggiungere lo stile (es. font, color, spacing) a documenti Web. Si tratta di regole, dichiarazioni che non sono annegate insieme al codice HTML ma sono tipicamente mantenute separate: In un file a parte All interno dell Head E possibile comunque anche scrivere queste dichiarazioni all interno dei Tag tradizionali, aggiungendo l attiributo style. 13 HTML APPLET = piccolo programma in java, il cui codice viene scaricato ed eseguito sul browser. A tal fine è stata introdotta la JVM: una macchina virtuale diversa per ogni SO (incorporata in modo nativo nei browser che supportano l html 3.2), che traduce il codice in istruzioni macchina secondo le specifiche del SO presente sul client. obiettivo: avere un meccanismo per ottenere indipendenza dalla piattaforma (sistema operativo). 14 7
HTML 4.0 (1997): frame, object, accessibilità, internazionalizzazione Object = sostituisce applet (più generale, con la possibilità di inserire oggetti multimediali, controlli ActiveX sulla macchina client, plug-ins, ecc. ) Accessibilità: Strumenti per l accesso universale (es. comandi vocali, ecc.) Internazionalizzazione. Nuovo set di caratteri; attributo LANG per specificare la lingua usata nel documento 15 8