TIME_WAITは絶対に正常です。これは、ローカル側のTCP FINと、リモートロケーションからのTCP FIN ACKの後に発生します。 TIME_WAITでは、迷子パケットがローカルアドレスに到着するのを待っているだけです。しかし、パケットが紛失したり迷子になったりする場合は、TIME_WAITを実行してTTLまたは「存続可能時間」が期限切れになったことを確認してから、再度アドレスを使用してください。
SO_REUSEADDRを使用している場合、基本的には、私は迷子パケットがないと仮定します。現代的で信頼性の高いTCPネットワークがますます普及しています。それはまだ可能ですが、それはありそうもありません。
SO_LINGERをゼロに設定すると、異常終了を開始することがあります。これは、「接続を終了する」とも呼ばれます。ここでは、TIME_WAITを尊重するのではなく、迷子パケットの可能性を無視します。
FIN_WAIT_1が表示されている場合、リモートロケーションがFINに対する応答としてTCP FIN ACKを送信していないため、問題が発生する可能性があります。そのため、プロセスが強制終了されたか、TCP FIN ACKがネットワークパーティションまたは不正なルートによって失われました。
CLOSE_WAITが表示されているときに問題が発生した場合は、TCP FINが指定されているときにTCP FIN ACKを送信していないため、接続がリークしています。
これは正しくありません。 'SO_REUSEADDR'は' TIME_WAIT'を防ぎません。すでに使用されているアドレス/ポートの組み合わせに新しいソケットを 'bind()'するだけです( 'listen()'を呼び出す前など)。コメントをするにはあまりにも多くの理由があります。 Stevens、Fenner and Rudoff著 "UNIX Network Programming、第3版"(ISBN 0-13-14115-1)の210〜213ページをお読みください。 – mgd