http

il protocollo http

Hyper Text Transfer Protocol è un protocollo nato per la trasmissione su internet di ipertesti ma utilizzato oggi per trasferire qualsiasi tipo di file. È un protocollo standard definito inizialmente dall'RFC 1945 nella versione 1 e nell'RFC 9112 per la versione 1.1, oggi molti applicativi usano HTTP 2 definito in RFC 9113.

Il protocollo è stato inizialmente sviluppato presso il CERN di Ginevra da Tim Berners-Lee nel 1989. Attualmente W3C e IETF si occupano della coordinazione dello standard reperibile sul sito di HTTP Working Group.

Visto come è stato descritto il protocollo HTTP in quale livello dello stack TCP/IP viene utilizzato?

Accesso alla rete (o host)no, qui si trovano protocolli come quelli di Ethernet Internetno, questo è il livello che si occupa del routing Trasportono, questo è il livello che contiene TCP e UDP, si occupa del trasporto di qualsiasi tipo di dato Applicazionegiusto, server web e browser (i client) sono applicazioni

La versione 2.0 di HTTP apporta una serie di aggiornamenti riguardanti l'efficienza del sistema e anche per questo trasmette i dati in formato binario, non modifica sostanzialmente la modalità di interazione definite dalla versione 1.1 che è invece in formato testo quindi più facilmente analizzabile. In ogni caso gli strumenti a disposizione oggi permettono di analizzare sia le richieste che le risposte di entrambe le versioni. I concetti che tratteremo sono applicabili sia alla versione 1.1 che alla 2 del protocollo.

HTTP è un protocollo di comunicazione stateless che lavora al livello applicazione il cui scopo è di agire su risorse disponibili in rete.

Andando in ordine la prima parola da capire è stateless: ogni coppia richiesta-risposta di HTTP fa storia a se; una successiva richiesta non va trattata tenendo conto della precedente secondo il protocollo.

HTTP permette di eseguire diverse azioni sulle risorse, non solo leggerle ma anche caricarle o cancellarle ad esempio. Cosa è una risorsa? Per quando ci riguarda tratteremo come risorsa qualsiasi cosa identificabile tramite una URL (come di consuetudine le cose tra parentesi quadre sono opzionali): protocollo://host[:porta][</percorso>][?querystring][#fragment]

protocollo
il protocollo, potrebbe ad esempio essere http o https
host
il nome completo di dominio dell'host a cui ci si vuol collegare
porta
la porta di TCP a cui sappiamo di trovare il server in ascolto (usualmente 80 per i server http e 443 per https)
percorso
è il percorso della risorsa che vogliamo indicare all'interno del server
querystring
sono dei parametri che vengono passati al server che potrebbe usarli come dati di input di uno script, scritti nella forma nome=valore e separati da &
fragment
serve al browser per eventualmente saltare ad una parte specifica della pagina

Magari è più chiaro vedendo alcuni esempi:


# tutte le parti
http://www.pluto.com:80/animali/gatto.html?tipo=persiano#coda
# minimo indispensabile
http://ricerca.italia.it
# server in ascolto su una porta non standard e script php a cui passo nome e cognome dell'utente
https://server.azienza.com:8881/script.php?nome=Mario&cognome=Rossi

Nel caso la comunicazione debba avvenire in modalità riservata (la norma oggi) il protocollo HTTP normalmente si appoggia a TLS: in questo caso il protocollo si chiama HTTPS.