TCP接続のTIME WAITの目的は何ですか?


12

アクティブクローザーがTIME WAITに入る理由は、最終ACKが失われないことを確認するためであることがわかりました。しかし、最終ACKが失われたかどうかはどのようにしてわかりますか?パッシブクローザーはFINを再送信し、アクティブクローザーはACKが失われたことを認識しますか?TCP FSMの写真を次に示します。

TCP FSM



1
:このブログ記事は、偉大な答えていvincent.bernat.im/en/blog/...
好戦的なチンパンジーの

回答:


5

パッシブクローザーはFINを再送信し、アクティブクローザーはACKが失われたことを認識しますか?

はい。TCP接続管理セクションのTCP / IP Illustrated Volume 1からの引用:

  1. クローズを完了するために、最後のセグメントには最後のFINのACKが含まれています。FINが失われた場合、そのACKが受信されるまで再送信されることに注意してください。

タイムアウトがあります。の場合、タイムアウトが発生LAST_ACKすると、パッシブクローザーFINが失われたと見なして再送します。それが実際に失われた場合、アクティブなクローザーは最終的に再送信されたものFINを受信し、に入りTIME_WAITます。場合はFIN失われなかったが、最終的にはACK失われた、そして近いアクティブにしているTIME_WAITと受け取るFIN再び。これが発生すると-受信するFINTIME_WAIT- ACKが再送信されます。

のタイムアウト値TIME_WAITは、再送信には使用されません。にタイムアウトがある場合、パッシブクローザーがパケットを再送信しなかったため、TIME_WAITファイナルACKが正常に配信されたと見なされFINます。したがって、タイムアウトはTIME_WAIT、もう一方の端が何も送信しなかった場合、最終的なものを受信しACKて接続を閉じたためであると安全に想定できる時間だけです。


1

しかし、最終ACKが失われたかどうかはどのようにしてわかりますか?

タイムアウト期間内に受信しなかったためです。私はそれが「当たり前」の答えであることを知っていますが、それがまさにこれらの状態とタイムアウトが存在する理由です。

パッシブクローザーはFINを再送信しますか

いいえ。そのストリームにさらにパケットが到着しない限り、「RST」(リセット)が送信されることはありません。

ネットワーク障害の可能性があるにもかかわらず、プロセス全体が複雑な状態マシンであり、正常なシャットダウンを実行します。ネットワークが壊れ、リンクにエラーが発生し、リンクが飽和状態になり、パケットをドロップする必要がある、デバイスに障害が発生するなど。演習として、エンドポイントの1つが消えたとき(電源障害など)にアクティブな接続の状態ツリーを実行します

TL; DRその状態ツリーは、考えられるすべての障害モードを処理するように設計されています。


ありがとう、しかし、私はまだ最初の部分について混乱しています。パッシブクローザーがACKを受信して​​いないことをアクティブクローザーがどのように認識するのかを意味しますか パッシブクローザーがACKを受信すると、接続のサイドを破棄し、ACKを受信しない場合、最後のACKのままになります。
czhao

すべての状態にタイマーが接続されているためです。
リッキービーム

すみません、わかりません。これらのタイマーは、パッシブクローザーが最終ACKを受信しなかったことをアクティブクローザーにどのように通知しますか?つまり、アクティブクローザーは、最終ACKを再送信する必要があるかどうかをどのようにして知るのでしょうか。
czhao

0

TIME_WAITの目的は、ネットワークが「古い、既存の」接続に属するものとして到着するパケットを新しいものと区別できるようにすることです。推奨事項は、TIME_WAITタイマーを最大セグメント寿命(MSL)の2倍に設定することです。私のシステムではMSLは1分なので、接続はTIME_WAIT状態のまま2分間残ります。

この時間が経過すると、到着したパケットは古い接続に関連付けられなくなります。

TIME_WAITは、ACKパケットの送信を直接待機していません。これは、CLOSE_WAITおよびFIN_WAIT状態によって駆動されます。TIME_WAIT状態になると、ソケットはすでに閉じられています。

参照:http : //www.tcpipguide.com/free/t_TCPConnectionTermination-3.htm https://en.wikipedia.org/wiki/Maximum_segment_lifetime http://www.lognormal.com/blog/2012/09/27/ linux-tcpip-tuning /

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.