TCP の 2MSL とは何かについて話しましょう。なぜクライアントは TIME-WAIT 状態で 2MSL を待たなければならないのでしょうか?

1.TCP-2MSL

1.1MSL

MSL: 最大セグメント寿命。セグメントが破棄されるまでにネットワーク内に留まることができる最長時間です。

1.2 MSL はなぜ存在するのですか?

TCP セグメントはネットワーク内で IP データグラムとして送信されます。IP データグラムには有効期間を制限する TTL フィールドがあり、TTL 制限はホップ数に基づいています。

1.3MSLサイズの定義

RFC ドキュメントでは 2 分と規定されていますが、実際の実装プロセスでは、MSL は通常、30 秒、1 分、2 分となります。

2.1 2MSL 状態とは何ですか?

TCP が connect を呼び出してソケット接続を確立した後、ソケット接続をアクティブに閉じるプロセスで Time_Wait の状態になります (つまり、2MSL 時間待機する必要がある 2MSL 待機メカニズム) 詳細については、次の図を参照してください。

ここに画像の説明を挿入します

2.2 2MSL ステータスはいつありますか?

この状態は、ソケット接続がアクティブに閉じられている場合にのみ存在し、2MSL 待機期間中は、この接続を定義するソケット ペア
(クライアントの IP アドレスとポート番号、サーバーの IP アドレスとポート番号) は使用できなくなります。

3.1 2MSLメカニズムの役割

これにより、最後の ACK がパッシブな終了側に送信され、接続の両方の当事者が閉じられることが保証されます。このメカニズムがないと、最後の ACK が失われた後に半接続状態が発生します。

3.2 クライアントが TIME-WAIT 状態で 2MSL 待機する必要があるのはなぜですか?

別れたようなものだ、クライアントが勝手に閉店してしまった、これはあなたが責任をとらなければなりませんよね?クライアントは、サーバーが最後の Wave メッセージを受信して​​いることを確認します。最後にパケットが失われ、サーバーが第 4 波メッセージを受信せず、クライアントが別れたくないと判断した場合、クライアントが後悔していて別れたくないかどうかを確認するために第 3 波メッセージを再送信します。別れた。この待機時間は、タイムアウトして再送信されたメッセージを受信するための時間です。

クライアントが送信後にリンクを切断し、サーバーが応答を待たず、メッセージを再送信した後でも応答がない場合、サーバーは諦めず、サーバーはメッセージを閉じることができません。リンク。依頼人は典型的なクズキャラになってしまいましたが、別れた後も他人に幻想を抱かせてはいけないですよね?

話が長くなったので本題に戻りますが、tcp の最大の特徴はデータが失われないことです。クライアントは間違った方法で新しい接続を確立し、古いデータ パケットを見つけて、クライアントの新しい接続を確立します。これを「結果を刈り取る」と言います。したがって、この待機時間により、双方が正常に終了するだけでなく、すべてのメッセージ セグメントが消え、古い要求メッセージ セグメントが新しい接続に表示されなくなることも保証されます。

要約する

積極的にフィンをクローズに送ったパーティは、4 回手を振った後、最後に一定時間待機する必要があります。この期間を 2MSL と呼びます。

おすすめ

転載: blog.csdn.net/weixin_53909748/article/details/132244295