三次握手和四次揮手

今天來聊一下事實標準協議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)接收狀態),然后這時,你們兩情相悅,是不是就可以建立正常男女朋友關系了??。【涂梢悦髂繌埬懙膩硗耍。。。ň拖竦谌挝帐种校蛻舳艘彩盏搅朔掌靼l來的確認信號和建立連接請求,一看服務器端也挺樂意與它建立連接的,那就趕緊建立連接唄,就立即給服務器端一個確認信號(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 20:28
下一篇 2017-09-02 11:41

相關推薦

  • FHS文件系統

    一、什么是FHS?   Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。 二、它的來源歷史 …

    Linux干貨 2016-10-17
  • 內核升級和救援模式

    http://www.cnblogs.com/wzhuo/p/6728336.html 

    Linux干貨 2017-04-24
  • 第六周 N21 總有刁民想害朕

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;    %s/\(^[[:space:]]\)/#\1/ 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.…

    Linux干貨 2016-08-08
  • Linux之文件管理及范例

    1、Linux上的文件管理命令   目錄管理類命令:mkdir,rmdir    mkdir [OPTION]… DIRECTORY…     -p: 自動按需創建父目錄;     -v: verbose,顯示…

    Linux干貨 2016-09-27
  • 馬哥教育網絡班21期-第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1.復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# [root@junfeng ~]# cp /etc/rc.d/rc.sysinit /tmp [root@junfeng&nbs…

    Linux干貨 2016-08-15
  • rsync+inotify 實現數據實時同步

        Rsync (Rmote sync)是一款非常好的數據同步工具,能夠通過對比同步雙方的數據變動,實現增量同步,還可以通過LAN/WAN實現遠程多臺主機間文件的同步,還能結合crond任務計劃來執行自動備份,又可以結合ssh實現遠程數據備份的安全,種種特性使他看起來相當優秀。但如果需備份數據十分龐大時,它的不足之處就顯現出來了,比如…

    Linux干貨 2015-07-24
欧美性久久久久