2015-12-27 8 views
13

HTTP 1.1でヘッドブロッキング問題の原因となるリクエストの順番でクライアントに応答する必要があるためですか?HTTP/1.1パイプライニングとHTTP/2多重化の違いは何ですか?

各要求に正確に等しい時間がかかる場合、行ブロッキングとHTTP 1.1パイプライン処理は行われず、HTTP/2多重化と同じように動作します。

答えて

14

がHTTP/1.1パイプラインがまだ要求を必要と返される(のは、HTTP/2要求には、要求の優先順位が存在しないと言う及び/ 2は、ヘッダ圧縮、バイナリ、等のHTTPの他の変化を無視してみましょう)要求された順序で完全に。

HTTP/2では、リクエストの応答をチャンクに分割し、混乱した形で返信することで、行頭ブロックを回避します。

さらに、HTTP/1.1パイプライニングは実際には何も起こりませんでした。ブラウザとサーバーのサポートは限定されています(https://en.m.wikipedia.org/wiki/HTTP_pipelining参照)。

しかし、理論的には、これらは類似しているため、同様のパフォーマンス上の利点があります。 HTTP/2はこれまでより優れた、より完全な機能を備えた、よりサポートされたバージョンです。

+0

すべての事実を説明します。ありがとう:) – prasun

+0

それを実装するのが難しく、非常に危険なセキュリティ上の問題があるので、HTTPパイプライニングはほとんどのサーバーでサポートされていないと付け加えたいと思います。たとえば、HTTPの密輸は、要求のContent-Lengthヘッダーを改ざんし、複数の要求を1つの要求に入れ、要求順序が維持されるため、別のユーザーの応答を返すことで、プロキシー・サーバーを誤って動作させることによって行うことができます1回のリクエストで2つのリクエストを入力するだけです)。この攻撃には良いタイミングが必要ですが、もちろん不可能ではありません。 – sotn

24

パイプラインなしの場合: TCP接続による各HTTP要求は、次の要求が行われる前に応答する必要があります。

パイプライン化を使用した場合: TCP接続による各HTTP要求は、直前の要求の応答が返されるのを待たずにすぐに行われます。応答は同じ順序で戻ってくるでしょう。

HTTP/2多重化: TCP接続を介した各HTTP要求は、直前の応答が戻ってくるのを待たずに直ちに行われます。応答は任意の順序で戻ってくるかもしれません。

+2

これは、HTTP v2について読んで、多重化とパイプライン化の違いを理解しようとするときに非常に便利です。ありがとう! – Combine

+0

すごく、あなたを助けてくれてうれしい!それも私を助けた! –

関連する問題