TCP的鏈接和釋放

 

TCP的鏈接和釋放

 

TCP傳輸控制協議,是一個面向鏈接的協議。在運用此協議進行數據傳輸前都會進行鏈接的創建工做(三次握手);當數據傳輸完畢,鏈接的雙方都會通知對方要釋放此鏈接(四次揮手)。網絡

認識TCP標誌位

SYN(synchronous創建聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)

三次握手

  • 第一次握手:客戶端發送一個TCP標誌位SYN=1,ACK=0的數據包給服務端,並隨機會產生一個Sequence number=3233.當服務端接收到這個數據後,服務端由SYN=1可知客戶端是想要創建鏈接;spa

  • 第二次握手:服務端要對客戶端的聯機請求進行確認,向客戶端發送應答號ACK=一、SYN=1
    確認號Acknowledge number=3234,此值是客戶端的序列號加1,還會產生一個隨機的序列號Sequence number=36457,這樣就告訴客戶端能夠進行鏈接;.net

  • 第三次握手:客戶端收到數據後檢查Acknowledge number是不是3233+1的值,以及ACK的值是否爲1,若爲1,host1會發送ACK=一、確認號碼Acknowledge number=36457,告訴服務端,你的請求鏈接被確認,鏈接能夠創建。code

四次揮手

  • 第一次揮手:當傳輸的數據到達尾部時,客戶端向服務端發送FIN=1標誌位;可理解成,客戶端向服務端說,我這邊的數據傳送完成了,我準備斷開了鏈接;get

  • 第二次揮手:因TCP的鏈接是全雙工的雙向鏈接,關閉也是要從兩邊關閉;當服務端收到客戶端發來的FIN=1的標誌位後,服務端不會馬上向客戶端發送FIND=1的請求關閉信息,
    而是先向客戶端發送一個ACK=1的應答信息,表示:你請求關閉的請求我已經收到,但我可能還有數據沒有完成傳送,你再等下,等我數據傳輸完成了我就告訴你;定時器

  • 第三次揮手:服務端數據傳輸完成,向客戶端發送FIN=1,客戶端收到請求關閉鏈接的請求後,客戶端就明白服務端的數據已傳輸完成,如今能夠斷開鏈接了,請求

  • 第四次揮手:客戶端收到FIND=1後,客戶端仍是怕因爲網絡不穩定的緣由,怕服務端不知道他要斷開鏈接,因而向服務端發送ACK=1確認信息進行確認,
    把本身設置成TIME_WAIT狀態並啓動定時器,若是服務端沒有收到ACK,服務端TCP的定時器到達後,會要求客戶端從新發送ACK,當服務端收到ACK後,服務端就斷開鏈接;
    當客戶端等待2MLS(2倍報文最大生存時間)後,沒有收到服務端的重傳請求後,他就知道服務端已收到了ACK,因此客戶端此時才關閉本身的鏈接。im

相關文章
相關標籤/搜索