LISTENING状态
服务启动后首先处于侦听(LISTENING)状态
ESTABLISHED状态
建立连接,表示两台机器正在通信
CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方状态会变成CLOSE_WAIT,此时我方要调用close()来使得连接正确关闭
TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME\_WAIT。TCP协议规定TIME\_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME\_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME\_WAIT状态造成的资源浪费。
目前有一种避免TIME\_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。
SYN_SENT状态
SYN_SENT状态表示请求连接,当你要访问其他的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且向不同机器发出,那你的机器可能中了冲击波或者震荡波之类的病毒。这类病毒为了感染别的计算机,它要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现了许多SYN_SENT的原因
如何尽量处理TIMEWAIT过多?
编辑内核文件/etc/sysctl.conf,加入以下内容:
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,表示关闭。
TCP端口状态说明ESTABLISHED、TIME_WAIT、CLOSE_WAIT
原创
©著作权归作者所有:来自51CTO博客作者doubf的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
聊聊TCP中的TIME_WAIT
TIME_WAIT 的产生、作用以及优化
TIME_WAIT -
Python内置模块-Time
time模块包含了一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具。
python time python内置模块