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

I client e i server HTTP inviano richieste e risposte HTTP, rispettivamente

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.

- Mark Nottingham, presidente del WG HTTP

Le specifiche aggiornate di HTTP / 1.1, che corrispondono al modo in cui oggi viene implementato HTTP, si trovano nelle nuove RFC 723x:

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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow