tcp詳解學習筆記-tcp建立終止

tcp建立連接三次握手

初始化連接、數據傳輸、關閉連接

tcp建立連接三次握手

一般是由一端打開一個套接字,然後監聽另一方的連接,服務器被動打開,客戶端主動打開鏈接

1.客戶端發送一個syn來創建主動打開,指明客戶端需要創建鏈接的端口和時間序列號報文包
2.服務端回覆客戶端初始的syn和ack,ack爲客戶端傳說的syn包的時間序列號+1
3.最後客戶端再發一個ack包,服務端接收到鏈接進入已創建狀態

tcp關閉連接四次握手

tcp連接全雙工的
1.由任意一端發送fin請求關閉連接,另一方受到後執行被動關閉,然後返回一個fin的ack
2.再由被動關閉的一端發送fin請求,另一端收到返回給一個fin的ack
3.連接進入關閉狀態

tcp的半關閉

也是因爲tcp時全雙工的,當一方請求關閉,接收到關閉的一方還能send數據,完成後進行關閉。

tcp狀態變遷圖

全組合形式

呼入請求隊列(鏈接請求從內核到應用層的過程)

tcp如何處理呼入的鏈接請求?
1.正在等待連接請求的一端又一個固定的鏈接隊列,隊列中的鏈接已經被tcp接受,但還沒有被應用層接收
2.應用層指明隊列的長度,叫做積壓值(0-5之間)
3.syn到達時,tcp使用一個算法,根據俄當前鏈接隊列中的連接數來確定是否接受這個鏈接。積壓值說明的是tcp監聽的端點已被tcp接受而等待應用層接受的最大鏈接數
4.對於一個新的鏈接請求,改tcp監聽的端點的鏈接隊列中還有空間,tcp將對syn進行確認並完成鏈接的建立,但是應用層只有在三次握手中的第三個報文段收到後纔會知道這個新鏈接
5.如果對於新的鏈接請求,鏈接隊列中已經沒有空間,tcp將不會理會收到的syn,也不會發任何報文段。如果飲用層不能及時接受已經被tcp接受的鏈接,這些鏈接可能佔滿整個隊列,客戶端的主動打開最終將超時

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