TCP キープアライブはどのように機能し、ソケット接続はどのくらいの時間開いたままになりますか?

Mary-Kate Olsen
リリース: 2024-10-26 14:05:03
オリジナル
512 人が閲覧しました

How Does TCP Keep-Alive Work and How Long Do Socket Connections Remain Open?

TCP ソケット接続には「キープアライブ」がありますか?

HTTP キープアライブとは異なり、TCP ソケット接続は無期限に開いたままになるわけではありません。代わりに、TCP キープアライブによって強制されるタイムアウト制限の対象となります。

はじめに

TCP 接続には 2 つのソケットが含まれ、それぞれが接続の一端に存在します。通常、これらのソケットは、FIN パケットによって示されるように、一方の端が接続を終了するまで開いたままになります。ただし、意図しないソケット終了が発生した場合、古い接続を検出して閉じるために TCP キープアライブが存在します。

キープアライブ プロセス

Linux システムでは、TCP キープアライブ次のデフォルト設定で動作します:

  • tcp_keepalive_time: 7200 秒 (2 時間)
  • tcp_keepalive_probes: 9
  • tcp_keepalive_intvl: 75 秒

接続が tcp_keepalive_time を超えてアイドル状態のままの場合、ACK パケットが相手側に送信されます。指定した数のプローブ後に応答がない場合、接続は RST 経由で終了します。

Gotchas

2 時間 デフォルト: デフォルト、キープアライブ プロセスは、非アクティブ状態が 2 時間続いた後にのみ開始され、古い接続が持続する可能性があります。

キープアライブはオプションです: キープアライブ パケットへの応答はオプションです。

TCP タイムアウトの変更

TCP タイムアウトを変更するには、次の OS 固有の手順を参照してください:

Linux:

  • ソケットごと: Java では現在サポートされていません
  • システム全体: エコーを使用して調整 / proc/sys/net/ipv4/[tcp_keepalive_time|tcp_keepalive_probes|tcp_keepalive_intvl]

Mac OS X:

  • システム全体: sysctl -w を使用して net.inet.tcp.[keepidle|keepintvl|keepcnt] を設定します
  • 永続的: /etc/sysctl.conf に設定を追加します

Windows:

  • システム全体: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters のレジストリ値を編集

以上がTCP キープアライブはどのように機能し、ソケット接続はどのくらいの時間開いたままになりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!