資料整理 TCP狀態變遷

2021-09-20 20:14:55 字數 2309 閱讀 7929

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

【資料整理】tcp狀態變遷

開始:

傳說中的3次握手。

1.closed:起始點。在超時或者連線關閉的時候進入此狀態。

2.listen:server 端在等待連線過來的時候所處的狀態,server 端為此要呼叫 socket,bind,listen 函式,進入此狀態。這稱為應用程式被動開啟(等待 client 端來連線)。

3.syn_sent: client 端發起連線,傳送 syn j 給 server 端。如果 server 端不能連線,則直接進入 closed 狀態。

4.syn_rcvd:跟3對應,server 端接收到 client 端的 syn j 請求,則 server 端由 listen 狀態進入 syn_rcvd 狀態。同時 server 端要回應乙個 ack j+1 ,同時傳送乙個 syn k 給 client 端;另外一種情況,client 端在傳送 syn 請求的同時接收到 server 端傳送的 syn 請求, client 端就會由 syn_sent 進入到 syn_rcvd 狀態。

5.established:跟4對應,client 端收到 syn k 和 ack j+1 後,將傳送 ack k+1 給 server 端,並進入 established 狀態;而 server 端 在收到 ack k+1 後也進入 established 狀態;至此雙方完成3次握手進入狀態,已經可以開始傳輸資料。

關閉:

關閉需要進行4次互動,這裡主動關閉的一方或被動關閉的一方不是指特指 server 端或者 client 端,是相對於誰先發起關閉請求來說的。

6.fin_wait_1: 主動關閉的一方,由狀態5進入此狀態。此處具體的動作是:傳送 fin m 給對方。

7.fin_wait_2: 主動關閉的一方,接收到對方的 ack m+1 ,進入此狀態。

8.close_wait:跟6對應,接收到 fin m 以後,被動關閉的一方進入此狀態。此處具體的動作是:接收到 fin m,同時傳送 ack m+1。

9.last_ack:被動關閉的一方,發起關閉請求,由狀態8進入此狀態。此處具體的動作是:傳送 fin n 給對方,接下來在接收到 ack n+1 時進入 closed 狀態。

10.closing:兩邊同時發起關閉請求時,會由fin_wait_1進入此狀態。此處具體的動作是:fin n,同時傳送 ack n+1。

11.time_wait:有3個狀態可以轉化成它:

a.跟7對應:主動關閉的一方在接收到被動關閉一方的 fin n 後,回應ack n+1,然後進入該狀態。

b.跟10對應: 雙方同時發起關閉,都接收到了 fin n,並回應了ack n+1,然後進入該狀態。

c.跟6對應:同時接收到 fin n 和 ack n+1,與b的區別在於本身發起的 fin n 回應的 ack n+1 先於對方的 fin n 請求到達,而b是 fin n 先到達。這種情況概率最小。

TCP狀態變遷

連線建立 連線建立分要經過三次握手過程 quote 1 客戶端傳送乙個syn段到指明客戶打算連線的伺服器的埠,報文段中要設定客戶端初始序號。2 伺服器發回包含伺服器的初始序號的syn報文段作為應答。同時,將確認序號設定為客戶的初始序號加1,並設定ack位標誌報文段為確認報文段。3 客戶端必須將確認序...

TCP狀態變遷流程

主動建立tcp鏈結情況 被動建立tcp鏈結情況 主動斷開鏈結的情況 被動斷開連線的情況 在time wait階段需要停留2倍的msl,msl即maximum segment lifetime,表示任何報文被丟棄前在網路內的最長時間,tcp ip詳解中額外註解了 rfc793指出msl為2min,然而...

TCP連線各狀態數量 以及TCP各狀態變遷流程

檢視linux系統中tcp連線情況 檢視系統tcp連線中各個狀態的連線數。netstat an awk tcp end 檢視和本機80埠建立連線並狀態在established的所有ip netstat an grep 80 grep esta awk awk begin sort uniq 輸出每個...