chenxiaba / mywork

记录平时的笔记
0 stars 0 forks source link

TCP相关知识点 #2

Closed chenxiaba closed 8 years ago

chenxiaba commented 8 years ago

记录TCP相关知识点

chenxiaba commented 8 years ago

SYN_SEND

设置SYN包重试次数

sysctl -w net.ipv4.tcp_syn_retries = 2

默认5次(大约180s)

chenxiaba commented 8 years ago

SYN_RECEIVED状态

SYN_RECEIVED服务端状态,一般15个左右。如果非常大,怀疑遭受到syn_flood攻击

参考

设置SYN_RECEIVED状态等待队列个数,默认1024

 sysctl -w net.ipv4.tcp_max_syn_backlog=4096

打开syncookie,在syn backlog队列不足时,提供一种机制临时将syn链接换出

sysctl -w net.ipv4.tcp_syncookies=1

设置服务端回ACK的重试次数,默认5次(180s)

sysctl -w net.ipv4.tcp_synack_retries = 2
chenxiaba commented 8 years ago

ESTABLISHED

设置keep-alive

sysctl -w net.ipv4.tcp_keepalive_time = 1200 

相关的其它设置:

net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
chenxiaba commented 8 years ago

拆链状态

FIN_WATI1 : 主动关闭的一方,发出FIN后的状态 CLOSE_WAIT :被动关闭的一方,收到客户端的FIN后的状态 FIN_WAIT2 : 主动关闭的一方,收到被动关闭一方的ACK后的状态

sysctl -w net.ipv4.tcp_fin_timeout=30, 可以设定被动关闭方返回FIN后的超时时间,有效回收链接,避免syn-flood.

LAST_ACK : 被动关闭的一方,在发送ACK一段时间后(确保客户端收到),再发起一个FIN TIME_WATI : 主动关闭的一方,在收到被动关闭的FIN包后,发送ACK

sysctl -w net.ipv4.tcp_tw_recycle = 1 快速回收TIME_WAIT,使用NET的时候,要注意这个参数不推荐; sysctl -w net.ipv4.tcp_tw_reuse =1 net.ipv4.tcp_max_tw_buckets:处于time_wait状态的最多链接数,默认为180000.

chenxiaba commented 8 years ago

设置TCP接收发送缓冲区

net.ipv4.tcp_rmem 参数 默认值: min=4096 default=87380 max=4194304

net.ipv4.tcp_wmem 参数 默认值: min=4096 default=16384 max=4194304