2012-02-17 35 views
27

HTTPキープアライブはどのように実装されていますか? TCP Keep Aliveを内部的に使用していますか?そうでない場合、クライアントが死んでいるかどうか、サーバーがどのように検出しますか?HTTPキープアライブとTCPキープアライブ

答えて

15

HTTPキープアライブは、HTTPプロトコルの機能です。キープアライブ機能を実装しているWebサーバーは、最後のHTTP応答を送信してから(対応するHTTP要求があった場合)、定期的に(着信HTTP要求に対して)接続/ソケットをチェックする必要があります。設定されたキープアライブ時間(秒)の時間までにHTTP要求が受信されない場合、Webサーバーは接続を閉じます。 Webサーバーによって「終了」された後、それ以上のHTTP要求は実行できません。一方、TCPキープアライブは、TCPレイヤのOSによって管理されます。 HTTPキープアライブとTCPキープアライブはまったく関係のないものです。

36

私はこれが古い質問ですけど、まだ:

  • HTTPキープアライブは、HTTPクライアント(通常はブラウザ)とサーバ(Webサーバ)を介して複数のリクエスト/レスポンスのペアを送信することを可能にする機能です同じTCP接続。これにより、第2、第3、... HTTPリクエストのレイテンシが減少し、ネットワークトラフィックが減少します。

  • TCPキープアライブは完全に異なる獣です。小さなパケットを送信することによってTCP接続を開いたままにします。さらに、パケットが送信されると、これはチェックとして機能し、接続が落ちるとすぐに送信者に通知されます(そうでなければそうでないことに注意してください).TCP接続を介して通信するまでは、大丈夫かどうかわかりません)。キープアライブHTTPについてのご質問にお答えするために

How is HTTP Keep Alive implemented? 

簡単に言えば、HTTPサーバは各応答の後にTCP接続を閉じるが、もし他のいくつかのは、HTTPいくつかの時間を待っていませんリクエストもそれになります。いくつかのタイムアウトの後、それはとにかくそれを閉じます。

Does it internally use TCP Keep Alive? 

いいえ、少なくとも私はそれには何のポイントもありません。

If not, how does the server detect if the client is dead or alive? 

これは必須ではありません。クライアントがリクエストを送信すると、レスポンスが返されます。クライアントがTCP接続を介して何も送信しない場合(おそらく接続が無効であるため)、タイムアウトにより接続が切断されます。クライアントはもちろんこれに気付き、必要に応じて別のTCP接続を介して要求を送信します。

-2

http keep-aliveは、マルチhttpリクエストを転送するためにtcpを長くするだけです。キープアライブタイムアウト後、tcp接続は閉じられます。 tcp keep-aliveは、tcp接続を維持する単なるメカニズムです。またはtcp接続が閉じていないことを確認してください。

関連する問題