網絡筆記學習三、TCP三次握手/四次揮手

一、介紹

TCP 在傳輸之前會進行三次溝通,一般稱爲“三次握手”,傳完數據斷開的時候要進行四次溝通,一般 稱爲“四次揮手”。

二、數據包說明

三、三次握手

1、第一次握手:主機 A 發送位碼爲 syn=1,隨機產生 seq number=1234567 的數據包到服務器,主機 B 由 SYN=1 知道,A 要求建立聯機;

2、第二次握手:主機 B 收到請求後要確認聯機信息,向 A 發 送 ack number=( 主 機 A 的 seq+1),syn=1,ack=1,隨機產生 seq=7654321 的包

3、第三次握手:主機 A 收到後檢查 ack number 是否正確,即第一次發送的 seq number+1,以及位碼 ack 是否爲 1,若正確,主機 A 會再發送 ack number=(主機 B 的 seq+1),ack=1,主機 B 收到後確認seq 值與 ack=1 則連接建立成功。

盜圖😄:

四、四次揮手

1、TCP 建立連接要進行三次握手,而斷開連接要進行四次。這是由於 TCP 的半關閉造成的。因爲 TCP 連 接是全雙工的(即數據可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉。這個單 方向的關閉就叫半關閉。當一方完成它的數據發送任務,就發送一個 FIN 來向另一方通告將要終止這個 方向的連接。

2、四次揮手

1) 關閉客戶端到服務器的連接:首先客戶端 A 發送一個 FIN,用來關閉客戶到服務器的數據傳送, 然後等待服務器的確認。其中終止標誌位 FIN=1,序列號 seq=u

2) 服務器收到這個 FIN,它發回一個 ACK,確認號 ack 爲收到的序號加 1。

3) 關閉服務器到客戶端的連接:也是發送一個 FIN 給客戶端。

4) 客戶段收到 FIN 後,併發回一個 ACK 報文確認,並將確認序號 seq 設置爲收到序號加 1。 首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉

3、完成

主機 A 發送 FIN 後,進入終止等待狀態, 服務器 B 收到主機 A 連接釋放報文段後,就立即 給主機 A 發送確認,然後服務器 B 就進入 close-wait 狀態,此時 TCP 服務器進程就通知高 層應用進程,因而從 A 到 B 的連接就釋放了。此時是“半關閉”狀態。即 A 不可以發送給 B,但是 B 可以發送給 A。此時,若 B 沒有數據報要發送給 A 了,其應用進程就通知 TCP 釋 放連接,然後發送給 A 連接釋放報文段,並等待確認。A 發送確認後,進入 time-wait,注 意,此時 TCP 連接還沒有釋放掉,然後經過時間等待計時器設置的 2MSL 後,A 才進入到 close 狀態。

盜圖😄

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