2015-12-27 18 views
13

Liegt es daran, dass die Antworten in der Reihenfolge der Anforderung an den Client gesendet werden müssen, die das Problem der Kopfzeilenblockierung in HTTP 1.1 verursachen?Was ist der Unterschied zwischen HTTP/1.1-Pipelining und HTTP/2-Multiplexing?

Wenn jede Anfrage genau die gleiche Zeit benötigt, dann wird es keine Kopfzeilenblockierung und HTTP 1.1-Pipelining geben und würde dieselbe wie die von HTTP/2-Multiplexing durchführen?

(lassen Sie uns sagen, es gibt keine Anforderung Priorität in HTTP/2-Anfragen und ignorieren andere Änderungen von HTTP/2 wie Header-Kompression, binär, etc.)

Antwort

14

HTTP/1.1 Pipelining erfordert noch die Anfragen zurückgegeben werden vollständig, in der Reihenfolge angefordert.

HTTP/2 ermöglicht es, dass die Anfragenantworten in Blöcke aufgeteilt und in einer vermischten Weise zurückgegeben werden, wodurch Blockierungen der Kopfzeile vermieden werden.

Darüber hinaus hat sich das HTTP/1.1-Pipelining nie wirklich durchgesetzt und die Browser- und Serverunterstützung ist begrenzt (siehe: https://en.m.wikipedia.org/wiki/HTTP_pipelining).

Aber ja, in der Theorie sind sie ähnlich und geben daher ähnliche Leistungsvorteile. HTTP/2 ist nur eine bessere, umfassendere, stärker unterstützte Version von diesem - zusammen mit anderen Vorteilen, die Sie bemerkt haben.

+0

Erklärt alle Fakten. Danke :) – prasun

+0

Und ich möchte hinzufügen, dass HTTP-Pipelining von den meisten Servern nicht unterstützt wird, weil es schwer zu implementieren ist, und es gibt einige sehr riskante Sicherheitsprobleme. Der HTTP-Schmuggel kann beispielsweise dadurch erfolgen, dass der Content-Length-Header der Anforderung manipuliert wird und mehrere Anforderungen in einer einzigen Anfrage platziert werden. Der Proxy-Server verhält sich dann falsch, weil er die Antwort eines anderen Benutzers zurückgibt (weil die Anforderungsreihenfolge beibehalten werden soll) und Sie haben nur 2 Anfragen in einer einzigen Anfrage). Dieser Angriff erfordert ein gutes Timing, aber natürlich nicht unmöglich. – sotn

24

HTTP/1.1 ohne Pipelining: Jede HTTP-Anfrage über die TCP-Verbindung muss beantwortet werden, bevor die nächste Anfrage gestellt werden kann.

HTTP/1.1 mit Pipelining: Jede HTTP-Anfrage über die TCP-Verbindung kann sofort erfolgen, ohne auf die Antwort der vorherigen Anfrage zu warten. Die Antworten werden in der gleichen Reihenfolge angezeigt.

HTTP/2-Multiplexing: Jede HTTP-Anforderung über die TCP-Verbindung kann sofort erfolgen, ohne dass auf die vorherige Antwort gewartet werden muss. Die Antworten können in beliebiger Reihenfolge zurückgegeben werden.

+2

Dies ist sehr nützlich, wenn Sie über HTTP v2 lesen und versuchen, den Unterschied zwischen Multiplexing und Pipelining zu verstehen. Danke, Mann! – Combine

+0

Super, froh, dass es dir geholfen hat! Es hat mir auch geholfen! –

Verwandte Themen