網路程式設計6 TIME WAIT狀態

2021-10-01 06:51:32 字數 1067 閱讀 1379

1、為了在四次揮手中確保對方收到自己傳送的ack。

2、為了防止原鏈結斷開後又重新開啟乙個新的相同的鏈結(埠、ip、目的ip、目的埠都相同),迷走報文對新的鏈結產生影響。

time_wait的時間在linux下通常是設定為60s。有的系統設定為2msl。

2msl一般是從主機1接收到fin後傳送ack開始計時到收到fin為止的時間(rfc793中規定msl的時間為2分鐘,linux實際設定為30秒)

time_wait的危害

一、資源占用

二、對埠資源的占用

time_wait的優化

1、net.ipv4.tcp_max_tw_buckets

乙個暴力的方法是通過sysctl命令,將系統值調小。這個值預設是18000,當系統處於time_wait的連線一旦超過這個值,系統就會將所有的time_wait鏈結狀態重置,並且只列印警告資訊。這個方法過於暴力,而且治標不治本,帶來的問題遠比解決的問題多,不推薦使用。

2、so_linger設定 (可以跳過time_wait狀態也可以設定time_wait的等待時間)

int

setsockopt

(int sockfd,

int level,

int optname,

const

void

* optval, socklen_t optlen)

;struct linger

struct linger so_linger;

so_linger.l_onoff =1;

so_linger.l_linger =0;

setsockopt

(s, sol_socket, so_linger,

&so_linger,

sizeof

(so_linger)

);

3、net.ipv4.tcp_tw_reuse 可以復用sock

網路程式設計 TIME WAIT和2MSL

當客戶端接收到服務端傳送的fin後,即進入time wait狀態。客戶端在time wait狀態需要維持2個msl時間。msl 是max segment lifetime縮寫,值ip 資料報在英特網中最大的存活時間。time wait有以下兩個原因 1 伺服器可能無法收到客服傳送的最終ack,導致伺...

網路程式設計6

1 ip層中,有icmp 網際控制報文協議。icmp用於報告網路上的某些出錯的情況。2 arp 位址解析協議 addressresolution protocol 是根據ip位址獲取實體地址的乙個tcp ip協議。3 乙太網的資料格式 乙太網用48bit 6位元組 來表示原位址和目標位址,如mac位...

網路程式設計中的11種狀態

tcp連線的11種狀態變遷 1 先上圖 2 全部11種狀態 2.1 客戶端獨有的 1 syn sent 2 fin wait1 3 fin wait2 4 closing 5 time wait 2.2 伺服器獨有的 1 listen 2 syn rcvd 3 close wait 4 last a...