TCP協議三次握手四次揮手過程


TCP協議是傳輸控制協議,是以=一個面向連接,在運用此協議進行數據傳輸的時候會進行連接工作 ,(三次握手)當傳輸完畢後,雙方都會通知彼此釋放連接(四次揮手)。

TCP標誌位:

SYN (建立聯機) 

ACK (確認)

PUSH (傳送)

FIN (結束)

RST (重置)

URG (緊急)

Sequence number (順序號碼)

Acknowledge number (確認號碼)

圖解TCP 三次握手與揮手:


三次握手過程:

第一次握手:

hsot1發送一個TCP標誌位,SYN =1 的數據包 ,並隨機產生一個 seq number 的數據包發送給host2, 當host2接收到這個數據後,host2根據SYN=1 可知客戶端(host1)想要建立連接。

第二次握手:host2 要對客戶端(host1)請求進行確認,向host1 發送 ack number=host1的 seq number+1),ACK = 1,SYN=1  並隨機產生一個seq number 的數據包,這樣就告訴host1 可以進行連接。

第三次握手:

host1收到後會檢查ack number 是否正確 ,即第一次發送的seq number+1  以及碼 ACK =1 ,若正確host1會發送ACK=1和 ack number =host2 seq+1),若主機收到確認seq number 值與ack=1 則連接建立成功。

 

 一個完整的三次握手就是 請求-----應答------再次確認

  四次揮手的過程:

由於TCP 連接是全雙功的,因此每一個方向都必須進行單獨關閉,這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向上的連接。

第一次揮手:

當傳輸的數據到達數據的尾部的時候,host1 host2 發送FIN=1 標誌位,可以理解成host1 host2說,我這邊數據已經傳輸完成,準備斷開連接。

第二次揮手:

因爲TCP的連接需要從兩邊關閉,當host2收到host1發送的FIN=1 標誌位後,host2不會立刻向host1發送FIN=1的請求關閉信息,而是向host1發送一個ACK應答信息,表示 :你請求關閉請求我已經收到,但我可能還有數據沒有完成,你在等下,等待數據除傳輸完畢後就會告訴你。

第三次揮手:

 當host2 數據傳輸完後,向host1發送FIN=1host1收到請求關閉連接的請求後,host1 就明白host2數據已經傳輸完成,可以斷開連接。

第四次揮手:

 Host1收到FIN=1 hos1還是怕有與網絡不穩定的原因,怕host2不知道自己要斷開連接,於是向host2發送ACK=1 ,確認信息進行確認,把自己設置爲TIME_WITE狀態並啓動定時器,如果host2沒有收到ACK host2端的定時器到達後,會要求host1重新發送ACK,當host2收到ACK後就會斷開連接,當host1等待2mls(兩倍報文最大生存時間)後沒有收到重傳請求,就知道host2已收到ACK,所以host1此時關閉自己。

 在TCP 連接的建立與釋放的過程中,host1 host2 並沒有嚴格客戶端與服務器端之分,誰先發起請求誰就是客戶端。

  本篇博文主要參考http://zhaochj.blog.51cto.com/368705/1317226 感謝,感謝 感謝。



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