インタビューの質問:なぜ、クライアントは最終2MSLを待つ必要があります

インタビューの質問:
なぜ、クライアントは最終2MSLを待つ必要があります

MSL(最大セグメントライフタイム)、TCPは、異なる実装が異なる値のMSLを設定することが可能となります。

このACKパケットが失われる可能性があるため、クライアントは、サーバーに到達するために、最終的なACKパケットを送信していることを確認し、サーバーの視点に立ってすることは、私はFIN + ACKパケットの切断要求を送信した、クライアントが私に与えられていないようです応答で、要求は、サーバーが一度再送しますので、私は、メッセージを受信しなかった退場しなければならない、そしてクライアントがこの期間中に、このパケット再送2MSLを受けることができるようになり、その後、応答パケットが与えられています温家宝首相、2MSLタイマーを再起動します。

「失敗した接続要求セグメント」の「3ウェイハンドシェイク」の類似防ぐための言及は、これに関連して、表示されます。最後のクライアントが確認メッセージを送信した後、2MSLこの時、ネットワークから消えて生成の期間内に存在するすべてのセグメントを接続することが可能です。このような新しい接続要求パケット古い接続は発生しません。

接続が確立された後、LISTEN状態にあるサーバー、接続要求を確立するために、SYNパケットを受信し、SYN ACKパケットがクライアントに送信されました。接続が閉じているときと、サーバは単に、もはや他の当事者を意味し、お互いのFINメッセージは、自分自身のは、すぐにオフにすることができるので、彼は、お互いに送信されたすべてのデータを持っていないかもしれないが、あなたも送ることができ、データを送るだけでなく、データを受け取る受信しますお互いにいくつかのデータの後、およびその後複数回に得られ、したがって、独自FIN及びACKは、一般的に別々に送信され、今接続を閉じるために同意する反対側にFINパケットを送信します。

TCPは、障害が発生した場合、サーバは、無駄なリソースを待っているに保つことができない、明らかに、またクライアントキープアライブタイマーです。サーバはクライアントの要求は、タイマーの設定時間をリセットします受信するたびに、通常は2時間で2時間クライアントからのデータを受信して​​いない場合、サーバは検出メッセージセグメントを送信し、その後、すべての75一度秒を送信します。10個の連続したプローブパケットを送信することは、まだ回答は得られなかった場合は、顧客を持ち出し、サーバーが障害と考えられ、その後、彼らは、接続を閉じます。

おすすめ

転載: www.cnblogs.com/ludundun/p/11469211.html