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です。