置位概念:根據TCP的包頭字段,存在三個重要的標識ACK SYN FIN服務器
ACK:表示驗證字段ide
SYN:位數置1,表示創建TCP鏈接it
FIN:位數置1,表示斷開TCP鏈接class
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創建請求已獲得了驗證。im
(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序號的數據包後,就能創建此次鏈接了。img
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請求的驗證回覆。