TCP常見的幾種狀態

2021-09-27 11:24:24 字數 1581 閱讀 1050

tcp常見的幾種狀態:

closed:初始狀態,表示沒有任何連線。

listen:server端的某個socket正在監聽來自遠方的tcp埠的連線請求。

syn_sent:傳送連線請求後等待確認資訊。當客戶端socket進行connect連線時,會首先傳送syn包,隨即進入syn_sent狀態,然後等待server端傳送三次握手中的第2個包。

syn_received:收到乙個連線請求後回送確認資訊和對等的連線請求,然後等待確認資訊。通常是建立tcp連線的三次握手過程中的乙個中間狀態,表示server端的socket接收到來自client的syn包,並作出回應。

established:表示連線已經建立,可以進行資料傳輸。

fin_wait_1:主動關閉連線的一方等待對方返回ack包。若socket在established狀態下主動關閉連線並向對方傳送fin包(表示己方不再有資料需要傳送),則進入fin_wait_1狀態,等待對方返回ack包,此後還能讀取資料,但不能傳送資料。在正常情況下,無論對方處於何種狀態,都應該馬上返回ack包,所以fin_wait_1狀態一般很難見到。

fin_wait_2:主動關閉連線的一方收到對方返回的ack包後,等待對方傳送fin包。處於fin_wait_1狀態下的socket收到了對方返回的ack包後,便進入fin_wait_2狀態。由於fin_wait_2狀態下的socket需要等待對方傳送的fin包,所有常常可以看到。若在fin_wait_1狀態下收到對方傳送的同時帶有fin和ack的包時,則直接進入time_wait狀態,無須經過fin_wait_2狀態。

time_wait:主動關閉連線的一方收到對方傳送的fin包後返回ack包(表示對方也不再有資料需要傳送,此後不能再讀取或傳送資料),然後等待足夠長的時間(2msl)以確保對方接收到ack包(考慮到丟失ack包的可能和迷路重複資料報的影響),最後回到closed狀態,釋放網路資源。

close_wait:表示被動關閉連線的一方在等待關閉連線。當收到對方傳送的fin包後(表示對方不再有資料需要傳送),相應的返回ack包,然後進入close_wait狀態。在該狀態下,若己方還有資料未傳送,則可以繼續向對方進行傳送,但不能再讀取資料,直到資料傳送完畢。

last_ack:被動關閉連線的一方在close_wait狀態下完成資料的傳送後便可向對方傳送fin包(表示己方不再有資料需要傳送),然後等待對方返回ack包。收到ack包後便回到closed狀態,釋放網路資源。

closing:比較罕見的例外狀態。正常情況下,傳送fin包後應該先收到(或同時收到)對方的ack包,再收到對方的fin包,而closing狀態表示傳送fin包後並沒有收到對方的ack包,卻已收到了對方的fin包。有兩種情況可能導致這種狀態:其一,如果雙方幾乎在同時關閉連線,那麼就可能出現雙方同時傳送fin包的情況;其二,如果ack包丟失而對方的fin包很快發出,也會出現fin先於ack到達。

tcp鏈結的幾種狀態

說明 通常情況下 乙個正常的tcp連線,都會有三個階段 1 tcp三次握手 2 資料傳送 3 tcp四次揮手 裡面的幾個概念 客戶端發起乙個和服務建立tcp鏈結的請求,這裡是syn j 服務端接受到客戶端的建立請求後,返回兩個資訊 syn k ack j 1 客戶端在接受到服務端的ack資訊校驗成功...

幾種常見的狀態碼

原文 2xx系列 代表請求已成功被伺服器接收 理解 並接受。200狀態碼 表示請求已成功,請求所希望的響應頭或資料體將隨此響應返回 201狀態碼 表示請求成功並且伺服器建立了新的資源,且其 uri 已經隨location 頭資訊返回。3xx系列 代表需要客戶端採取進一步的操作才能完成請求,這些狀態碼...

HTTP 常見的幾種狀態碼

當使用者試圖通過http或檔案傳輸協議 ftp 訪問一台正在執行internet資訊服務 iis 的伺服器上的內容時,iis返回乙個表示該請求的狀態的數字 該狀態 可以指明具體請求是否已成功,還可以揭示請求失敗的確切原因。這些狀態 表示臨時的響應。客戶端在收到常規響應之前,應準備接收乙個或多個1xx...