標籤:服務端 傳輸 連接埠 初始 成功 完成 儲存 客戶 動作
TCP三向交握
所謂握手,也就是建立串連,三次過程。
三向交握旨在串連到服務端的指定連接埠,進行通訊。建立一個TCP串連,需要向用戶端和服務端發送三個包。
其中包含同步序號和確認號以及TCP視窗大小的資訊交換。一般觸發握手在socket中都是connect()函數觸發的
第一次握手:
用戶端發送TCP請求, (SYN標記位置1個包,SYN=1,ACK=0 也就是帶有SYN標記的TCP包,初始序號為X,儲存在包頭的序號中). 表示用戶端需要建立一個TCP串連,這是握手中的第一不,發送請求。
第二次握手:
服務端收到帶有SYN標記的TCP包,發送確認包(帶有ACK和SYN的資料包,SYN=1,ACK=1,序號為y是服務端的)此時服務端詢問用戶端是否準備好資料轉送,此時伺服器進入SYN_RECV狀態。。
第三向交握:
用戶端接收到服務端的資料包(ACK+SYN資料包)向服務端發送一個(序號x+1,ACK=y+1)的資料包,此包發送完畢,用戶端和伺服器進入ESTAB_LISHED(TCP串連成功)狀態,完成三向交握。
TCP四次揮手
TCP串連是雙工的,所以每個方向都是單獨關閉。當其中一方完成資料轉送後可以發送FIN結束。接收到了FIN只是意味著沒有這個方向的資料流了
收到FIN的TCP串連可以發送資料,第一個關閉方執行主動動作,另一個執行被動動作。
第一次揮手:
用戶端發送FIN請求,說我要關閉TCP串連了,不再傳輸資料了。 (FIN=1,序號=n)
第二次揮手:
服務端收到這個請求,並且響應此請求,發送一個ACK包,確認ack為收到的序號+1。
第三次揮手:
服務端關閉TCP串連,向用戶端發送FIN訊息。
第四次揮手:
用戶端接收到訊息,發送ACK包確認,並將確認序號seq設定為收到序號+1。
本文來自 luoyan01 的CSDN 部落格 ,全文地址請點擊:82910437?utm_source=copy
TCP/IP三向交握四次揮手