0

unix (OSX) マシンで kqueue を使用して tcp/ip エコー サーバーを作成しました。100 個の tcp/ip ポートを開き、ポートごとに 4000 クライアントを受け入れるように設計されました。15 台の別のマシンを使用して、約 230,000 の接続を作成しました。(1 プロセスあたり 4000 接続、1 ボックスあたり 4 プロセス)

サーバーはそれ以上でも受け付けるようですが、問題はクライアント側にありました。多くの接続を行うには制限があります。Windows XP - 3000、Windows7 & Unix - 16384 など。

制限は正しいですか?私は間違っていましたか?500,000 / マシンなど、1 つのクライアントでできるだけ多くの接続を確立したいと考えています。

どうすれば克服できますか?

4

2 に答える 2

0

500,000 / マシンなど、1 つのクライアントでできるだけ多くの接続を確立したいと考えています。

できません。TCP 接続は、タプル {プロトコル、ソース アドレス、ソース ポート、ターゲット アドレス、ターゲット ポート} によって識別されます。これらの 5 つの要素のうち 4 つが固定されています。ポート番号は 16 ビットであり、ゼロにすることはできないため、残りの要素である送信元ポートは最大で 65535 個の異なる値しか持つことができません。

したがって、同じクライアントへの 500,000 接続の期待は、約 10 倍楽観的すぎます。

于 2013-04-24T10:14:46.810 に答える