關於TCP的狀態機

2021-06-10 03:08:48 字數 624 閱讀 2823

另外:客戶端與伺服器端建立tcp/ip連線後關閉socket後,伺服器端連線的埠

狀態為time_wait

是不是所有執行主動關閉的socket都會進入time_wait狀態呢?

有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?

主動關閉的一方在傳送最後乙個 ack 後

就會進入 time_wait 狀態 停留2msl(max segment lifetime)時間

這個是tcp/ip必不可少的,也就是「解決」不了的。

也就是tcp/ip設計者本來是這麼設計的

主要有兩個原因

1。防止上一次連線中的包,迷路後重新出現,影響新連線

(經過2msl,上一次連線中所有的重複包都會消失)

2。可靠的關閉tcp連線

在主動關閉方傳送的最後乙個 ack(fin) ,有可能丟失,這時被動方會重新發

fin, 如果這時主動方處於 closed 狀態 ,就會響應 rst 而不是 ack。所以

主動方要處於 time_wait 狀態,而不能是 closed 。

time_wait 並不會占用很大資源的,除非受到攻擊。

還有,如果一方 send 或 recv 超時,就會直接進入 closed 狀態

關於TCP的狀態機

另外 客戶端與伺服器端建立tcp ip連線後關閉socket後,伺服器端連線的埠 狀態為time wait 是不是所有執行主動關閉的socket都會進入time wait狀態呢?有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?主動關閉的一方在傳送最後乙個 ack 後 就會進入 ti...

ip conntrack的TCP狀態機

深入理解ip conntrack的都知道,ip conntrack本身對於tcp維護了乙個狀態機,值得注意的是,該狀態機和tcp協議本身的狀態機相似但不相同。其區別如下 tcp狀態機 為tcp的兩端分別維護乙個狀態機,tcp連線的主動發起 被動發起和主動關閉 被動關閉的狀態機轉換是不同的。ip co...

ip conntrack的TCP狀態機

深入理解ip conntrack的都知道,ip conntrack本身對於tcp維護了乙個狀態機,值得注意的是,該狀態機和tcp協議本身的狀態機相似但不相同。其區別如下 tcp狀態機 為tcp的兩端分別維護乙個狀態機,tcp連線的主動發起 被動發起和主動關閉 被動關閉的狀態機轉換是不同的。ip co...