2

「so_reuseaddrは正確には何をしますか?」に関する次の回答を読んでいました。

このソケット オプションは、このポートが (TIME_WAIT 状態で) ビジーであっても、先に進んで再利用することをカーネルに伝えます。ビジー状態で別の状態の場合でも、アドレスが既に使用されているというエラーが発生します。サーバーがシャットダウンされ、そのポートでソケットがまだアクティブなときにすぐに再起動する場合に役立ちます。予期しないデータが入ってくると、サーバーが混乱する可能性があることに注意してください。
「ソケットは 5 つのタプル (proto、ローカル アドレス、ローカル ポート、リモート アドレス、リモート ポート) である」と指摘されています。SO_REUSEADDR は、ローカル アドレスを再利用できると言っているだけです。5 タプルはまだ一意でなければなりません!' マイケル・ハンター (mphunter@qnx.com) 著。これは事実であり、これが予期しないデータがサーバーに表示される可能性が非常に低い理由です。危険なのは、そのような 5 タプルがまだネット上に浮かんでいて、跳ね返っている間に、同じシステム上の同じクライアントからの新しい接続がたまたま同じリモート ポートを取得することです。これは #2.7 'TIME_WAIT 状態について説明してください' で Richard Stevens によって説明されています。

最後の行を取得できませんThe danger is....TIME_WAIT state..ネット上に同じフローティングタプルがまだある場合....しかし、1時間後に同じタプルがある場合はどうなりますか? わからないんですが、誰か説明してくれませんか?

4

1 に答える 1