web-dev-qa-db-ja.com

TCPポートの枯渇は本当ですか?

TCPポートの枯渇状態になるために、どれだけ速くエフェメラルポートを割り当てる必要がありますか?

クライアントのリクエストに使用できる〜4k(古いWindows)、〜16k(新しいWindows)、または〜28k(RH Linux)のポートがあると言われました。では、ポート番号のプールはグローバルですか、それともリモートIPアドレスごとですか?

それらがグローバルである場合、ポートは240(Windows)または60(RH Linux)秒後まで再利用可能にならないので、1秒あたり約16/66/466のレートでポートを割り当てる必要がありますか?

これは正しいです?

あなたの経験では、これは私が実際に心配すべきことですか?

5
zvolkov

DOSはバラバラに攻撃しますが、アプリケーションが不十分な場合のみです。 TCPポートの枯渇を回避するための基本的な秘訣は、HTTPキープアライブなどの接続プールです。これにはいくつかの有益な効果があります:

  1. 単位時間あたりの接続が少なくなります。
  2. 接続の最初のクローズは通常、サーバーではなくクライアントによって行われます。これにより、TIME_WAIT状態がサーバーからクライアントに移動します。これは、使用するソケットとポートがはるかに少ないため、許容度がはるかに高くなります。
6
user207421

Diito EJPおよびSirex。監視することで、自分の立場をよりよく理解できます。また、ソケットがTIME_WAIT状態を維持できる時間を微調整することもできます。私はこれを、何千ものGPRSテレメトリデバイスと通信するシステムで実行する必要がありました。彼らはダイヤルインし、誰の仕事のようにポートを消費します。より積極的なTIME_WAITしきい値は、私たち(の)アプリケーションがより安定していることを意味します。

MS Windowsには、ポートの使用状況を監視するための便利なツールがいくつかあります。例:TCPViewやProcessExplorer(MS SysInternals)。 netstat -aは、数千の接続がある場合に遅くなる可能性があるため、netstat -an代わりに(これにより、アドレスでDNS解決が発生しなくなります)。 Linuxは保証できません。

3
Simon Catlin