面試官, TCP連接狀態中的TIME_WAIT表示什麼

答案其實就藏在下面這張圖裏,接下來我們就一步一步看這張圖,圖看完了,答案也就有了。
image

狀態名詞解釋

整個圖client和server的狀態都是從ClOSED開始流轉

LISTEN: 表示server在等待一個遠程的tcp請求
SYN-SENT: 表示client在發佈一個連接請求之後等待server回覆對應的連接請求
SYN-RECEIVED: 表示在server和client都發出一次連接請求的之後,在等待一次最後的確認(ACK)
ESTABLISHED: 表示連接已經建立,數據可以被髮送和接收
FIN-WAIT-1: 表示在等待另一端的斷開請求(FIN),或者另一端收到斷開請求並回復的確認請求(ACK)
FIN-WAIT-2: 表示在等待另一端的斷開請求(FIN)
CLOSE-WAIT: 表示等待本端的斷開請求,確保本端也沒有數據發送了.
CLOSING: 表示已經收到另一端的斷開請求(FIN),在等待另一端確認收到自己的斷開請求(ACK)

LAST-ACK: 表示server在等待client的確認信號(ACK),以確認client收到了自己發出的FIN和ACK

TIME-WAIT: 表示等足夠的時間(2MSL)來確認另一端已經收到了自己發出的請求斷開的確認消息(ACK)。
CLOSED: 表示連接已經完全斷開

流程分析

粗實線表示 client 正常的狀態流轉,粗虛線表示 server 端正常的狀態流轉。我們先看一下client的狀態流轉:

CLOSED => SYN_SENT => ESTABLISHED => FIN_WAIT_1 => FIN_WAIT_2 => TIME_WAIT => CLOSED

CLOSED => LISTEN => SYN_RCVD => ESTABLISHED => CLOSE_WAIT => LAST_ACK => CLOSED

參考文獻:
https://www.zhihu.com/question/67013338
https://users.cs.northwestern.edu/~agupta/cs340/project2/TCPIP_State_Transition_Diagram.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章