成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

TCP協議的狀態解析,超全~

網絡 網絡管理
今天和大家說說,TCP協議的狀態解析。大家可以看看下圖,接下來我們會詳細說明。

今天和大家說說,TCP協議的狀態解析。大家可以看看下圖,接下來我們會詳細說明。

發起握手階段

CLOSED:表示初始狀態。

LISTEN:表示服務器端的某個SOCKET處于監聽狀態,可以接受連接。

SYN_RCVD:表示接受到了SYN報文,在正常情況下,這個狀態是服務器端的SOCKET在建立TCP連接時的三次握手會話過程中的一個中間狀態,很短暫,基本上用netstat你是很難看到這種狀態的,除非你特意寫了一個客戶端測試程序,故意將三次TCP握手過程中最后一個ACK報文不予發送。因此這種狀態時,當收到客戶端的ACK報文后,它會進入到ESTABLISHED狀態。

SYN_SENT:這個狀態與SYN_RCVD遙相呼應,當客戶端SOCKET執行CONNECT連接時,它首先發送SYN報文,因此也隨即它會進入到了SYN_SENT狀態,并等待服務端的發送三次握手中的第2個報文。SYN_SENT狀態表示客戶端已發送SYN報文。

ESTABLISHED:表示連接已經建立,這是雙方進行正常通信所處的狀態。

主動關閉階段

  • FIN_WAIT_1:本地發送FIN(用于結束連接的)數據包后即可進入該狀態,等待對方的應答。一般一端發送完其所要發送的數據后,即可發送FIN數據包,此時發送通道被關閉,但仍可繼續接受遠端發送的數據包。在接受到遠端發送的對于FIN數據包的ACK應答后,將進入FIN_WAIT_2狀態。
  • FIN_WAIT_2:進入該狀態表示本地已經接收到遠端發送的對于本地之前發送的FIN數據包的ACK應答。進入該狀態后,本地仍然可以繼續接受遠端發送給本地的數據包。在接受到遠端發送的FIN數據包后(表示遠端也已經發送完數據),本地將發送一個應答數據包,并進入TCP_TIME_WAIT狀態。TIME_WAIT狀態存在的時間被稱為2MSL時間,這一方面是為避免本地發送的應答數據包丟失,另一方面避免一個新創建的套接字接收到舊套接字中遺留的數據包。

其實FIN_WAIT_1和FIN_WAIT_2狀態的真正含義都是表示(主動關閉階段)等待對方的FIN報文。

而這兩種狀態的區別是:

FIN_WAIT_1狀態實際上是當SOCKET在ESTABLISHED狀態時,它想主動關閉連接,向對方發送了FIN報文,此時該SOCKET立即進入到FIN_WAIT_1狀態。而當對方回應ACK報文后,則進入到FIN_WAIT_2狀態。當然在實際的正常情況下,無論對方何種情況下,都應該馬上回應ACK報文,所以FIN_WAIT_1狀態一般是比較難見到的,而FIN_WAIT_2狀態還有時常常可以用netstat看到。

  • FIN_WAIT_2:上面已經詳細解釋了這種狀態,實際上FIN_WAIT_2狀態下的SOCKET,表示半連接,也即有一方要求close連接,但另外還告訴對方,我暫時還有點數據需要傳送給你,稍后再關閉連接。
  • TIME_WAIT::表示收到了對方的FIN報文,并發送出了ACK報文,就等2MSL(2倍報文段壽命)后即可回到CLOSED可用狀態了。如果FIN_WAIT_1狀態下,收到了對方同時帶FIN標志和ACK標志的報文時,可以直接進入到TIME_WAIT狀態,而無須經過FIN_WAIT_2狀態。

該轉狀態被稱為2MSL等待狀態。如果在此期間接收到遠端發送的FIN數據包,則表示之前在TCP_FIN_WAIT_2狀態發送的ACK應答數據包在傳輸中丟失或者長時間被延遲,從而造成了遠端重新發送了FIN數據包,此時重復ACK應答數據包。一旦2MSL時間到期,則將進入TCP_CLOSED狀態,即完成關閉操作。

  • CLOSING:這種狀態比較特殊,實際情況中應該是很少見,屬于一種比較罕見的例外狀態。正常情況下,當你發送FIN報文后,按理來說是應該先收到(或同時收到)對方的ACK報文,再收到對方的FIN報文。但是CLOSING狀態表示你發送FIN報文后,并沒有收到對方的ACK報文,反而卻也收到了對方的FIN報文。

