1. 程式人生 > >C/S 伺服器與客戶端連線三次握手與三次揮手原理

C/S 伺服器與客戶端連線三次握手與三次揮手原理

前言

TCP(Transmission Control Protocol)網路傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,資料傳輸前建立連線的工作要經過三次握手,資料傳輸後斷開連線的工作要經過四次揮手。

工作過程

–TCP標誌位:
- TCP共有6個標誌位,分別是:
- SYN(synchronous),建立聯機。
- ACK(acknowledgement),確認。
- PSH(push),傳輸。
- FIN(finish),結束。
- RST(reset),重置。
- URG(urgent),緊急。

avatar

三次握手建立連線闡述:

  • 第一次握手:客戶端要和服務端進行通訊,首先要告知服務端一聲,遂發出一個SYN=1的連線請求訊號,”服務端哥哥,我想給你說說話”。

  • 第二次握手:當服務端接收到客戶端的連線請求,此時要給客戶端一個確認資訊,”我知道了(ACK),我這邊已經準備好了,你現在能連嗎(SYN)”。

  • 第三次握手:當客戶端收到了服務端的確認連線資訊後,要禮貌的告知一下服務端,“好的,咱們開始聯通吧(ACK)”。

到此整個建立連線的過程已經結束,接下來就是雙方你一句我一句甚至同時交流傳遞資訊的過程了。

四次揮手斷開連線闡述:

  • 第一次揮手:雙方交流的差不多了,此時客戶端也已經結尾了,接下來要斷開通訊連線,所以告訴服務端“我說完了(FIN)”,此時自身形成等待結束連線的狀態。

  • 第二次揮手:服務端知道客戶端已經沒話說了,服務端此時還有兩句心裡話要給客戶端說,“我知道你說完了(ACK),我再給你說兩句,&*……%¥”。

  • 第三次揮手:此時客戶端洗耳恭聽繼續處於等待結束的狀態,伺服器端也說完了,自身此時處於等待關閉連線的狀態,並對告訴客戶端,“我說完了,咱們斷了吧(FIN)”。

  • 第四次揮手:客戶端收知道服務端也說完了,也要告訴服務端一聲(ACK),因為連線和斷開要雙方都按下關閉操作才能斷開,客戶端同時又為自己定義一個定時器,因為不知道剛才說的這句話能不能準確到達服務端(網路不穩定或者其他因素引起的網路原因),預設時間定為兩個通訊的最大時間之和,超出這個時間就預設伺服器端已經接收到了自己的確認資訊,此時客戶端就關閉自身連線,伺服器端一旦接收到客戶端發來的確定通知就立刻關閉伺服器端的連線。

到此為止雙方整個通訊過程就此終結。這裡要宣告一下:斷開連結不一定就是客戶端,誰都可以先發起斷開指令,另外客戶端和服務端是沒有固定標準的,誰先發起請求誰就是客戶端。