TCP狀態轉換

2022-07-27 10:48:10 字數 1611 閱讀 6600

1.tcp建立連線

tcp 是乙個面向連線的協議,無論哪一方向另一方傳送資料之前,都必須先在雙方之間建立一條連線。tcp使用三次握手( three-way handshake )協議來建立連線。

儘管發生的可能性極小,兩個應用程式同時彼此執行主動開啟的情況還是可能的。

當出現同時開啟的情況時,

兩端幾乎在同時傳送 syn ,並進入 syn_sent 狀態。當每一端收到 syn 時,狀態變為 syn_rcvd ,同時它們都再發 syn 並對收到的 syn 進行確認。當雙方都收到 syn 及相應的 ack 時,狀態都變遷為 established 。

2.tcp斷開連線

tcp 連線建立起來後,就可以在兩個方向傳送資料流。當 tcp 的應用程序再沒有資料需要傳送時,就發關閉命令。 tcp 通過傳送控制位 fin=1 的資料片來關閉本方資料流,但還可以繼續接收資料,直到對方關閉那個方向的資料流,連線就關閉。

終止乙個連線要經過 4 次握手,這是因為 tcp 的半關閉( half-close )造成的。由於乙個 tcp 連線是全雙工(即資料在兩個方向上能同時傳遞),因此每個方向必須單獨地進行關閉。關閉的原則就是當一方完成它的資料傳送任務後就能傳送乙個 fin 來終止這個方向連線。當一端收到乙個 fin ,它必須通知應用層另一端已經終止了那個方向的資料傳送。傳送 fin 通常是應用層進行關閉的結果。

如果連線雙方的應用程序同時發關閉命令,則雙方 tcp 在傳送完尚未處理的報文段後,傳送 fin 報文。各方 tcp 在 fin 前所發報文都得到確認後,發 ack 確認它收到的 fin 。各方在收到對方對 fin 的確認後,同樣等待一段時間再關閉連線。這稱之為同時關閉( simultaneous close )。

3.tcp狀態轉換綜述

tcp 狀態表

狀 態描 述

closed

關閉狀態,沒有連線活動或正在進行

listen

監聽狀態,伺服器正在等待連線進入

syn rcvd

收到乙個連線請求,尚未確認

syn sent

已經發出連線請求,等待確認

established

連線建立,正常資料傳輸狀態

fin wait 1

(主動關閉)已經傳送關閉請求,等待確認

fin wait 2

(主動關閉)收到對方關閉確認,等待對方關閉請求

timed wait

完成雙向關閉,等待所有分組死掉

closing

雙方同時嘗試關閉,等待對方確認

close wait

(被動關閉)收到對方關閉請求,已經確認

last ack

(被動關閉)等待最後乙個關閉確認,並等待所有分組死掉

TCP狀態轉換

tcp建立連線協議 三次握手 客戶端傳送乙個帶syn標誌的tcp報文到伺服器。這是三次握手過程中的報文1。伺服器端回應客戶端的,這是三次握手中的第2個報文,這個報文同時帶ack標誌和syn標誌。因此它表示對剛才客戶端syn報文的回應 同時又標誌syn給客戶端,詢問客戶端是否準備好進行資料通訊。客戶必...

TCP狀態轉換

tcp建立連線協議 三次握手 客戶端傳送乙個帶syn標誌的tcp報文到伺服器。這是三次握手過程中的報文1。伺服器端回應客戶端的,這是三次握手中的第2個報文,這個報文同時帶ack標誌和syn標誌。因此它表示對剛才客戶端syn報文的回應 同時又標誌syn給客戶端,詢問客戶端是否準備好進行資料通訊。客戶必...

TCP狀態轉換

從上面的tcp狀態遷移圖中可以看出,一共存在以下狀態 closed狀態不是乙個真正的狀態,而是這個狀態圖的假想起點和終點 初始狀態,進行監聽,但是當收到rst報文時,也會出現此狀態,即由syn rcvd狀態轉變為listen 接收到syn時候,從listen狀態轉變為syn rcvd 傳送syn包 ...