Linux网络编程系列-TCP状态分析

TCP三路握手(SYN、ACK):


TCP终止连接(四次握手,2个FIN、2个ACK):


TCP的TIME_WAIT状态:

Who-主动关闭方,When-接收到被动端的FIN,Why-实现终止TCP全双工连接的可靠性(可能需要重发ACK)/允许老的重复分节在网络中消失,How Long-2MSL(1m-4m)

避免TIME_WAIT过多的办法:修改/etc/sysctl.conf后,执行/sbin/sysctl -p生效

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_syncookies = 1 //表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_max_tw_buckets = 5000 //系统同时保持TIME_WAIT sockets的最大数,默认为18w
net.ipv4.tcp_fin_timeout = 30 //主动关闭方处于FIN_WAIT_2的时间

TCP的CLOSE_WAIT状态:

who-被动关闭方,when-被动端收到FIN1到发送FIN2之间(被动关闭端调用close()发送FIN2)

TCP状态切换图:


可以参考:tcp的那些事儿(上)http://coolshell.cn/articles/11564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值