TCP 三次握手
圖解

三次握手程序詳解
第一次握手
【客戶端】向【服務端】發送連接請求報文,標記 ACK=1 , SYN=1 , 客戶端序列號 seq=x ,客戶端進入等待狀態,
第二次握手
-
【服務端】收到請求報文,將收到的報文快取起來,快取客戶端 seq=x
-
【服務端】向【客戶端】發送確認報文,生成一個【服務端】seq=y ,標記 ACK=1 ,SYN=1 ,【服務端】自己的序列號 seq=y ,確認序列號 ACK_Number=x+1 ,發送給【客戶端】
第三次握手
-
【客戶端】收到服務端發送的確認報文,將收到的報文存起來,快取【服務端】seq=y
-
【客戶端】發送確認報文給【服務端】,標記 ACK=1,SYN=0 ,【客戶端】自己的序列號 seq=x+1,確認序列號 ACK_Number=y+1
-
【客戶端】、【服務端】都會進入 ESTABLISHED (連接已建立狀態)
TCP 四次揮手
圖解

四次揮手程序詳解
第一次揮手:
1、【客戶端】向【服務端】發送釋放連接報文,并停止發送資料,主動關閉 TCP 連接
2、標記 FIN=1 ,【客戶端序列號】 seq=x ,該序號等于前面已經傳送過去的資料的最后一個位元組的序號加 1
3、這時,客戶端 FIN—WAIT-1 (終止等待 1)狀態,等待服務端確認
第二次揮手:
1、【服務端】收到釋放連接報文,將收到的報文快取起來,快取【客戶端】 seq=x
2、【服務端】向【客戶端】發出確認釋放報文,標記 ACK=1 ,【服務端序列號】 seq=y ,確認序列號 ACK_Number=a+1
(a 為【服務端】前面已經傳送過的資料的最后一個位元組的序號)
3、此時【服務端】進入 CLOSE—WAIT (關閉等待)狀態
4、此時 TCP 服務器行程應該通知上層的應用行程,因為【客戶端】到【服務端】這個方向的連接就釋放了,這時 TCP 處于半關閉狀態,即【客戶端】已經沒有資料要發了,
但【服務端】若發送資料,【客戶端】仍要接受,也就是說從【服務端】到【客戶端】這個方向的連接并沒有關閉,這個狀態可能會持續一些時間,
第三次揮手:
1、【客戶端】收到【服務端】確認報文,并快取起來
2、此時【客戶端】進入 FIN—WAIT (終止等待 2)狀態,等待【服務端】發起釋放連接報文
3、如果【服務端】沒有資料要發送給【客戶端】了,【服務端】的應用行程就會通知 TCP 釋放連接
4、此時【服務端】向【客戶端】發送釋放連接報文,標記 FIN=1 ,確認序列號 ACK_Number=a+1 (與第二次揮手的確認號一致),【服務端序號】 seq=z+1 (z 為半關閉狀態發送的資料的最后一個位元組的序號)
5、此時【服務端】進入最后確認狀態,等待【客戶端】確認
第四次揮手:
1、【客戶端】收到【服務端】釋放連接請求,必須發出確認
2、【客戶端】向【服務端】發送確認報文,標記 ACK=1 ,確認號序列號 ACK_Numbe=z+1+1 ,【客戶端序號】 seq=x+1 (x 為第一次揮手的 seq)
3、此時【客戶端】進入等待狀態,必須經過時間等待計時器設定的時間 2 倍 MSL(報文最大生存時間)后,【客戶端】才進入 CLOSED 狀態,
MSL 叫做最長報文壽命,RFC 建議設為 2 分鐘,實際應用中是 30 秒,
在這 2 倍 MSL 期間【客戶端】進入 TIME—WAIT 狀態后,要經過 4 分鐘才能進入到 CLOSED 狀態,
4、【服務端】只要收到了【客戶端】的確認后,就進入了 CLOSED 狀態
5、當【客戶端】和【服務端】都進入 CLOSED 狀態后,連接就完全釋放了
最后,下面是我整理出來的一份軟體測驗工程師發展方向知識架構體系圖,

希望大家能在這個成長程序中收益良多,可以說,這個程序會讓你痛不欲生,但只要你熬過去了,以后的生活就輕松很多,正所謂萬事開頭難,只要邁出了第一步,你就已經成功了一半,古人說的好“不積跬步,無以至千里,”等到完成之后再回顧這一段路程的時候,你肯定會感慨良多,
由于CSDN上傳圖片大小有限,有需要的朋友可以關注我的公眾號:程式員二黑,回復1,即可獲取原圖,
下面是一份配套的軟體測驗資源包:

上面是一些配套資源,對于軟體測驗的的朋友來說應該是最全面最完整的備戰倉庫,為了更好地整理每個模塊,我也參考了很多網上的優質博文和專案,力求不漏掉每一個知識點,很多朋友靠著這些內容進行復習,拿到了BATJ等大廠的offer,這個倉庫也已經幫助了很多的軟體測驗的學習者,希望也能幫助到你,
關注我的微信公眾號:程式員二黑,即可免費獲取!
最困難的時候,也就是我們離成功不遠的時候!如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我們的群:785128166 大家一起討論交流學習,
推薦閱讀
高薪程式員也躲不過35歲這一關…當能力與年齡脫節,我們該如何自救?
清華學姐熬了一個月肝出這份32W字Linux知識手冊,在 Github標星31K+
位元組跳動軟體測驗崗,前兩面過了,第三面HR天坑!竟然跟我說……
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292720.html
標籤:其他
