日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

为什么TCP的TIME_WAIT状态要保持2MSL?

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么TCP的TIME_WAIT状态要保持2MSL? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TIMEWAIT狀態也稱為 2MSL等待狀態
每個具體TCP實現必須選擇一個報文段最大生存時間MSL(Maximum Segment Lifetime)。
它是任何報文段被丟棄前在網絡內的最長時間。

我們知道這個時間是有限的,因為TCP報文段以IP數據報在網絡內傳輸,而IP數據報則有限制其生存時間的TTL字段。

RFC 793 [Postel 1981c] 指出MSL為2分鐘。然而,實現中的常用值是30秒,1分鐘,或2分鐘。

在實際應用中,對IP數據報TTL的限制是基于跳數,而不是定時器。

對一個具體實現所給定的MSL值,處理的原則是:當TCP執行一個主動關閉,并發回最后一個ACK,該連接必須在TIMEWAIT狀態停留的時間為2倍的MSL。

這樣可讓TCP再次發送最后的ACK以防這個ACK丟失(另一端超時并重發最后的FIN)。
這種2MSL等待的另一個結果是 這個TCP連接在2MSL等待期間,定義這個連接的插口(客戶的IP地址和端口號,服務器的IP地址和端口號)不能再被使用。
這個連接只能在2MSL結束后才能再被使用。

遺憾的是,大多數TCP實現(如伯克利版)強加了更為嚴格的限制。
在2MSL等待期間,插口中使用的本地端口在默認情況下不能再被使用。

某些實現和API提供了一種避開這個限制的方法。

使用插口API時,可說明其中的SOREUSEADDR選項,它將讓調用者對處于2MSL等待的本地端口進行賦值。
但我們將看到TCP原則上仍將避免使用仍處于2MSL連接中的端口。

在連接處于2MSL等待時,任何遲到的報文段將被丟棄。
因為處于2MSL等待的、由該插口對(socket pair)定義的連接在這段時間內不能被再用,因此當要建立一個有效的連接時,來
自該連接的一個較早替身(incarnation)的遲到報文段作為新連接的一部分不可能不被曲解

(一個連接由一個插口對來定義。一個連接的新的實例(instance)稱為該連接的替身)。



參考:《TCP IP詳解卷一》18.6.1

《UNIX網絡編程(卷1):套接字聯網API(第3版)》2.7

為什么TCP的TIME_WAIT狀態要保持2MSL?

總結

以上是生活随笔為你收集整理的为什么TCP的TIME_WAIT状态要保持2MSL?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。