LinuxでIPアドレスごとに65536のオープンTCP接続のハード制限がありますか?


23

LinuxでIPアドレスごとに65536のオープンTCP接続のハード制限がありますか?私はどこかで読んだことがありますが、誰かが確認を求めており、見つけられません。

私はそれが何らかの形でそれを制限する16ビット整数であるファイル記述子についての何かだったことを覚えているようです?

それとも、このホクムであり、サーバーがどれほど強力であるか以外に制限はありませんか?

回答:


35

ポートの数を考えているかもしれません。IPv4の現在のバージョンでは、TCPで65536個のポートを使用できます。これは単なるLinuxの制限ではなく、プロトコルの一部です。IPアドレスはマシンを識別し、ポートはマシン上のプログラムを識別します。

しかし、接続の数はそれによって制限されません。接続は5つの情報で構成され、オタクでは5タプルを表します。プロトコル(TCP、UDP)、ローカルIPアドレスとポート、およびリモートIPアドレスとポートによって決定されます。だから、ウェブサーバーを取ります。同じポート(多くの場合80)で多くの接続を処理できます。Webサーバーは、同じクライアントマシンへの複数の接続をサポートすることもできます。たとえば、2つのウィンドウからgoogle.comに接続しているとします。マシンは、接続ごとに未使用のポートを選択します。そのため、Googleのサーバーは(TCP、google.com、80、yourmachine、someport1)および(TCP、google.com、80、yourmachine、someport2)を追跡する必要があります。ある時点で制限にぶつかりますが、それは厳密な制限ではなく、システムに大きく依存します。

はい、各ソケットはファイル記述子ですが、すべてのマシンがfdテーブルのショートを使用するわけではありません。私のシステムでは、すべてのシステムで調整されていませんが、cat /proc/sys/fs/file-max323997になります。必要に応じてブーストできると確信しています。

したがって、65336の制限がありますが、接続の数ではなくアドレス指定に関係しています。接続の数は制限されていますが、システム構成および接続されているメモリの量により制限されます。


2
5タプルを繰り返します。65536ポートに制限されていますが、着信IPアドレスあたりの接続が64kに制限されているだけですよね?だから唯一の制限はファイル記述子ですが、それらは必ずしも16ビットではありませんか?それで基本的にあなたが言っていることは制限がないということですか?
クリス

1
はい。参照:en.wikipedia.org/wiki/Transmission_Control_Protocolセクション「リソースの使用」
-user12889

3
@Chris:単一のローカルポートの着信IPアドレスごとに64k接続、はい。
-grawity

@クリスは何の悲しみが言った。5タプルには、他のマシンと最大65536の組み合わせがあります(到達することはありません)。実際には、マシンは接続に古いポートを使用できないため、そこに到達することは決してありません-一部は特定の理由で予約されています。
リッチホモルカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.