TCP三次握手與四次揮手

置位概念:根據TCP的包頭字段,存在三個重要的標識ACK SYN FIN

ACK:表示驗證字段

SYN:位數置1,表示建立TCP連接

FIN:位數置1,表示斷開TCP連接

1.TCP三次握手

TCP三次握手原理圖如下圖所示:

TCP三次握手與四次揮手

建立過程:

(1)數據包發起:由主機A發送建立TCP連接的請求報文,其中報文中包含seq序列號(seq=100),是由發送端隨機生成的,並且還將報文中SYN(SYN=1)字段置爲1,表示需要建立TCP連接。

(2)數據包接收與確認數據連接:主機B接收到主機A的請求後會回覆A發送的TCP連接請求報文,其中包含seq序列號,是由回覆端隨機生成的,並且將回復報文的SYN字段置爲1,而且會產生ACK字段,ACK字段數值(ACK=seq+1=100+1)是建立在A發送過來的seq序列號基礎上加1進行回覆的,以便A收到信息是知道自己的TCP建立請求已得到了驗證。

(3)回送確認數據包:主機A收到主機B發送的TCP建立驗證請求後,會使自己的序列號在接收到ACK的數值上加1表示。這時主機A的seq的值是主機B的ack的值(seq=ACK=seq+1=101),並且再次回覆ACK驗證請求(ACK=seq+1=301),在B端發送過來的seq基礎上加1(seq=ACK),進行回覆。

(4)取得最後確認:若一切都順利,在服務器收到帶有SYN=1且ack=301序號的數據包後,就能建立這次連接了。

2.TCP四次揮手

TCP四次揮手原理圖如下圖所示:

TCP三次握手與四次揮手

斷開過程說明:

(1)主機A發送斷開TCP連接請求的報文,其中報文中包含seq序列號,是有發送端隨機生成的,並且還將報文中FIN字段的值設爲1,表示需要斷開TCP連接。

(2)主機B會回覆A發送的TCP斷開請求報文,其中包含seq序列號,是由恢復段隨機生成的,而且會產生ACK字段,ACK字段的數值,是在A發送過來的seq序列號基礎上加1進行回覆的,以便A收到信息時,知曉自己的TCP斷開請求已得到了驗證。

(3)在主機B回覆完A的TCP斷開請求後,不會馬上就進行TCP連接的斷開,主機B先會確認確保斷開前,所有傳輸到A的數據是否已經傳輸完畢,一旦確認傳輸完畢就會將回復報文的FIN字段置爲1,併產生隨機seq序列號。

(4)主機A收到主機B的TCP斷開請求後,會回覆主機B 的斷開請求,包含隨機生成的seq字段和ack字段,ack字段會在主機B的TCP斷開請求的seq的基礎上加1,從而完成主機B請求的驗證回覆。

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