1つのリスニングポートは、同時に複数の接続を受け入れることができます。
頻繁に引用される「64K」の制限がありますが、それはサーバーポートごとのクライアントごとであり、明確にする必要があります。
各TCP / IPパケットには、アドレス指定用の基本的に4つのフィールドがあります。これらは:
source_ip source_port destination_ip destination_port
< client > < server >
TCPスタック内では、これらの4つのフィールドは、パケットを接続(ファイル記述子など)と突き合わせるための複合キーとして使用されます。
クライアントが同じ宛先の同じポートに多くの接続を持っている場合、それらのフィールドの3つは同じになります- source_port
異なる接続を区別するためにのみ異なります。ポートは16ビットの数値であるため、特定のクライアントが特定のホストポートに対して確立できる接続の最大数は64Kです。
ただし、複数のクライアントはそれぞれ、一部のサーバーのポートに最大64Kの接続を確立できます。サーバーに複数のポートがある場合、またはいずれかがマルチホームである場合は、さらに増やすことができます。
したがって、実際の制限はファイル記述子です。個々のソケット接続にはファイル記述子が与えられるため、制限は実際には、システムが許可するように構成されているファイル記述子の数と、処理するリソースです。最大制限は通常300Kを超えますが、たとえばsysctlを使用して構成できます。
通常のボックスについて自慢している現実的な制限は、たとえばシングルスレッドのJabberメッセージングサーバーの場合、約80Kです。