Domanda

Qualcuno potrebbe darmi una breve panoramica delle differenze tra HTTP 1.0 e HTTP 1.1? Ho trascorso un po 'di tempo con entrambi gli RFC, ma non sono stato in grado di tirare fuori molta differenza tra loro. Wikipedia dice questo:

  

HTTP / 1.1 (1997-1999)

     

Versione corrente; connessioni persistenti abilitate per impostazione predefinita e funziona bene con i proxy. Supporta inoltre il pipelining delle richieste, consentendo di inviare più richieste contemporaneamente, consentendo al server di prepararsi per il carico di lavoro e potenzialmente trasferire le risorse richieste più rapidamente al client.

Ma questo non significa molto per me. Mi rendo conto che questo è un argomento un po 'complicato, quindi non mi aspetto una risposta completa, ma qualcuno può darmi una breve panoramica delle differenze a un livello leggermente inferiore?
Con questo intendo che sto cercando le informazioni che avrei bisogno di sapere per implementare un server HTTP o un'applicazione. Sono principalmente alla ricerca di una spinta nella giusta direzione in modo da poterlo capire da solo.

È stato utile?

Soluzione

Supporto proxy e campo Host:

HTTP 1.1 ha un'intestazione host richiesta dalle specifiche.

HTTP 1.0 non richiede ufficialmente un'intestazione Host, ma non fa male aggiungerne una e molte applicazioni (proxy) prevedono di vedere l'intestazione Host indipendentemente dalla versione del protocollo.

Esempio:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

Questa intestazione è utile perché ti consente di instradare un messaggio attraverso i server proxy e anche perché il tuo server web è in grado di distinguere tra diversi siti sullo stesso server.

Quindi questo significa che se hai blahblahlbah.com e helohelohelo.com puntano entrambi allo stesso IP. Il server Web può utilizzare il campo Host per distinguere quale sito desidera la macchina client.

Connessioni permanenti:

HTTP 1.1 ti consente anche di avere connessioni permanenti, il che significa che puoi avere più di una richiesta / risposta sulla stessa connessione HTTP.

In HTTP 1.0 è stato necessario aprire una nuova connessione per ogni coppia richiesta / risposta. E dopo ogni risposta la connessione sarebbe chiusa. Ciò ha comportato alcuni grossi problemi di efficienza a causa di TCP Slow Start .

Metodo OPTIONS:

HTTP / 1.1 introduce il metodo OPTIONS. Un client HTTP può utilizzare questo metodo per determinare le capacità del server HTTP. Viene utilizzato principalmente per la condivisione delle risorse tra le origini nelle applicazioni Web.

Caching:

HTTP 1.0 ha supportato la memorizzazione nella cache tramite l'intestazione: If-Modified-Since.

HTTP 1.1 si espande molto sul supporto di memorizzazione nella cache utilizzando qualcosa chiamato "tag entità". Se 2 risorse sono uguali, avranno gli stessi tag entità.

HTTP 1.1 aggiunge anche le intestazioni condizionali If-Unmodified-Since, If-Match, If-None-Match.

Ci sono anche ulteriori aggiunte relative alla memorizzazione nella cache come l'intestazione Cache-Control.

100 Continua stato:

Esiste un nuovo codice di ritorno in HTTP / 1.1 100 Continua. Questo per impedire a un client di inviare una richiesta di grandi dimensioni quando quel client non è nemmeno sicuro se il server può elaborare la richiesta o è autorizzato a elaborare la richiesta. In questo caso il client invia solo le intestazioni e il server dirà al client 100 Continua, vai avanti con il corpo.

Molto altro:

  • Autenticazione digest e autenticazione proxy
  • Nuovi codici di stato extra
  • Codifica di trasferimento Chunked
  • Intestazione di connessione
  • Supporto di compressione avanzato
  • Molto di più.

Altri suggerimenti

& # 61550; HTTP 1.0 (1994)

  • È ancora in uso
  • Può essere utilizzato da un client che non può gestire chunked (o compresse) risposte del server

& # 61550; HTTP 1.1 (1996-2015)

  • Formalizza molte estensioni alla versione 1.0
  • Supporta connessioni persistenti e pipeline
  • Supporta trasferimenti chunked, compressione / decompressione
  • Supporta l'hosting virtuale (un server con un singolo indirizzo IP che ospita più domini)
  • Supporta più lingue
  • Supporta trasferimenti a intervallo di byte; utile per riprendere i dati interrotti trasferimenti

HTTP 1.1 è un miglioramento di HTTP 1.0. Di seguito sono elencati i quattro importanti miglioramenti:

  1. Uso efficiente degli indirizzi IP, consentendo di avere più domini servito da un unico indirizzo IP.

  2. Risposta più rapida, consentendo a un browser Web di inviarne più richieste su una singola connessione permanente.

  3. Risposta più rapida per pagine generate dinamicamente, con il supporto di codifica chunked, che consente di inviare una risposta prima della sua la lunghezza totale è nota.
  4. Risposta più rapida e grande risparmio di larghezza di banda, aggiungendo cache supporto.

Per applicazioni banali (ad esempio il recupero sporadico di un valore di temperatura da un termometro abilitato al web) HTTP 1.0 va bene sia per un client che per un server. È possibile scrivere un client o un server HTTP 1.0 basato su socket bare-bones in circa 20 righe di codice.

Per scenari più complicati HTTP 1.1 è la strada da percorrere. Aspettati un aumento da 3 a 5 volte delle dimensioni del codice per gestire le complessità del protocollo HTTP 1.1 più complesso. La complessità arriva principalmente, perché in HTTP 1.1 dovrai creare, analizzare e rispondere a varie intestazioni. È possibile proteggere l'applicazione da questa complessità facendo in modo che un client utilizzi una libreria HTTP o che un server utilizzi un server di applicazioni Web.

Un problema di compatibilità chiave è il supporto per connessioni persistenti . Di recente ho lavorato su un server che "supportava" HTTP / 1.1, ma non è stato possibile chiudere la connessione quando un client ha inviato una richiesta HTTP / 1.0. Quando si scrive un server che supporta HTTP / 1.1, assicurarsi che funzioni anche con client solo HTTP / 1.0.

Una delle prime differenze che posso ricordare dalla cima della mia testa sono più domini in esecuzione nello stesso server, recupero parziale delle risorse, questo ti permette di recuperare e velocizzare il download di una risorsa (è ciò che quasi ogni acceleratore di download lo fa).

Se vuoi sviluppare un'applicazione come un sito web o simile, non devi preoccuparti troppo delle differenze ma dovresti conoscere la differenza tra OTTIENI e almeno i verbi POST .

Ora se vuoi sviluppare un browser, sì, dovrai conoscere il protocollo completo e se stai cercando di sviluppare un server HTTP.

Se sei interessato solo a conoscere il protocollo HTTP, ti consiglio di iniziare con HTTP / 1.1 invece di 1.0.

HTTP 1.1 è l'ultima versione di Hypertext Transfer Protocol, il protocollo di applicazione World Wide Web che gira in cima alla suite di protocolli TCP / IP di Internet. rispetto a HTTP 1.0, HTTP 1.1 fornisce una consegna più rapida delle pagine Web rispetto all'HTTP originale e riduce il traffico Web.

Esempio di traffico Web: ad esempio, se si accede a un server. Allo stesso tempo, così tanti utenti accedono al server per i dati, quindi c'è la possibilità di sospendere il server. Questo è il traffico Web.

Rispetto a 1.0, 1.1 riduce il traffico web

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top