1. 程式人生 > >TCP/IP詳解--TCP連線中TIME_WAIT狀態過多

TCP/IP詳解--TCP連線中TIME_WAIT狀態過多

1、TIME_WAIT狀態主要出現在主動關閉連線的一方,當進入TIME_WAIT狀態需要等待2MSL(2個最大報文生存時間)時間後就會關閉連線,在window 下預設是4分鐘,在通過登錄檔來修改,在centos 7中是1分鐘,並且是無法修改的

2、查詢了很多文章,很多都說/proc/sys/net/ipv4/tcp_fin_timeout 是修改TIME_WAIT的時間,其實這是修改Fin-WAIT-2狀態的時間

為什麼會出現TIME_WAIT狀態?

1、為了正常關閉TCP,能等待對端重傳FIN包

2、保證舊的資料包在網路中因過期而消失

TCP分節可能由於路由器異常而“迷途”,在迷途期間,TCP傳送端可能因確認超時而重發這個分節,迷途的分節在路由器修復後也會被送到最終目的地,這個遲到的迷途分節到達時可能會引起問題。在關閉“前一個連線”之後,馬上又重新建立起一個相同的IP和埠之間的“新連線”,“前一個連線”的迷途重複分組在“前一個連線”終止後到達,而被“新連線”收到了。為了避免這個情況,TCP協議不允許處於TIME_WAIT狀態的連線啟動一個新的可用連線,因為TIME_WAIT狀態持續2MSL,就可以保證當成功建立一個新TCP連線的時候,來自舊連線重複分組已經在網路中消逝

具體可以檢視: