Il protocollo HTTP (HyperText Transfer Protocol) è utilizzato per la trasmissione di informazioni sul web.
La prima versione di questo protocollo è stata implementata nel 1991.
Il funzionamento di HTTP è basato su un meccanismo di richiesta/risposta, quindi di tipo client/server.
Infatti il client che corrisponde al browser effettua una richiesta al server per ottenere un determinato contenuto (pagina html, immagine, CSS, ecc).
In definitiva quindi ci sono due messaggi HTTP, i messaggi di richiesta e quelli di risposta.
Quando la richiesta viene soddisfatta le porte in genere vengono chiuse, cosa che non avviene con altri protocolli come ad esempio l’FTP.
Per porta (socket) si intende il punto di accesso ad un server da parte di uno o più client. Chiaramente non è una porta fisica ma logica, virtuale.
Le porte sono indicate con dei numeri a 16 bit, dunque ci sono 2^16=65536 porte, cioè da 0 a 65.535.
Ogni numero identifica una determinata applicazione, infatti in questo modo si garantisce che i dati vengano indirizzati al processo corretto.
Nel caso del protocollo HTTP la porta di riferimento è la 80. Quindi un server web (come ad esempio Apache), attende la richiesta di contenuti su questa porta.
HTTP è un protocollo stateless, cioè senza memoria, questo per poter andare da un server all’altro velocemente attraverso i collegamenti ipertestuali.
Infatti per ogni nuova richiesta effettua una nuova connessione al server web, che come dicevamo prima, viene subito chiusa.
Protocollo HTTP e metodi
Abbiamo detto che il client invia delle richieste al server e lo fa utilizzando dei metodi come primo parametro. I metodi sono GET, HEAD, POST, introdotti già dalla prima versione HTTP 1.0. Successivamente sono stati introdotti i metodi PUT e DELETE. Infine con la versione attuale HTTP 1.1 sono stati introdotti i metodi OPTIONS, TRACE, CONNECT.
I browser moderni supportano principalmente i metodi GET e POST. Elenchiamo di seguito alcuni metodi tra quelli citati.
Metodo GET
Il metodo GET è quello più importante e richiede una risorsa ad un server. Questo è il metodo che si attiva quando specifichiamo un url in un browser web o quando facciamo click su un collegamento ipertestuale di una pagina html. Con questo metodo non si possono cancellare i dati su un server o modificarli.
Metodo HEAD
Questo metodo è simile a GET, ma il server risponde inviando solo gli header relativi, senza il corpo. Quindi il metodo HEAD non carica la risorsa come file, immagini, ecc.
È un metodo usato per la diagnostica, ad esempio per verificare la validità di un URI (Uniform Resource Identifier), cioè per vedere se la risorsa richiesta esiste. Oppure per verificare l’accessibilità di un URI, ad esempio la risorsa esiste e non ha bisogno di autenticazione. Infine può essere utilizzato per vedere se la risorsa, nel frattempo, è stata modificata.
Metodo POST
Questo metodo serve per trasmettere informazioni dal client al server, infatti viene utilizzato ad esempio per inviare dati di un form al server web.
Metodo DELETE
Questo metodo elimina la risorsa identificata dall’URL specificato.
Metodo Put
Metodo utilizzato per trasmettere delle informazioni dal client al server, sostituendo la risorsa specificata. Questo metodo serve ad esempio per fare l’upload di un file su un server web, creando o sostituendo il file esistente.
Risposta ad un richiesta
Il server risponde con un codice di stato.
Di seguito alcuni esempi di codici di stato:
100 Continue – La richiesta effettuata dal client è parzialmente compilata, cioè ad esempio ancora non ha trasmesso il corpo della pagina.
200 Ok – Richiesta eseguita con successo, cioè tutto è stato eseguito nel modo giusto.
204 No content – Richiesta eseguita con successo ma senza restituire un contenuto.
301 Moved permanently – La risorsa esiste ma non è identificata correttamente, è stata spostata permanentemente.
400 Bad Request – Richiesta errata, cioè la richiesta non è comprensibile al server web.
401 Unauthorized – Cioè la richiesta non è autorizzata in quanto occorre autenticarsi.
404 not found – Risorsa non esistente.
500 Internal Server Error – Errore generico del server.
Quindi i codici di stato che iniziano con:
– 1 Indicano dei messaggi informativi.
– 2 Indicano successo, cioè il server ha accettato la richiesta del client ed è stata eseguita correttamente.
– 3 Indicano che la risorsa è stata spostata (ridirezione).
– 4 Indicano che c’è un errore nel client.
– 5 Indicano che c’è un errore nel server.
Un sito dove testare alcuni codici di stato: https://httpstatus.io/
HTTPS
Per HTTPS (HyperText Transfer Protocol Secure) si intende un protocollo per la comunicazione sicura, in quanto i dati sono criptati. Ciò è un requisito importante soprattutto nei siti di e-commerce, infatti i dati degli utenti come ad esempio i numeri della carta di credito o altre forme di pagamento, sono crittografati. In questo modo i malintenzionati non possono accedere facilmente a questi dati.
HTTPS utilizza dunque il protocollo HTTP + il protocollo TLS (Transport Layer Security), versione più aggiornata e sicura del precedente SSL.
La porta utilizzata è la 443. Quindi ad esempio per andare sul sito https://www.codingcreativo.it il vostro browser web ha contattato il server web sulla porta 443.
Alcuni link utili
2 – Reti Pan, Lan, Man, Wan e Gan
4 – Tecnologia Wi-Fi
5 – Tecnologia WiMAX
7 – Hub e Switch
8 – Bridge e Router
9 – Commutazione di pacchetto e di circuito
10 – Mac Address
11 – Trasmissione via cavo: UTP, FTP e STP