HTTP Tutorial
Iniziare con HTTP
Ricerca…
Osservazioni
Hypertext Transfer Protocol (HTTP) utilizza un modello client-richiesta / server-risposta. HTTP è un protocollo stateless, il che significa che non richiede al server di conservare informazioni o stato su ciascun utente per la durata di più richieste. Tuttavia, per motivi di prestazioni e per evitare problemi di latenza di connessione del TCP, possono essere utilizzate tecniche come le connessioni Persistente, Parallela o Pipelined.
Versioni
Versione | Gli appunti) | Data di rilascio stimata |
---|---|---|
HTTP / 0.9 | "Come implementato" | 1991-01-01 |
HTTP / 1.0 | Prima versione di HTTP / 1.0, ultima versione che non è stata trasformata in una RFC | 1992/01/01 |
HTTP / 1.0 r1 | Prima RFC ufficiale per HTTP | 1996/05/01 |
HTTP / 1.1 | Miglioramenti nella gestione delle connessioni, supporto per gli host virtuali basati sui nomi | 1997-01-01 |
HTTP / 1.1 r1 | Eliminazione dell'uso di parole chiave disambigui, possibili problemi con l'impostazione dei messaggi | 1999/06/01 |
HTTP / 1.1 r2 | Revisione importante | 2014/06/01 |
HTTP / 2 | Prima specifica per HTTP / 2 | 2015/05/01 |
Richieste e risposte HTTP
HTTP descrive come un client HTTP, come un browser Web, invia una richiesta HTTP tramite una rete a un server HTTP, che quindi invia una risposta HTTP al client.
La richiesta HTTP è in genere una richiesta di una risorsa online, ad esempio una pagina Web o un'immagine, ma può anche includere informazioni aggiuntive, come i dati inseriti in un modulo. La risposta HTTP è in genere una rappresentazione di una risorsa online, ad esempio una pagina Web o un'immagine.
HTTP / 1.0
HTTP / 1.0 è stato descritto in RFC 1945 .
HTTP / 1.0 non ha alcune funzionalità che sono oggi di fatto richieste sul Web, come l'intestazione Host
per gli host virtuali.
Tuttavia, i client e i server HTTP a volte dichiarano di utilizzare HTTP / 1.0 se hanno un'implementazione incompleta del protocollo HTTP / 1.1 (ad esempio senza codifica di trasferimento chunk o pipelining), o la compatibilità è considerata più importante delle prestazioni (ad esempio quando si connette al proxy locale server).
GET / HTTP/1.0
User-Agent: example/1
HTTP/1.0 200 OK
Content-Type: text/plain
Hello
HTTP / 1.1
HTTP / 1.1 è stato originariamente specificato nel 1999 in RFC 2616 (protocollo) e RFC 2617 (autenticazione), ma questi documenti sono ormai obsoleti e non dovrebbero essere utilizzati come riferimento:
Non utilizzare RFC2616. Eliminalo dai tuoi dischi rigidi, dai segnalibri e masterizza (o ricicla in modo responsabile) qualsiasi copia stampata.
Le specifiche aggiornate di HTTP / 1.1, che corrispondono al modo in cui oggi viene implementato HTTP, si trovano nelle nuove RFC 723x:
- RFC 7230: Sintassi dei messaggi e routing
- RFC 7231: semantica e contenuto
- RFC 7232: richieste condizionali
- RFC 7233: richieste di intervallo
- RFC 7234: memorizzazione nella cache
- RFC 7235: autenticazione
HTTP / 1.1 aggiunto, tra le altre caratteristiche:
- codifica di trasferimento chunked, che consente ai server di inviare risposte affidabili di dimensioni sconosciute,
- connessioni TCP / IP persistenti (che erano estensioni non standard in HTTP / 1.0),
- richieste di intervallo utilizzate per riprendere i download,
- controllo della cache.
HTTP / 1.1 ha provato a introdurre il pipelining, che ha consentito ai client HTTP di ridurre la latenza richiesta-risposta inviando più richieste contemporaneamente senza attendere le risposte. Sfortunatamente, questa caratteristica non è mai stata correttamente implementata in alcuni proxy, causando la perdita o l'ordine delle connessioni in pipeline.
GET / HTTP/1.0
User-Agent: example/1
Host: example.com
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 6
Connection: close
Hello
HTTP / 2
HTTP / 2 ( RFC 7540 ) ha cambiato il formato on-the-wire di HTTP da una semplice intestazione di richiesta e risposta basata su testo al formato di dati binari inviato in frame. HTTP / 2 supporta la compressione delle intestazioni ( HPACK ).
Questo ha ridotto il sovraccarico delle richieste e ha consentito la ricezione di più risposte contemporaneamente su una singola connessione TCP / IP.
Nonostante i grandi cambiamenti nel formato dei dati, HTTP / 2 utilizza ancora le intestazioni HTTP e le richieste e le risposte possono essere accuratamente tradotte tra HTTP / 1.1 e 2.
HTTP / 0.9
La prima versione di HTTP che è stata creata è 0.9, spesso denominata " HTTP come implementata ". Una descrizione comune di 0.9 è "una sottosezione del protocollo HTTP completo [cioè 1.0]." Tuttavia, questo non riesce a illustrare la disparità di capacità tra 0.9 e 1.0.
Né richieste né risposte in 0.9 feature headers. Le richieste consistono in una singola riga GET
terminata da CRLF, seguita da uno spazio, seguito dall'URL della risorsa richiesta. Le risposte dovrebbero essere un singolo documento HTML. La fine di detto documento è contrassegnata dalla caduta della connessione lato server. Non ci sono strutture per indicare il successo o il fallimento di un'operazione. L'unica proprietà interattiva è la stringa di ricerca che è strettamente legata al tag HTML <isindex>
.
L'utilizzo di HTTP / 0.9 è oggi eccezionalmente raro. Occasionalmente viene visto su sistemi embedded come alternativa a tftp .