三次握手原理

拿圖舉例:圖上是簡單的一個抓包請求(請求我服務器的一個網頁):

第一次握手:建立連接時,客戶端發送SYN包(syn=x)到服務器,並進入SYN_SENT狀態,等待服務器確認;

 //x 屬於序列號,當主機開啓一個TCP會話時,他的初始序列號是隨機的,可能是0和4,294,967,295之間的任意值;
// 我的第一次請求客戶端開啓TCp會話生成的序列號是1887825286 


第二次握手:

當服務端收到來自客戶端請求連接的報文後,如果同意鏈接則會向客戶端發送一個應答,

即SYN+ACK的包.這個包裏面的ack的值等於客戶端傳過來的序列號+1:即ack=x+1;

同時自己也會初始化一個序列號爲發送到客戶端

//所以這裏的ack = 客戶端傳來的序列號 (1887825286 )+1 = 1887825287
//我這裏服務端生成的序列號是 1163132607


第三次握手

當客戶端收到連接同意的應答後,還要向服務端發送一個確認報文段,表示:服務端發來的連接同意應答已經成功收到。

此時向服務端發送一個ACK報文:sql是還是1887825287 ;ACK爲第二次握手 服務端初始化的序列號+1: 爲1163132608

 

三次握手結束後服務器返回返回包信息

 

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