Web e HTTP
Unità 1
1.1 Il mondo di Internet
La nascita di Internet viene spesso associata all’esplosione di una supernova, in quanto
risultata improvvisa e rapida, dovuta alla tecnologia del silicio sempre più simile a quella dei
nostri giorni (piccola, veloce ed economica) e ad Internet che ha permesso lo scambio di
informazioni senza barriere: dati che sono raccolti e transitano (quasi) istantaneamente per
far funzionare i nostri software, tutto ciò ha portato ha enormi innovazioni in vari ambiti; però
anche a nuove forme di criminalità.
Internet ha più di 30 anni, ma quasi 3 miliardi di persone non usano il World Wide Web
1.2 La nascita del Web
Anni ‘80, la diffusione di Internet era limitata a poche persone: scienziati, ricercatori e piccoli
gruppi di appassionati sparsi per il globo, questo era dovuto alla complessità di accedere a
questi servizi a differenza della posta elettronica, che era più diffusa.
Nel 1990 Tim Berners-Lee propose di utilizzare Internet allo scopo di condividere
informazioni, in modo semplice e rapido, con gli altri ricercatori.
Nasce il World Wide Web (WWW): i testi diventano ipertesti, si creano nuovi standard (tra
cui HTML ) e nascono anche i primi protocolli HTTP, e i primi browser.
1.3 Il livello applicazione
Il livello applicazione del modello TCP/IP si pone come interfaccia tra i software e i livelli
sottostanti che consentono lo scambio di messaggi.
Per quanto riguarda le applicazioni web esse sono basate sul protocollo Hyper Text
Transfer Protocol (HTTP) che stabilisce le regole di comunicazione tra client e server,
questo protocollo si occupa della trasmissione di dati in formato testuale tramite l’utilizzo dei
protocolli TCP/IP il cui compito è di instaurare e mantenere la comunicazione.
Affinché la richiesta del client venga soddisfatta è necessario che un’applicazione (demone)
sul server sia in ascolto della richiesta e che, una volta arrivata, invii al browser le pagine
richieste.
1.4 Funzionamento di un server Web
Il server Web è l’applicazione software in esecuzione su un server e che fornisce i
documenti e contenuti Web richiesti, questo prende il nome di demone HTTP.
1. Il demone è costantemente in attesa (listen) di una richiesta da parte del client
2. All’arrivo di una richiesta individua il file cercato e, se lo trova, lo invia al client.
a. Se arrivano più richieste simultaneamente si creeranno ritardi nei tempi di
risposta
In UNIX/LINUX il demone può effettuare una clonazione di sé stesso, che cercherà il
documento specificato dalla richiesta e inviarlo al client, e tornare in ascolto delle richieste.
1.4.1 Architettura Client-Server
Nello scambio di messaggi possiamo individuare due attori: il client e il server.
Il funzionamento del client è già stato trattato sopra, per quanto riguarda il server si possono
verificare due casi:
- Il file HTML è già presente nella memoria di massa del server: viene recuperato e
inviato al client che ne visualizza il contenuto sul browser.
Il file HTML rappresenta una pagina statica ossia che non cambia mai in
quanto definita dal codice del file sorgente.
- Il file HTML è generato dall’esecuzione di un programma di script eseguito sul
server: viene creato il file HTML e inviato al client
In questo caso si parla di pagina web dinamica in quanto viene generata da
codice in cui possono essere espresse delle condizioni
Solitamente in una pagina dinamica è presente del codice HTML che può variare in base ad
una serie di parametri inviati da altre pagine statiche/dinamiche tramite l’utilizzo di moduli
(form).
1.4.2 Architettura Multi Tier
Una più completa architettura di un’applicazione si configura su 3 livelli:
- Interfaccia utente
- Logica di funzionamento
- Accesso ai dati
Per architettura multi tier s'intende infatti il modo in cui il software è organizzato e suddiviso,
ad ogni livello è assegnato un compito; essi comunicano tra loro nonostante siano
logicamente separati.
1.5 Il protocollo HTTP
HTTP (e HTTPS, la sua versione sicura) è il protocollo che costituisce il fondamento della
comunicazione Web.
Appartiene al livello applicazione e permette la comunicazione tra sistemi distribuiti in un
modello client server.
HTTP definisce le regole di scambio di messaggi, stringhe che seguono una specifica
sintassi, questo avviene tramite l’instaurazione di una connessione attraverso il protocollo
TCP alla porta 80 (o 443 per HTTPS).
1.5.1 URI e URL
● Uniform Resource Identifier (URI) → identifica univocamente una risorsa, qualsiasi
essa sia, tramite uno schema generale
● Uniform Resource Locator (URL) → è un sottoinsieme di URI che identifica l’indirizzo
Web di una risorsa
La stringa di un URL risponde ad una serie di domande, finte che non si fa davvero, il client:
❖ COME? → che protocollo uso?
❖ A CHI? → a quale host fare la richiesta?
❖ CHE COSA? → nome del file richiesto
protocollo://nome_host/nome_file
http://www.ricettario.it/tortamele.htm
La risposta del server contiene una linea di stato con altre informazioni aggiuntive oltre al
messaggio richiesto.
1.5.2 La richiesta del client
L’obiettivo di una richiesta HTTP è quello di accedere ad una risorsa, identificata da un URI,
definendo il modo in cui accedervi.
1. Nella prima riga di un messaggio HTTP sono presenti:
a. il metodo
b. URI
c. versione del protocollo
d. CRLF (invio)
2. Seguono n righe di metainformazioni (nomecampo: valore) + CRLF
3. CRLF
4. Campo body in cui inserire informazioni da mandare al server tramite metodo POST
1.5.3 La risposta del server
Anche il messaggio di risposta HTTP che il server invia consiste in una stringa di testo,
simile a quella della richiesta.
In particolare:
1. Versione HTTP
2. Codice di stato:
○ 200-299 → Successo
○ 300-399 → Ridirezione
○ 400-499 → Errore del client
○ 500-599 → Errore del server
3. Descrizione stato
4. Meta Informazioni
5. Body (se la richiesta è andata a buon fine contiene l’oggetto richiesto)
1.5.5 Il passaggio di parametri
Metodo GET
Usando il metodo GET i dati in formato ASCII vengono inviati aggiungendoli all’URL dopo il
carattere ‘?’
Usando il metodo GET, quindi, i parametri sono passati nell'URL e sono visibili nella barra
degli indirizzi del browser. La stringa ha una lunghezza massima di 2048 caratteri.
II server recupera i valori pervenuti leggendo la QUERY_STRING.
Metodo POST
Con il metodo POST viene passata la stessa stringa relativa alle informazioni ma. a
differenza di quanto accade per GET, la stringa è passata nel body della richiesta
I parametri passati non sono visibili nell’URL.
Inoltre non c'è un limite predefinito alla lunghezza dei dati e sono ammessi persino
valori binari.
1.6 Considerazioni finali
● HTTP non ha memoria in quanto ogni richiesta viene trattata come unica, non esiste
la notazione di sessione.
● HTTP è asimmetrico, ossia solo il client chiama il server, non avviene mai il contrario
● HTTP è nato per trasmettere pagine web.
● HTTP non è sicuro, le informazioni riservate devono essere crittografate viene infatti
usato HTTPS che sfrutta il protocollo Secure Socket Layer (SSL) per la crittazione
dei dati.