Home | Mirror | Search

9. TCP/IP

9.1. TCP 状态

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
状态:			描述
CLOSED:			无连接是活动的或正在进行
LISTEN:			服务器在等待进入呼叫
SYN_RECV:		一个连接请求已经到达,等待确认
SYN_SENT:		应用已经开始,打开一个连接
ESTABLISHED:	正常数据传输状态
FIN_WAIT1:		应用说它已经完成
FIN_WAIT2:		另一边已同意释放
ITMED_WAIT:		等待所有分组死掉
CLOSING:		两边同时尝试关闭
TIME_WAIT:		另一边已初始化一个释放
LAST_ACK:		等待所有分组死掉
			

减少TIME_WAIT状态

net.ipv4.tcp_syncookies = 1 	表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 		表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 	表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30	修改系統默认的 TIMEOUT 时间
			
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
			

9.2. TIME_WAIT

# netstat -tna | cut -b 49- |grep TIME_WAIT | sort
			

9.3. SYN_RECV / SYN_SENT

# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
 			
comments powered by Disqus