什么情況下會出現此種情況呢?其實細想一下,也不難得出結論:那就是如果雙方幾乎在同時close一個SOCKET的話,那么就出現了雙方同時發送FIN報文的情況,也即會出現CLOSING狀態,表示雙方都正在關閉SOCKET連接。

被動關閉階段

CLOSE_WAIT:當對方率先發送FIN報文給自己,本地系統毫無疑問地會回應一個ACK報文給對方,此時套接字狀態從ESTABLISED進入到CLOSE_WAIT狀態。接下來呢,實際上你真正需要考慮的事情是察看你是否還有數據發送給對方,如果沒有的話,那么你也就可以close這個SOCKET,發送FIN報文給對方,也即關閉連接。所以你在CLOSE_WAIT狀態下,需要完成的事情是等待你去關閉連接。

該狀態存在于被動關閉(后關閉)的一端。當接收到遠端發送的FIN數據包后,本地發送一個ACK應答數據包,并將該套接字狀態從ESTABLISED設置為CLOSE_WAIT。本地可以繼續向遠端發送數據包,在發送完所有的數據后,本地將發送一個FIN數據包關閉本地發送通道,并將狀態設置為LAST_ACK狀態,等待遠端對FIN數據包的應答數據包。

LAST_ACK:這個狀態還是比較容易好理解的,它是被動關閉一方在發送FIN報文后,最后等待對方的ACK報文。當收到ACK報文后,也即可以進入到CLOSED可用狀態了。

 

責任編輯:趙寧寧 來源: 思科CCIE俱樂部
相關推薦

2019-07-28 21:05:47

ICMPIP網絡協議

2013-09-17 13:10:17

TCP協議網絡協議

2010-07-05 17:04:42

Netstat TCP

2014-10-10 15:28:08

TCP

2015-11-09 09:58:56

2010-09-08 15:15:12

TCP IP協議棧

2015-09-15 10:09:09

TCP網絡協議

2018-10-31 14:40:19

TCP協議ISO

2020-06-01 14:15:57

物聯網通信協議無線通訊

2019-06-12 14:18:31

TCPIP協議DNS

2013-08-01 10:01:02

網絡協議TCP協議UDP協議

2019-04-11 17:44:08

2015-01-06 09:11:54

TCP

2011-08-19 15:32:06

2010-06-18 14:37:20

TCP IP協議

2015-03-27 10:18:25

TCP協議CLOSE_WAIT狀服務器異常

2024-11-07 16:39:42

SpringBoo常用注解Bean

2011-03-07 17:25:33

ProFTPD啟動

2011-03-07 17:15:52

ProFTPD配置

2015-10-13 15:09:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人国产a | 久久久久久国产精品 | 国内精品一区二区三区 | japanhd美女动 | 伊人久久成人 | 欧美性生活一区二区三区 | 日本久久网 | 日日草夜夜草 | a视频在线 | 黑人一级黄色大片 | 在线婷婷| aaa国产大片 | 成人精品鲁一区一区二区 | 性一交一乱一透一a级 | 国产一区免费视频 | 97国产爽爽爽久久久 | a级在线免费视频 | 日韩不卡视频在线 | 成人午夜视频在线观看 | 亚洲手机视频在线 | 久久精品国产一区 | 一级特黄网站 | 欧美精品中文字幕久久二区 | 国产色网 | 国产日韩欧美一区二区 | 激情五月婷婷综合 | 久久久久久久久国产 | 国产精品区一区二区三 | 中文字幕黄色大片 | 中文字幕免费中文 | 九九热精 | 九九热精品免费 | 一区二区三区不卡视频 | 欧美久久精品 | 亚洲天堂中文字幕 | 视频一区二区在线观看 | 国产综合精品一区二区三区 | 天天综合91| 奇米超碰在线 | 国产免费观看久久黄av片涩av | 国产欧美日韩综合精品一区二区 |