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

1.面向連接

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

2.三次握手


第一次握手:客戶端發送SYN包(序列號seq=100,等待服務器的確認。

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

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

簡單的來說:

C(客戶端) S(服務器)

C:發送SYNS

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

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

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

3.四次斷開

1.客戶端發送數據完畢之後,提出要斷開連接

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

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

4.客戶機對服務器發送的請求進行確認,併發送ACK

也可簡單的概述:

C(客戶端) S(服務器)

C:發送FINS

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

S:應用程序做好關閉程序準備,發送FINC

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

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


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