Sei sulla pagina 1di 8

Il World Wide Web 1

Il WEB ed HTTP

! !

Una possibile soluzione alla proliferazione di differenti protocolli utilizzati su Internet Origini
Tim Berners-Lee propose il WEB al CERN (Conseil
Europen pour la Recherche Nuclaire - Consiglio Europeo per la Ricerca Nucleare) nel 1989

Sito Web
Insieme coordinato di pagine, relative ad uno stesso tema, che risiedono tipicamente su uno stesso server HTTP

Il Web linsieme di siti web interconnessi con hyperlink


Tecnologie di Sviluppo per il WEB 2

Prof. Carlo Blundo

Il World Wide Web 2


! Scopo del WWW secondo T.B.L.
Permettere a studiosi di avere accesso a molti database di lavori scientifici attraverso i propri computer. Studiosi da tutto il mondo potrebbero ricercare e recuperare documenti su un qualsiasi numero di server.
!

Cosa il W3C (http://www.w3.org)


! Il

Le basi furono gettate su un computer NeXT, implementazione alla fine del 1990, nel 1991 il sistema fu portato su altre piattaforme e reso disponibile a tutti
Tecnologie di Sviluppo per il WEB 3

World Wide Web Consortium (W3C) un consorzio di aziende e centri di ricerca che si occupa dello sviluppo e della standardizzazione del Web ! Mission
Condurre il World Wide Web al suo pieno potenziale sviluppando protocolli e linee guida per assicurare la crescita a lungo termine del Web
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 4

Prof. Carlo Blundo

Il WEB e larchitettura Client Server

WEB browser
!

Mosaic
Sviluppato da NCSA (National Center for SuperComputing Applications presso lUniversit dellIllinois) Il primo ad utilizzare una GUI, ha portato allesplosione delluso del WEB Allinizio funzionava solo per X-Windows sotto Unix, alla fine del 1993 fu portato sotto altre piattaforme

richiesta pagina

pagina

client server
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 5

Oggi:
Firefox, Netscape, IE, Opera, Safari, Mozilla, Amaya,

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

WEB server
! !

WEB server
! Apache
http://httpd.apache.org Gratuito, distribuito con Linux Disponibile anche sotto Mac OS X, Windows, Unix, Usato dal 70% dei server

Un Server Web un programma che fornisce documenti ai browser che ne fanno richiesta. I documenti possono essere statici o dinamici. I documenti dinamici sono costruiti da programmi che sono memorizzati sul server. Ad esempio, un browser invia al server un modulo compilato e richiede ad un programma, che risiede dal lato del server (server-side), di elaborare i dati specificati nel modulo
Tecnologie di Sviluppo per il WEB 7

! ISS

(Internet Information Server)

http://www.microsoft.com A pagamento, Microsoft Usato dal 21% dei server


Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 8

Prof. Carlo Blundo

altri WEB server


! Netscape-Enterprise ! IBM
!

HTTP SERVER ! SunOne Sun Java System ! Jigsaw


reference server di W3C
!

Nel febbraio del 1995, il pi popolare web server era il daemon per HTTP (httpd), di pubblico dominio, sviluppato da Rob McCool presso il National Center for Supercomputing Applications (NCSA) dellUniversity of Illinois Lo sviluppo di questo daemon era in stallo da met del 1994 perch McCool aveva lasciato NCSA.
Tecnologie di Sviluppo per il WEB 10

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Prof. Carlo Blundo

Caratteristiche di Apache
! !

Molti webmaster avevano sviluppato le proprie estensioni e corretto vari bug Un piccolo gruppo di questi webmaster iniziarono a collaborare per coordinare i loro cambiamenti al server (sotto forma di pach) Alla fine del febbraio 1995, otto di tali webmaster gettarono le basi dellApache Group originario.
http://httpd.apache.org/ABOUT_APACHE.html

! Apache: ! Stabilit

A PAtCHy sErver ed affidabilit

Processo di sviluppo open source (disponibilit del codice sorgente)


! Portabilit

Supporto dei SO Linux, Unix, Microsoft Windows, OS/2, Solaris


! Efficienza, ! Supporto

flessibilit dei pi recenti protocolli


Tecnologie di Sviluppo per il WEB 12

compatibilit con HTTP/1.1


11 Prof. Carlo Blundo

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

URL (Uniform Resource Locator )


! Per

Sintassi di una URL 1


SCHEMA:// [username:password@]identificatore.host[:NumeroPorta]/[path]

poter individuare ed accedere a risorse sul WEB necessario un meccanismo per poterle identificare (tramite un nome) e localizzare (tramite un indirizzo) ! Una URL indica la collocazione reale di una risorsa accessibile mediante uno dei protocolli (HTTP) attualmente in uso su Internet
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 13

! Le

! Una

parti di colore rosso sono opzionali URL divisa in tre parti


di

identificatore dello schema indirizzamento, seguito dal simbolo ':// '


http://

identificatore dell'host sul quale risiede la risorsa, espresso mediante un nome di dominio o un indirizzo IP
carprera.dia.unisa.it
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 14

Sintassi di una URL 2


SCHEMA:// [username:password@]identificatore.host[:NumeroPorta]/[path]

Parti opzionali dellidentificatore


! Lidentificatore

! Terza

parte di una URL

pu essere preceduto (se lo schema lo permette) dalla coppia


'username' e 'password' separata dal simbolo ':' (due punti) e seguita dal simbolo '@'

stringa di identificazione della risorsa sul server (path) preceduta dal simbolo '/';
la sua interpretazione dipende dallo schema di denominazione; il simbolo '/' viene utilizzato per denotare una struttura gerarchica, con la parte a sinistra indicante il livello superiore /TSW/index.shtml
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 15

! Lidentificatore

pu essere seguito da

l'indicatore della porta del server a cui collegarsi preceduto dal simbolo ':';
! Esempio

di URL
Tecnologie di Sviluppo per il WEB 16

http://www.dia.unisa.it/TSW/ESAMI/orali.html
Prof. Carlo Blundo

Tipi di schemi di indirizzamento


! ! ! ! ! ! ! !

http per il protocollo HTTP ftp: per il File Transfer Protocol gopher: per il Gopher protocol mailto: per gli indirizzi di posta elettronica news: per i messaggi dei newsgroup NNTP wais: per i server WAIS file: per l'accesso a file locali telnet, rlogin, tn3270: per riferirsi a sessioni interattive in modalit terminale
Tecnologie di Sviluppo per il WEB 17

HTTP
Hypertext Transfer Protocol

Prof. Carlo Blundo

HTTP
! Protocollo

Apertura della connessione


! ! ! ! !

di livello applicativo per sistemi di informazione distribuiti, collaborativi ed ipermediali


Esso viene utilizzato dal web server e dal client (user agent) per comunicare Si colloca al di sopra di TCP/IP Permette di costruire sistemi di accesso allinformazione indipendenti dal tipo dellinformazione stessa

Il browser (user agent) analizza lURL e ne estrae il dominio Il browser consulta il DNS per ottenere lindirizzo IP corrispondente al dominio Il browser apre una connessione TCP con il web server (usa la porta 80) I messaggi HTTP sono di 2 tipi:
request / response

Una volta stabilita la connessione, il browser richiede una risorsa al web server (request) e il server risponde inviando o la risorsa richiesta oppure un messaggio di errore (response)

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

19

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

20

Caratteristiche di HTTP
! HTTP

Connessione HTTP
HTTP 0.9 C S
open close open close open close

esistito in tre versioni:

0.9 1.0 (RFC 1945) 1.1 (RFC 2616)


! La

HTTP 1.0 C S
open close open close open close

HTTP 1.1 HTTP 1.1 con pipelining C S C S


open open

differenza principale tra HTTP 1.0 e 1.1 stata la possibilit di specificare coppie multiple di richiesta e risposta nella stessa connessione
Tecnologie di Sviluppo per il WEB 21

close close

(solo GET)
Prof. Carlo Blundo

(GET, POST, HEAD, PUT)

(GET, POST, (GET, POST, HEAD, PUT) HEAD, PUT)


22

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Ulteriori caratteristiche di HTTP


!

Messaggi HTTP
! !

HTTP stateless Il server non mantiene alcuna informazione sulle richieste passate del client I protocolli che conservano lo stato sono molto complessi
La storia passata (stato) deve essere mantenuta

Il protocollo definisce il formato dei messaggi request e response hanno lo stesso formato e seguono la struttura di un messaggio di email (RFC 822):
start-line
pu essere o una request-line o una status-line

Se il server od il client interrompe la connessione, allora la visione degli stati di server e client possono essere inconsistenti e deve essere riconciliata
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 23

HEADER (contiene informazioni sullhost e sul corpo del messaggio)


Content-length Content-type

<Linea Vuota> BODY (pu mancare)


Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 24

Formato generale di request

Esempio di request
request line (GET, POST, HEAD, PUT) GET /TSW/esami.html HTTP/1.0 User-agent: Mozilla/4.0 header Accept: text/html, image/gif,image/jpeg lines Accept-language:it (ulteriore carriage return, line feed)

Message Body

carriage return + line feed indicano la fine dellintestazione, pu iniziare il corpo (body) del messaggio parte opzionale
25 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 26

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Esempio di request N7 su Win2000


porta non standard

ecco cosa il server caprera riceve


GET /index.html HTTP/1.1 Host: caprera.dia.unisa.it:12345 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 (BDP) Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8, video/x-mng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1 Accept-Language: en-us, en;q=0.50 Accept-Encoding: gzip, deflate, compress;q=0.9 Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66 Keep-Alive: 300 Connection: keep-alive

...
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 27 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 28

HTTP request line

spazio

Metodi HTTP
!

Un metodo HTTP pu essere


Sicuro: non genera cambiamenti allo stato di una risorsa Idempotente: leffetto sul server di pi richieste identiche lo stesso di quello di una sola richiesta

Request-Line = Method SP Request-URI SP HTTP-Version CRLF


!

Analizzeremo solo:
GET (Richiesta di dati) HEAD (Richiesta al server di header HTTP contenenti informazioni) POST (Invio di dati allURL indicato) PUT (Colloca i dati contenuti nel BODY allURL indicato)

Method

= | | |

OPTIONS HEAD PUT TRACE

| | | |

GET POST DELETE CONNECT


29

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

30

Il metodo GET
!

Il metodo HEAD
! !

il metodo pi utilizzato, si attiva quando


Si segue un link Si scrive un URL nellapposito campo del browser

Simile al GET, ma non viene restituita una risorsa Si usa per ottenere informazioni sulla risorsa

GET sicuro ed idempotente, e pu essere:


assoluto (utilizzo di default, la risorsa viene richiesta senza specificare altro) condizionale (se la risorsa corrisponde ad un criterio indicato negli header If-match, If-range If-modified-since, etc.) parziale (se la risorsa richiesta una sottoparte di una risorsa memorizzata sul server).

HEAD sicuro ed idempotente, e viene usato per verificare:


la validit di un URI: la risorsa esiste e non di lunghezza zero, laccessibilit di un URI: per accedere alla risorsa presso il server non sono richieste procedure di autenticazione la coerenza di cache di un URI: la risorsa non stata modificata nel frattempo, non ha cambiato lunghezza, valore hash o data di modifica

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

31

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

32

GET ed HEAD
! GET

Il metodo POST 1
! POST,

e HEAD devono essere implementati dal server altri metodi sono facoltativi

! Gli

pur essendo una request, contiene un message body ! POST serve per inviare una risorsa a un URL senza crearne una nuova ! POST non sicuro n idempotente ! Ad esempio, si utilizza per:
Inviare un messaggio a un indirizzo di posta elettronica Inviare il contenuto di un modulo ad un programma che risiede sul server
33 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 34

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Il metodo POST 2
! Non

Ancora su GET e POST


!

effettua necessariamente lettura di informazioni dal server

una

Anche GET pu essere utilizzato per inviare dati al server o per modificare/creare nuove risorse
La risorsa invocata con GET un programma che
modifica se stesso estrae dati da una form HTML e crea un nuovo file HTML che li contiene

! Il

server, in risposta ad una POST, pu anche inviare una response con un message body

Dato che ci non era intenzionale da parte dellutente, allora GET considerato sicuro
! !

POST invia i dati nel corpo del messaggio di richiesta GET invia i dati come parte dellURL
Tecnologie di Sviluppo per il WEB 36

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

35

Prof. Carlo Blundo

Esempio

Cosa riceve il server con POST


POST /cgi-bin/registra.cgi HTTP/1.1
Host: caprera.dia.unisa.it:12345 [. . .] Connection: keep-alive

Referer: http://caprera.dia.unisa.it/LASD/prenota.html
Content-Type: multipart/form-data; boundary= ---------------------------41184676334 Content-Length: 438
-----------------------------41184676334 Content-Disposition: form-data; name="nome" carlo -----------------------------41184676334 Content-Disposition: form-data; name="cognome" blundo -----------------------------41184676334 Content-Disposition: form-data; name="matricola" 53/7777 -----------------------------41184676334

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

37

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

38

Cosa riceve il server con GET


GET /cgi-bin/registra.cgi?nome=carlo&cognome=blundo& matricola=53%2F7777&seduta=2 HTTP/1.1
Host: caprera.dia.unisa.it:12345 [...] Keep-Alive: 300 Connection: keep-alive

Il metodo PUT
!

Il metodo PUT serve per trasmettere delle informazioni dal client al server, creando o sostituendo la risorsa specificata. In generale, largomento del metodo PUT la risorsa che ci si aspetta di ottenere facendo un GET in seguito con lo stesso nome. PUT idempotente ma non sicuro, e comunque non offre nessuna garanzia di controllo degli accessi o locking.
Tecnologie di Sviluppo per il WEB 40

Referer: http://caprera.dia.unisa.it/LASD/prenota.html

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

39

Prof. Carlo Blundo

Formato generale di response


version sp status-code sp reason-phrase cr header field name : value cr lf header field name : value cr lf cr lf body lf

Esempio di response
HTTP/1.1 200 OK Date: Wed, 12 Feb 2003 12:43:01 GMT Server: Apache/1.3.22 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 16 Oct 2002 09:47:40 GMT ETag: "dbca-2-3dad35bc" Accept-Ranges: bytes Content-Length: 2 Connection: close Content-Type: text/html <HTML> <BODY> Ciao mondo! </BODY></HTML>
41 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 42

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

Status Code 1
! Lo

Status Code 2
3xx: Redirection
Il server ha ricevuto e capito la richiesta, ma sono necessarie altre azioni da parte del client per portare a termine la richiesta.

status code un numero di tre cifre, di cui la prima indica la classe della risposta, e le altre due la risposta specifica. Esistono le seguenti classi:
1xx: Informational
Una risposta temporanea alla richiesta, durante il suo svolgimento.

4xx: Client error


La richiesta del client non pu essere soddisfatta per un errore da parte del client (errore sintattico o richiesta non autorizzata).

2xx: Successful
Il server ha ricevuto, capito e accettato la richiesta.
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 43

5xx: Server error


La richiesta pu anche essere corretta, ma il server non in grado di soddisfare la richiesta per un problema interno (suo o di applicazioni CGI).
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 44

Esempi di status code


100 200 201 301 400 401 403 404 500 501 Continue (se il client non ha ancora mandato il body) OK (GET con successo) Created (PUT con successo) Moved permanently (URL non valida, il server conosce la nuova posizione Bad request (errore sintattico nella richiesta) Unauthorized (manca lautorizzazione) Forbidden (richiesta non autorizzabile) Not found (URL errato) Internal server error (tipicamente un CGI mal fatto) Not implemented (metodo non conosciuto dal server)

I cookie 1
!

HTTP stateless
Il server non mantiene alcuna informazione sulle vecchie richieste del client

Un cookie una stringa scambiata tra il server ed il client


Il client mantiene con un cookie lo stato di precedenti connessioni, e lo invia al server di pertinenza ogni volta che richiede un documento. Non previsto in HTTP, ma unestensione di Netscape, proposta nellRFC 2109 Per questioni di sicurezza/privacy si possono spedire cookies solo al server che li ha settati

Status code reason-phrase


Codice di stato motivazione
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 45

Prof. Carlo Blundo

Tecnologie di Sviluppo per il WEB

46

I cookie 2
!I

cookies usano due extension-header1, uno per la risposta, ed uno per richieste successive:
Set-Cookie: header della risposta, il client pu memorizzare il valore del cookie indicato e rispedirlo alla prossima richiesta. Cookie: header della richiesta contenente il valore del cookie.
Il client decide se spedirlo sulla base del nome del documento, dellindirizzo del server, e dellet del cookie
1

Interazione con cookie


client
request

server HTTP

applicazione CGI/PHP/JSP/
request

genera il cookie
+ Risposta
Set-Coo kie

Output +

cookie

request + Coo

kie

request + Co
Output

okie

analizza il cookie
Risposta

Non fanno parte degli header standard HTTP, ma che possono essere aggiunti ad HTTP
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 47 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 48

Potrebbero piacerti anche