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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

TCP TIME_WAIT 详解

發(fā)布時間:2025/3/15 ChatGpt 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP TIME_WAIT 详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

先放上TCP狀態(tài)轉(zhuǎn)換圖

再放上三次握手

然后放上四次揮手

OK,我們發(fā)現(xiàn)在四次揮手中出現(xiàn)了TIME_WAIT 狀態(tài)

1.time_wait狀態(tài)是什么
簡單來說:time_wait狀態(tài)是四次揮手中server向client發(fā)送FIN終止連接后進(jìn)入的狀態(tài)。

上面圖為tcp四次揮手過程
這里寫圖片描寫敘述
能夠看到time_wait狀態(tài)存在于client收到serverFin并返回ack包時的狀態(tài)
當(dāng)處于time_wait狀態(tài)時,我們無法創(chuàng)建新的連接,由于port被占用。

2.為什么會有time_wait狀態(tài)
time_wait存在的原因有兩點
1.可靠的終止TCP連接。
2.保證讓遲來的TCP報文段有足夠的時間被識別并丟棄。

1.可靠的終止TCP連接,若處于time_wait的client發(fā)送給server確認(rèn)報文段丟失的話,server將在此又一次發(fā)送FIN報文段,那么client必須處于一個可接收的狀態(tài)就是time_wait而不是close狀態(tài)。
2.保證遲來的TCP報文段有足夠的時間被識別并丟棄,linux 中一個TCPport不能打開兩次或兩次以上。當(dāng)client處于time_wait狀態(tài)時我們將無法使用此port建立新連接,假設(shè)不存在time_wait狀態(tài),新連接可能會收到舊連接的數(shù)據(jù)。

time_wait持續(xù)的時間是2MSL,保證舊的數(shù)據(jù)能夠丟棄。由于網(wǎng)絡(luò)中的數(shù)據(jù)最大存在MSL(maxinum segment lifetime)

3.哪一方會有time_wait狀態(tài)
time_wait狀態(tài)是一般有client的狀態(tài)。

并且會占用port
有時產(chǎn)生在server端,由于server主動斷開連接或者發(fā)生異常

4.怎樣避免time_wait狀態(tài)占用資源
假設(shè)是client,我們一般不用操心,由于client一般選用暫時port。再次創(chuàng)建連接會新分配一個port。

除非指定client使用某port,只是一般不須要這么做。

假設(shè)是server主動關(guān)閉連接后異常終止。則由于它總是使用用一個知名serverport號,所以連接的time_wait狀態(tài)將導(dǎo)致它不能重新啟動。只是我們能夠通過socket的選項SO_REUSEADDR來強制進(jìn)程馬上使用處于time_wait狀態(tài)的連接占用的port。
通過socksetopt設(shè)置后,即使sock處于time_wait狀態(tài),與之綁定的socket地址也能夠馬上被重用。

此外也能夠通過改動內(nèi)核參數(shù)/proc/sys/net/ipv4/tcp_tw/recycle來高速回收被關(guān)閉的socket,從而是tcp連接根本不進(jìn)入time_wait狀態(tài),進(jìn)而同意應(yīng)用程序馬上重用本地的socket地址。
TCP 狀態(tài)遷移過程
LISTEN:服務(wù)端已經(jīng)啟動一個socket,其狀態(tài)處于監(jiān)聽狀態(tài),等待客戶發(fā)起請求連接。
ESTABLISHED:客戶端和服務(wù)端經(jīng)過三次握手建立,兩個方向上連接狀態(tài)都建立,狀態(tài)置為ESTABLISHED
客戶端狀態(tài)變遷:(主動端)
FIN_WAIT_1: 發(fā)送FIN給服務(wù)端口。
FIN_WAIT_2:收到服務(wù)端的ACK報文
TIME_WAIT :收到服務(wù)端發(fā)過來的FIN報文,發(fā)送ACK報文給服務(wù)端口。主動關(guān)閉連接端,接收到服務(wù)(TIME_WAIT是主動端關(guān)閉)之后進(jìn)入2MSL時間的等待
CLOSE:2MSl過后,關(guān)閉進(jìn)入初始化狀態(tài)。
服務(wù)端狀態(tài)變遷:(服務(wù)端)
CLOSE_WAIT:收到客戶端FIN報文,給客戶端發(fā)送ACK狀態(tài)后,表示知道客戶端要關(guān)閉連接請求,服務(wù)端可能數(shù)據(jù)還沒有傳送完,所以處于等待關(guān)閉狀態(tài)。(CLOSE_WAIT是被動端關(guān)閉)
LAST_ACK:服務(wù)端數(shù)據(jù)傳輸完畢,發(fā)送FIN報文給客戶端,同時等待客戶端發(fā)ACK報文狀態(tài)
CLOSE:收到客戶端ACK報文后,進(jìn)入初始化狀態(tài)

轉(zhuǎn)載于:https://blog.51cto.com/superhakce/2091872

總結(jié)

以上是生活随笔為你收集整理的TCP TIME_WAIT 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。