三次握手和四次揮手

今天來聊一下事實標準協議TCP/IP中傳輸層里TCP協議中,主機與服務器建立連接時的三次握手,和斷開連接時的四次揮手。

本博文分兩部分介紹,

   一:狀態詳解

   二:三次握手和四次揮手狀態介紹

這里總共涉及到十種狀態,其實總共有十一種狀態,接下來分別介紹一下它們;

一:狀態詳解

CLOSED:關閉—>即沒有任何連接狀態

LISTEN:監聽狀態—>服務器隨時監聽著,看有沒有誰發來連接請求

SYN_SENT:同步發送—>客戶端在第一次握手時向服務器發送請求建立連接后的狀態

SYN_RECEIVED:同步接收—>服務器收到客戶端的請求后,在第二次握手中回復客戶端確認信息并向其發送建立連接請求后的狀態(簡寫SYN_RCVD)

ESTABLISHED:已建立連接—>在客戶端收到服務端的確認及請求信號后,進行第三次握手即立刻回復確認信息,并且雙方都立即進入到已建立連接狀態,準備數據傳輸

FIN_WAIT_1:關閉等待1—>第一次揮手中,客戶端主動向服務器端發送斷開連接請求后進入此狀態

FIN_WAIT_2:關閉等待2—>第二次握手中,客戶端收到來自服務器端發來的斷開連接確認信息后,進入關閉等待2狀態,等待服務器端發來斷開連接請求

TIME_WAIT:時間等待—>第三次揮手中,客戶端也收到服務器端發來的斷開連接請求后,立即回復確認信息(第四次揮手),并進入此狀態

CLOSE_WAIT:等待關閉—>第一次揮手中,服務器端收到客戶端發來的斷開連接請求后,回復其確認信息(第二次揮手),并進入此狀態

LAST_ACK:最后確認—>第三次揮手中,服務器端將數據整理結束后,發送斷開連接信號給客戶端,并等待其確認信息

CLOSING:關閉中—>雙方同時發送斷開連接,等待對方確認(這種狀態在三次握手和四次揮手里并沒有表現)


:三次握手和四次揮手狀態介紹

我在這里將他們分為服務器端和客戶端介紹 ,如下圖所示(圖是自己畫的,有點丑*-*,但畢竟是自己總結的,可以加深印象),第一張圖是客戶端的狀態裝換圖,第二張是服務器端的狀態裝換圖。

三次握手和四次揮手

                                                                                        圖一

三次握手和四次揮手

                                                                                                           圖二

紅色圈住的是客戶端的三次握手,黃色圈住的是四次揮手。

其實,我們可以想象一下,這就像談戀愛一樣(雖然我是單身,但大概過程還是了解的*-*),必須有一方是主動的,所以當你中意對方時,是不是要去試探一下對方是否也喜歡你呀,這時你就想用某種方式去表達,(就像是第一次握手中我們客戶端主動給服務器端發信號,說我想與你建立連接,即(SYN=1),然后就進入一個SYN_SENT發送信號的狀態),這時對方若對你也有意思的話是不是會給你個回應呀,(這時就像第二次握手中,服務器端收到客戶端的請求信號后,若是想與他建立連接,就會給客戶端一個確認信號(ACK=1即收到了它發來的請求信號)并且也給客戶端一個請求連接信號(即我也想與你建立連接),然后進入SYN_RECEIVED(簡寫RCVD)接收狀態),然后這時,你們兩情相悅,是不是就可以建立正常男女朋友關系了??。【涂梢悦髂繌埬懙膩硗耍。。。ň拖竦谌挝帐种?,客戶端也收到了服務器發來的確認信號和建立連接請求,一看服務器端也挺樂意與它建立連接的,那就趕緊建立連接唄,就立即給服務器端一個確認信號(ACK=1),并且雙方立即進入ESTABLISHED狀態,開始數據傳輸了)。這樣想想就簡單了是不是,

