HTTP通信

  • このエントリーをはてなブックマークに追加

Webシステムでは、アプリケーションプロトコルにHTTP(Hypertext Transfer Protocol)を使用する。
HTTPは、IPやTCPの上位層プロトコルにあたるアプリケーションプロトコルである。
TCPの3ウェイハンドシェイクで接続が確立した後、HTTP通信が開始される。
①→②→③の順に処理が行われる。
①TCPコネクションの確立
②1つのHTTPリクエストに対して1つのHTTPレスポンスが返される(HTTPでのデータの送受信)。
③TCPコネクションの切断
(keep-alive機能が無効化された場合や、明示的にコネクションを閉じる指示があった場合はコネクションが切断される挙動になる)

というわけで、1つHTTPリクエストに対して1つのHTTPレスポンスが返す度にTCPコネクションの確立と切断が行われる。
TCPコネクションは確立と切断は何かで確認可能か?これは今度調べよ。
Node.jsでTCPコネクションの接続の確立と切断は確認可能である。
【Node.js】httpサーバーを立ち上げる その2(TCP接続の確立と切断の検出) (attacktube.com)



上で説明したように1つのHTTPリクエストに対して1つのHTTPレスポンスが返される度にTCPコネクションの確立と切断が行われるとサーバーへの負担が大きい。
サーバーの負担を軽減するためにTCPコネクションを使い回して、1回目のHTTPリクエストとHTTPレスポンスで使用したTCPコネクションを2回目以降も再利用する。
HTTPの持続的接続機能をHTTPキープアライブ(HTTP Keep-Alive) と 呼ぶ。
Keep-Aliveはサーバー側で設定される機能であり、複数のリクエストとレスポンスを同じコネクションで処理することによって、通信の効率性が向上します。

keep-alive機能が有効の場合は次の通りである。
TCPの3ウェイハンドシェイクで接続が確立した後、HTTP通信が開始される。
①→②→③の順に処理が行われる。
①TCPコネクションの確立
②複数のHTTPリクエストに対して複数のHTTPレスポンスが返される(HTTPでのデータの送受信)。
③TCPコネクションの切断

「オーバーヘッド」という言葉を使ってkeep-aliveのメリットを説明してみる。
keep-aliveを使用することで、HTTP通信のオーバーヘッドが減少する。具体的には、TCPコネクションの確立と切断の回数が減少するため、通信の効率が向上する。

オーバーヘッドとは、システムやプロトコルの実行に伴う追加的な負荷や時間のことを指す。
TCPコネクションの確立や切断には、ネットワークの通信やセキュリティの確保のために必要な手続きが含まれる。

HTTP/1.1はテキストベースプロトコルである。

HTTP通信の簡易的な説明は次の通り。
HTTPリクエストやHTTPレスポンスをTCPパケットに変換し、TCPパケットにIP情報等を追加したIPパケットに変換してネットワーク上に転送する。


  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*