Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PPTX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 33
Unità di apprendimento 1
Lezione 3
La comunicazione nel Web
con protocollo http HTTP e il modello client/server HTTP è un protocollo testuale di livello applicativo, usato per trasmettere risorse e basato sul modello di comunicazione client server. Il tipo più comune di risorsa è un file html, ma può
anche essere un’immagine, un documento pdf, o
altro ancora. Possiamo dire che il Web (WWW) è nato
dall’insieme di diverse tecnologie, le principali
sono HTML, URL e HTTP Una risorsa è identificata da un URI o URL. URI, URN e URL (Uniform Resource Identifier, Name e Location)
Differenza tra URI, URN e URL:
• URI: identifica una risorsa • URN: identifica una risorsa in base al nome • URL: identifica una risorsa in base al percorso da utilizzare per accedervi
Un'analogia: • URI: il nome di una persona • URN: il codice fiscale di una persona • URL: l'indirizzo di casa di una persona HTTP e il modello client/server
Vediamo un esempio di indirizzo URl:
Connessioni multiple e connessione permanente Connessioni multiple: apro una connessione per ogni request/response
Connessione permanente: apro una
connessione, invio più request/response e quando ho finito chiudo la connessione. Connessioni multiple e connessione permanente HTTP e il modello client/server Sono state definite varie versioni del protocollo HTTP tra cui: • HTTP/1.0 (anno 1996) • HTTP/1.1 (anno 1999) • HTTP/2 (anno 2015) La versione 1.1 permette di specificare una connessione permanente Nella connessione permanente il server lascia aperta la connessione TCP dopo aver spedito la risposta e rimane in ascolto di altre richieste. Non incanalata (no pipelining) vs incanalata (pipelining) Tipi di connessioni Esistono due tipi di connessione permanente: • connessione permanente incanalata • connessione permanente non incanalata Nella versione non incanalata (no pipeline) il client passa a una nuova richiesta solo quando la risposta alla precedente è stata ricevuta. Nella versione incanalata (pipeline) le richieste
vengono via via aggiunte a una coda chiamata
pipeline, mentre le risposte vengono processate e inviate nello stesso ordine delle richieste . Il protocollo HTTP Conversazione client-server • Ogni conversazione tra client e server sul Web inizia con una richiesta (request) rappresentata da un messaggio di testo creato dal client in formato HTTP. • Il client invia la richiesta al server, quindi attende la risposta (response). • Il protocollo HTTP utilizza messaggi in formato ASCII. I messaggi HTTP Durante una comunicazione HTTP client e server si scambiano messaggi di richiesta e di risposta, entrambi formati da: • una riga iniziale; • un’intestazione (header), anche assente; • una riga vuota; • un corpo del messaggio (body), anche assente; Messaggio di richiesta: Request HTTP Una request http è un messaggio testuale inviato dal client al server ed è formato da tre elementi: • riga di richiesta • Intestazione HTTP (header) • corpo del messaggio(message body) Messaggio di richiesta: Request HTTP Riga di richiesta La riga di richiesta contiene: • il metodo (Method) che può essere: • GET, POST, DELETE, … • l’URI (o URL) è l’identificativo di risorsa richiesta al server; • la versione (Version) può assumere i valori HTTP/1.0 o HTTP/1.1. Messaggio di richiesta: Request HTTP Un esempio di riga di richiesta HTTP è:
In questo caso possiamo notare:
• che il metodo richiesto è GET • che l’URI è rappresentato da /percorso/file.html • che si tratta di un file in formato html presente nella sottodirectory della radice del server chiamata /percorso Metodi HTTP Nella conversazione HTTP, la prima riga di intestazione di una request contiene un elemento chiamato metodo o verbo HTTP
Ilmetodo GET è quello più utilizzato infatti serve
per richiedere una risorsa al server Nella tabella seguente vediamo un elenco
completo dei metodi http disponibili
Header HTTP Messaggio di richiesta: Request HTTP (header) nelle righe successive vengono indicate gli header (intestazioni), rappresentate da diversi elementi, ciascuno dei quali composto da un nome, seguito dai due punti (:) e da un valore ogni riga rappresenta un distinto header Intestazione HTTP (header) L’intestazione HTTP (header) contiene varie informazioni È formata da diverse righe, ciascuna delle quali rispetta il formato
Alcuni esempi di header:
• Transfer-Encoding: indica la compressione dei dati trasmessi e si riferisce a tutto il messaggio • Content-Type: indica il MIME e specifica se si tratta di un testo, un’immagine PNG, un suono WAV, un MPG ecc.; • User-Agent: indica la versione e il tipo di browser oltre alla versione e al sistema operativo del client; Corpo del messaggio (Message body) Il corpo del messaggio (message body) di richiesta contiene i dati trasportati. In questo caso si trattandosi di una GET non invia nulla nel corpo del messaggio. Messaggio di risposta: Response HTTP La response (risposta) HTTP è organizzata in maniera analoga rispetto a una richiesta. L’unica differenza è che le risposte iniziano con
una riga di stato al posto della riga di richiesta.
La response è formata da:
• una riga iniziale con versione protocollo HTTP e stato;
• un’intestazione(header) facoltativa; • un corpo(body) facoltativo. Messaggio di risposta: Response HTTP Body della risposta I codici di stato – esempi I codici di stato I codici di stato, o status code, sono dei codici restituiti dai server HTTP per indicare al client l’esito di una richiesta. Sono stati definiti dall’IETF e sono circa 50 e sono
stati suddivisi per categoria:
• 1 codici da 100-199 (Information) • 2 codici da 200-299 (Successful) • 3 codici da 300-399 (Redirection) • 4 codici da 400-499 (Client error) • 5 codici da 500-599 (Server error) Come vedere il funzionamento di http con chrome e curl Di seguito vediamo come analizzare il contenuto http mediante due programmi • Google chrome • curl Come vedere il funzionamento di HTTP Seusate Chrome e i suoi strumenti, è disponibile Chrome Developer Tools che nella sua versione completa permette: • la navigazione all’interno del DOM delle pagine Web; • l’analisi e la modifica dell’HTML e dei fogli di stile in tempo reale; • il monitoraggio, il debug e le modifiche del codice JavaScript in tempo reale. Come vedere il funzionamento di HTTP I codici di stato cURL Un altro utile metodo per prendere confidenza con l’HTTP è di usare un client dedicato Noi utilizzeremo cURL I codici di stato cURL è un software gratuito e open source definito dai sui stessi autori come “command line tool and library for transferring data with URLs”. cURL viene utilizzato nelle righe di comando o negli script per trasferire i dati in tutti i tipi di dispositivi, dal PC al tablet, dai televisori alle stampanti, dai router alle apparecchiature Audio EDD. cURL viene utilizzato per effettuare i test dei siti Web, sia semplici come quelli composti da poche pagine che noi realizzeremo, sia estremamente complessi come Facebook o YouTube. cURL è un software da riga di comando per Shell/DOS che, oltre a HTTP, interagisce con svariati protocolli, come FTP e TELNET. I codici di stato Con cURLè possibile effettuare molte operazioni: • recuperare una pagina Web e il suo contenuto • inviare in modo fittizio i dati di un form • autenticarci in modo fittizio in un’area riservata • connetterci in modo generico a un Web service