天天看點

TCP連接配接-三次握手和四次斷開 TCP連接配接——三次握手和四次斷開

 TCP連接配接——三次握手和四次斷開

1.面向連接配接

TCP是一個面向連接配接的協定,面向連接配接是指任何一方向對方發送資料前必須先建立通道,比如像打電話一樣:必須要等到對方的手機響鈴,并且對方接聽電話時,才能與對方通信。而UDP則不是面向連接配接的協定,基于UDP協定的通信雙方不需要事先與對方協商建立連接配接,也不管對方的IP位址與端口号是否存在,就發送資料,這個處理方式有點像手機發短信,不管對方手機是否欠費或關機,我們就隻管發送資訊。

2.三次握手

首先看下示例圖吧!

TCP連接配接-三次握手和四次斷開 TCP連接配接——三次握手和四次斷開

<!--StartFragment --> <!--StartFragment --> <!--StartFragment -->

<!--StartFragment -->

第一次握手:用戶端發送SYN包(序列号seq=100),等待伺服器的确認。

第二次握手:伺服器收到SYN包之後,必須确認用戶端,是以就要發送ACK包(ACK=101),同時,伺服器必須還必須發送SYN包(序列号seq=300)等用戶端的确認。

第三次握手:用戶端接收到SYN+ACK包之後,向伺服器發送确認包(ACK=301),次包發送完畢之後,兩者就可以進行資料交換了。

簡單的來說:

C(用戶端)           S(伺服器)

C:發送SYN給S

S:如果成功,傳回給C(SYN+ACK)

C:如果成功,傳回給S(ACK)

  還可用個形象的例子說下:TCP的三次握手過程可以看成是某男生追某女生的過程。第一次握手就好比是:男生向女生告白,說我喜歡你,然後男生等待女生的回應,第二次握手就好比是:女生收到男生的告白,而且該女生也喜歡次男生,她就可以給男生回應,說:我也喜歡你。第三次握手:男生收到該女生的回應,大喜,又發送消息過去,那我們正式交往吧!

3.四次斷開

同樣看下示例圖:

 <!--StartFragment -->

TCP連接配接-三次握手和四次斷開 TCP連接配接——三次握手和四次斷開

1.     用戶端發送資料完畢之後,提出要斷開連接配接

2.     伺服器收到FIN包後,對其作出反應,發送ACK包,确認這一方向的連接配接将關閉,

3.     等伺服器的應用程式做好關閉準備時,伺服器反方向發送FIN包,請求關閉連接配接請求,

4.     客戶機對伺服器發送的請求進行确認,并發送ACK包

也可簡單的概述:

C(用戶端)        S(伺服器)

C:發送FIN給S

S:如果成功,傳回給C(ACK)

S:應用程式做好關閉程式準備,發送FIN給C

C:如果成功,傳回給S(ACK)

同樣也可以用個形象的例子說明:這個過程相當于男女雙方分手的過程:1,女方向男方提出分手,等待男方的回應2,男方聽到這個消息後,就給女方回應說:好吧!分就分 3,過段時間,男方突然覺得很沒面子,想:“我一個大老爺們,應該是我提出分手”,于是,男方跟女方說:我們分手吧!4,這時,女方就直接罵了句“神經病”。

繼續閱讀