HTTP2多重化原理とgRPCパケットキャプチャ解析

1. 背景

HTTP2 の概要に関するこの記事では、多重化テクノロジを使用して複数の HTTP 並列リクエストを伝送する TCP 接続を実装することについて説明しましたが、HTTP2 多重化が gRPC の高パフォーマンスの主な理由であるため、具体的にはどのように実装されるのかについて説明しました。以下で詳しく見てみましょう

2. HTTP2多重化の基本原理

1.フレーム

HTTP2 では、HTTP1 に基づいたバイナリ フレーム層が導入されており、データはより小さなフレームに分割され、エンコードされてバイナリで送信されてから、下位層のプロトコルに送信されます。

フレーム構造

2. 流れ

ストリームは仮想的な概念であり、リクエスト/レスポンス内の同じストリーム識別子を持つすべてのフレームをストリームに抽象化します。

データはストリーム レベルでは順序付けされますが、TCP レベルでは順序付けされません。多重化は、複数の HTTP メッセージを独立したフレームに分解し、それらをインターリーブして送信し (同じ HTTP メッセージが順番に送信され)、ストリーム識別子に基づいて相手側で組み立てることによって実現されます。

3. gRPC ケースのパケット キャプチャ分析

まず、   テスト環境 118.178.255.158 (内部 IP: 172.16.79.224) での初期 gRPC エクスペリエンスでサーバー側をパッケージ化してデプロイし、次にこのマシンでクライアント コードを実行してパケット キャプチャ実験を実施しました。

tcpdump -ieth0 port 50051 -w grpc.pcap

WireShark で開いた後、HTTP2 プロトコル分析を使用するように 50051 ポートを設定する必要があります

完全なデータ パッケージは次のとおりです。

プロトコル プロトコルには、TCP、HTTP2、および GRPC が含まれます。


1. 1 ~ 3 番目のパケット TCP スリーウェイ ハンドシェイク
2. 4 番目のパケット Server->Client フレームタイプは SETTINGS 接続パラメータの設定とフロー制御ウィンドウの管理を行います。
3. 5 番目のパケットはクライアントの応答です
4. 6 番目のパケットはクライアント -> サーバーです フレーム タイプは Magic です 主な機能は、HTTP2 プロトコルの使用を確認し、HTTP2 接続が有効であることを確認することです。
5. 7~8パケット目、サーバー→クライアント、サーバーの応答、SETTINGSフレーム
6. 9~11パケット目、クライアント→サーバー、管理フロー制御ウィンドウ、応答、SETTINGSフレーム。
7. 12 番目のパッケージ、サーバー -> クライアント、応答
8. 13 番目のパッケージ、GRPC クライアント -> サーバー、HEADERS フレームを送信します。HEADERS フレームは HTTP ヘッダー情報の送信に使用され、DATA フレームも送信されます。2 つの部分で構成されますGRPC メッセージと ProtoBuf

9. 14 番目のパッケージ、サーバー -> クライアント、HEADERS フレームと DATA フレームを送信します。

10. 15 回目から 18 回目の TCP ウェーブを 4 回

要約する

1. gRPC は、TCP 3 ウェイ ハンドシェイク後に MAGIC フレームと SETTINGS フレームを送信して、プロトコルと構成を確認します。
2. gRPC は、データ送信プロセス中のスライディング ウィンドウなどのフロー制御戦略を設計します。
3. gRPC の追加情報は HEADERS フレームに基づいて送信され、特定の要求および応答データは DATA フレームに基づいて送信されます。
4. gRPC の要求と応答は、HTTP 状態と gRPC 状態に分割されます。
注: gRPC を使用した HelloWorld について学習したところですが、深くは学習していません。この例は HTTP インターフェイスを要求するのではなく、完全に SDK 呼び出しに基づいているため、ここ 2 日間疑っています。gRPC が使用するものは本当に疑問です。 TCP ソケットを直接使用します。レイヤーは引き続き HTTP2 を使用します。パケット キャプチャ分析により、HTTP2 が使用されていることがわかります。gRPC の使用方法とソース コードについては、今後さらに研究していきます。

おすすめ

転載: blog.csdn.net/2301_76787421/article/details/132841475