目次
HTTP のキープアライブはアプリケーション層 (ユーザー モード) によって実装され、HTTP ロング接続と呼ばれます。
TCP のキープアライブは TCP 層 (カーネル モード) によって実装され、TCP キープアライブ メカニズムと呼ばれます。
HTTP のキープアライブ
HTTP プロトコルはリクエスト/レスポンス モードを採用しており、クライアントがリクエストを開始すると、サーバーは 1 つずつ応答を返します。
キープアライブとは、同じ TCP 接続を使用して複数の HTTP リクエスト/応答を送受信できるようにすることで、接続の確立と解放のオーバーヘッドを回避することであり、この方法はHTTP ロング接続と呼ばれます 。
リクエストのヘッダーに追加します: ( HTTP 1.1 以降、キープアライブはデフォルトで有効になります)
Connection: Keep-Alive
リソースの無駄を避けるために、Web サービス ソフトウェアは通常、 keepalive_timeout
HTTP 長時間接続のタイムアウト期間を指定するパラメーターを提供します。 タイマーが期限切れになると、コールバック関数がトリガーされて接続が解放されます。
TCPキープアライブ
TCP のキープアライブは実際には TCP のキープアライブ メカニズムであり、SO_KEEPALIVE
有効にするにはソケット インターフェイスを通じて設定する必要があります 。この機能は「カーネル」によって実装されており、クライアントとサーバーが一定期間データ交換を行っていない場合、カーネルは相手がまだオンラインであるかどうかを確認するための検出メッセージを送信し、接続が確立されているかどうかを確認します。がまだ有効である場合は、接続を閉じるかどうかを決定します。
要約:
HTTP のキープアライブは HTTP ロング接続とも呼ばれ、この機能は「アプリケーション」によって実装され、同じ TCP 接続を使用して複数の HTTP リクエスト/応答を送受信し、HTTP ショート接続の数を減らすことができます。確立と解放。
TCP のキープアライブは、TCP キープアライブ メカニズムとも呼ばれます。この機能は「カーネル」によって実装されます。クライアントとサーバーが一定期間データを交換しない場合、カーネルは接続を確認するためにプローブを送信します。はまだ有効です。テキストを使用して、相手がまだオンラインであるかどうかを検出し、接続を閉じるかどうかを決定します。