當然關閉連接的過程也一樣。我們就想象一下分手的時候(當然還是希望有情人終成眷屬,可以白頭偕老的,但是,總會有那么些不愉快的事情發生是不是),分手也分很多種,有一方主動提出分手另一方被動接收的、有還沒說出分手就已經分開的(我的意思你懂的^-^)、還有雙方都準備分手的…….太多種,但今天就講一下,其中一方先主動分手的。我與你不愉快了,要分手了,那我就要主動給你一個分手信號“咱們不合適,分手吧”(就像第一次揮手,客戶端主動向服務器端發送了斷開連接信號(FIN=1分手信號),隨后客戶端就會進入FIN_WAIT_1關閉等待狀態1,而服務器進入CLOSE_WAIT等待關閉狀態),那你收到我的分手信息了,不管同不同意分手,是不是要給我一個回應?。ū热缯f挽留啊、那剛好我也同意分手啊之類的),你說你收到了我的分手信息,讓我先屢屢(就像第二次揮手中,服務器端收到了客戶端的分手信號,就給她一個回應(ACK=1),說我收到了,客戶端就會進入FIN_WAIT_2關閉等待2狀態),那要是你也考慮清楚了,反正想分手了,以后在一起也不開森,就開始將我們之間的帳算算(服務器回給客戶端確認信號后,就開始整理數據,該發的發完,該收的收回來),省的以后因為某些東西拌嘴,分就分清楚,等你整理清楚了,那你也給我說了“好,那咱們就分手吧”(這時進入第三次揮手,服務器端也給客戶端一個分手信號(FIN=1),確定也要與它斷開連接,此時服務器端會進入LAST_ACK最后確認狀態(即等待客戶端回復)),我已經下定決心跟你分手并且已經主動提出來了,所以當聽到你給我說分手后,我這邊會立即給你回復“好”(第四次握手,客戶端收到服務器端發來的分手信息后,立即給出一個確認信息(ACK=1),并且客戶端會進入TIME_WAIT時間等待狀態(時間較長),然后再進入CLOSED狀態,服務器端收到客戶端的確認后,立即進入CLOSED狀態,隨機進入LISTEN監聽狀態,隨時等待其他主機訪問),分手結束,好聚好散。

原創文章,作者:M.Sun,如若轉載,請注明出處:http://www.www58058.com/85837

(1)
M.SunM.Sun
上一篇 2017-09-01
下一篇 2017-09-02

相關推薦

  • PXE網絡引導系統自動化安裝CentOS7

     一.PXE 注意:安裝前 selinux 禁用,iptables 關閉 dhcp 服務器靜態IP地址  1.PXE的工作原理:      Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC  &nbsp…

    Linux干貨 2017-07-24
  • 馬哥教育網絡班21期+第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ~]# fdisk &n…

    Linux干貨 2016-08-30
  • N26-博客作業-week15

    1、總結sed和awk的詳細用法 sed: 語法結構 sed [OPTION]…’script’ [input-file]…[action] -r:支持擴展正則表達式 -n:不輸出模式空間中的內容至屏幕 -e script1 -e script2 -e script3:指定多腳本運行 -f /path/to/script_file:從指定的文件中讀取…

    Linux干貨 2017-07-14
  • Liunx系統命令的使用格式

    Liunx系統命令的格式 基本格式如下:               ~]# COMMAND OPTIONS ARGUMENTS COMMAND:      發起一個命令,請求內核將某個二進…

    Linux干貨 2016-10-28
  • 推薦-Nginx專題: upstream模塊和緩存的簡單使用

    Nginx專題: upstream模塊和緩存的簡單使用 nginx 負載均衡 Nginx專題: upstream模塊和緩存的簡單使用 前言: 實驗拓撲 實驗環境 Nginx_Upstream模塊介紹 upstream使用方法 upstream使用示例 Nginx_Cache介紹 緩存靜態資源 總結 前言: 本文接著上篇Nginx專題: 從編譯安裝到…

    Linux干貨 2016-04-07
  • nginx

    Linux干貨 2016-10-30
欧美性久久久久