tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745为“GET”前两个字母“GE”
0x4854为“HTTP”前两个字母“HT”linux
一般状况下:一个正常的TCP链接,都会有三个阶段ubuntu
TCP三次握手(建立OPEN)windows
客户端/服务端 read/write数据包服务器
TCP四次握手cookie
SYN_SEND网络
sysctl -w net.ipv4.tcp_syn_retries = 2
,做为客户端能够设置SYN包的重试次数,默认5次(大约180s)SYN_RECEIVEDtcp
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
,设置该状态的等待队列数,默认1024,调大后可适当防止syn-flood.sysctl -w net.ipv4.tcp_syncookies=1
,打开syscookie
,在syn backlog
队列不足的时候,提供一种机制将临时syn链接换出sysctl -w net.ipv4.tcp_synack_retries=2
,做为服务端返回ACK包的重试次数,默认5次(大约180s)ESTABLISHED工具
sysctl -w net.ipv4.tcp_keepalive_time = 1200
,默认为7200秒(2小时),系统针对空闲连接会进行心跳检查,若是超过net.ipv4.tcp_keepalive_probes * net.ipv4.tcp_keepalive_intvl = 默认11分,终止对应的tcp连接,可适当调整心跳检查频率FIN_WAIT1this
CLOSE_WAIT命令行
FIN_WAIT2
LASK_ACK
TIME_WAIT
sysctl -w net.ipv4.tcp_tw_recycle = 1
, 打开快速回收TIME_WAIT,Enabling this option is not recommended since this causes problems when working with NAT (Network Address Translation)sysctl -w net.ipv4.tcp_tw_reuse =1
, 快速回收并重用TIME_WAIT的连接, 貌 和tw_recycle有冲突,不能重用就回收?net.ipv4.tcp_max_tw_buckets
: 处于time_wait状态的最多连接数,默认为180000.备注:
主动关闭方在接收到被动关闭方的FIN请求后,发送给对方一个ACK后,将本身的状态由FIN_WAIT2修改成TIME_WAIT,而必须再等2MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间以后双方才能把状态 都改成CLOSED以关闭链接。目前RHEL里保持TIME_WAIT状态的时间为60秒
keepAlive策略能够有效的避免进行三次握手和四次关闭的动做
其余网络重要参数:
net.ipv4.tcp_rmem 参数
net.ipv4.tcp_wmem 参数
Tcpdump
tcpdump是linux系统自带的抓包工具,主要经过命令行的方式,比较适合在线上服务器进行抓包操做,若是是windows或者ubuntu彻底可 以选择一些图形化的工具,ubuntu比较推荐用wireshark,安装方式很简单sudo apt一下便可。