単一のプロセスがすべてのポートをリッスンできますか?

単一のプロセスがすべてのポートをリッスンできますか?

私の理解によると、ポートでリッスンするということは、オペレーティングシステムに1-65535の範囲の特定の番号を割り当てるように要求することを意味します。最初の1024ポートはスーパーユーザープロセスに制限されています。

私が知っている限り、IP要求を実行するすべてのプロセスはポートでリッスンし、要求への応答を取得すると予想されるポートを指定する必要があります。しかし、プロセスが可能なすべてのポートを同時に宣言するとどうなりますか?オペレーティングシステムでこれを許可しますか?それでは、他のほとんどのプログラムが動作を停止することを意味しますか?

ベストアンサー1

少なくともソケットAPIを使用せずに可能なすべてのポートを同時に宣言する方法はないと思います。ただし、プログラムはすべての可能なポートを順番にバインドしようとします。リソースが不足していない場合は、利用可能なすべてのポートをバインドできます。完了すると、他のプログラムは同じリスンアドレスにそのポートをバインドできません。

私はそうは思わない最大プログラムはポートバインドを試みるため、他のほとんどのプログラムは動作を停止しないでください。影響を受ける唯一のプログラムは、バインドされたポートを使用する必要があるプログラムです。つまりIP ソケットを使用しようとするすべてのプログラムです。

Cloudflareがパッチを提案していますこれにより、BPFプログラムはすべてのポートでリッスンでき、BPFプログラムはすべてのポートを効果的に一覧表示できます。斑点そしてLPC 今後のプレゼンテーション

おすすめ記事