TCP協議的三次握手與四次揮手

2021-10-20 12:55:10 字數 1034 閱讀 3892

一. 建立連線—三次握手

首先客戶端和服務端都是關閉狀態,也就是closed狀態。伺服器端進入乙個監聽的listen狀態,阻塞等待客戶端的連線

第一次握手:客戶端向服務端傳送乙個syn的標誌位以請求連線。此時客戶端進入syn_send狀態,也就是開始阻塞等待伺服器的應答。

第二次握手:伺服器收到了客戶端的syn連線請求,也就處於syn_rcvd狀態。由於現在客戶端向服務端單方面請求連線了,但是服務端還沒有傳送連線請求給客戶端,要想雙方都建立連線的話,就需要服務端也向客戶端傳送乙個syn請求。同時,我們還需要響應給客戶端乙個ack應答,告訴客戶端我們接收到了你的連線請求。

第三次握手:客戶端接收到服務端的ack應答和syn連線之後,說明連線已經成功的建立,所以客戶端處於established狀態。但是此時只有客戶端知道連線建立完成,還需要返回給服務端乙個ack應答,告訴伺服器我收到了你的連線請求。當服務端接收到最後乙個ack應答之後,就說明雙方已經建成了連線通訊,服務端也處於乙個extablished狀態。

二. 關閉連線—四次揮手 在資料傳輸之後,假設我們先由客戶端來進行請求關閉連線。

第一次揮手:客戶端呼叫close()方法關閉連線,向服務端傳送乙個fin關閉連線請求,此時客戶端就處於fin_wait1狀態。

第二次揮手:當服務端收到客戶端的fin之後,處於close_wait狀態,說明伺服器要準備關閉連線了。同時系統層面就會自動先返回乙個ack應答,告訴客戶端我收到了你的關閉連線請求。此時收到ack應答的客戶端處於乙個fin_wait2狀態,也就是繼續等待的狀態。

第三次揮手:服務端手動呼叫close()方法關閉連線,傳送給客戶端乙個fin結束報文段。此時服務端會進入last_ack的狀態,等待最後乙個ack的到來,以確定客戶端收到了伺服器傳送的fin。

第四次揮手:客戶端收到伺服器發來的結束報文段之後,進入time_wait狀態,同時傳送給服務端最後乙個ack響應,告訴伺服器我收到了你的結束報文段,並等待報文的最大生存時間之後,確保對端收到最後乙個ack,再進入closed狀態,完成連線關閉。同時服務端收到最後乙個ack應答之後,由last_ack狀態轉換為closed狀態,徹底關閉連線。

TCP三次握手與四次揮手協議

tcp 在不可靠的網路通道傳進行可靠的訊息傳輸 1 tcp首部資訊 2 三次握手 syn synchronrous 同步訊息序列,發起乙個新的連線 tcp三次握手過程中,攜帶syn 同步序號 seq 訊息序號 rwd 視窗大小 1 urg 緊急指標 urgent pointer 有效。2 ack 確...

TCP協議三次握手與四次揮手

其實該過程就像一次打 前去拜訪 1 客戶端 喂?伺服器麼,我今天要去拜訪你。syn 1 seq x 2 伺服器 哦,好的,我去門口接你。syn 1 ack 1 seq y ack x 1 3 客戶端 我到了,你真客氣,我要進來了。ack 1 seq x 1 ack y 1 客戶端主動開啟,伺服器被動...

TCP協議,三次握手與四次揮手

tcp報文格式 每行簡介 1.源埠和目的埠各佔2個位元組,即16位。2.32位序號,佔4個位元組,tcp連線中傳送的位元組流中每個位元組都按順序編號。例如,一段報文的序號字段值是 301 而攜帶的資料共有100欄位,顯然下乙個報文段 如果還有的話 的資料序號應該從401開始。3.32位確認序號。是期...