TCPポートでリッスンしているプログラムをシャットダウンすると、システムはポートを回収して再利用できるまで数分かかります。いくつかのQ&Aでこの現象について言及しましたが、説明がないことを見ました。なぜこれが起こるのか、そしてシステムがすぐにポートをリサイクルしないのはなぜですか? WindowsやMacなどの他のシステムでもこれが起こりますか?
答え1
その背後にあるアイデアは、そのポートでリッスンしている古いプログラムのパケットを受信しないようにすることです。このTIME_WAIT
状態は次に定義されます。RFC793最大セグメント寿命の2倍です。
他のオペレーティングシステムについてはわかりませんが、すべて同じような動作をしているとします。
この問題の回避策は次のとおりです。SO_REUSEADDR
状態を無視する必要があるソケットからTIME_WAIT
。