2015-12-27 20 views
13

È perché richiede che le risposte vengano inoltrate al client nell'ordine della richiesta che causa il problema del blocco della linea di testa in HTTP 1.1?Qual è la differenza tra pipeline HTTP/1.1 e multiplexing HTTP/2?

Se ogni richiesta richiede esattamente la stessa quantità di tempo, allora non ci sarà il blocco della linea di testa e il pipeline HTTP 1.1 e si comporterebbe come quello del multiplexaggio HTTP/2?

(diciamo non esiste priorità richiesta HTTP/2 richieste e ignorare altre variazioni di HTTP/2 come la compressione intestazione, binario, ecc)

risposta

14

HTTP/1.1 pipelining richiede ancora le richieste da restituire per intero, nell'ordine richiesto.

HTTP/2 consente di suddividere le risposte delle richieste in blocchi e di restituirle in modo combinato, evitando così il blocco della linea di testa.

Inoltre, il pipelining HTTP/1.1 non è mai realmente decollato e il supporto di browser e server è limitato (vedere: https://en.m.wikipedia.org/wiki/HTTP_pipelining).

Ma sì, in teoria, sono simili e quindi offrono prestazioni simili. HTTP/2 è solo una versione migliore, più completa e più supportata di questo, insieme ad altri vantaggi che hai notato.

+0

Spiega tutti i fatti. Grazie :) – prasun

+0

E voglio aggiungere che il pipelining HTTP non è supportato dalla maggior parte dei server perché è difficile da implementare e ci sono alcuni problemi di sicurezza molto rischiosi. Ad esempio, il contrabbando di http può essere fatto manomettendo l'intestazione Content-Length della richiesta e inserendo più richieste in una singola richiesta e facendo in modo che il server proxy si comporti in modo errato facendogli restituire la risposta di un altro utente (perché l'ordine di richiesta deve essere mantenuto e hai appena messo 2 richieste in una singola richiesta). Questo attacco richiede comunque un buon tempismo ma non impossibile, naturalmente .. comunque – sotn

24

HTTP/1.1 senza pipelining: Ogni richiesta HTTP tramite la connessione TCP deve essere risposto a prima che la richiesta successiva può essere effettuata.

HTTP/1.1 con pipelining: Ogni richiesta HTTP tramite la connessione TCP può essere effettuata immediatamente senza attendere la risposta della richiesta precedente. Le risposte torneranno nello stesso ordine.

multiplexing HTTP/2: Ogni richiesta HTTP sulla connessione TCP può essere effettuata immediatamente senza attendere il ritorno della risposta precedente. Le risposte possono tornare in qualsiasi ordine.

+2

Questo è molto utile quando si legge su HTTP v2 e si tenta di capire la differenza tra multiplexing e pipelining. Grazie uomo! – Combine

+0

Fantastico, felice che ti abbia aiutato! Mi ha aiutato anche io! –

Problemi correlati