博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
阅读量:7211 次
发布时间:2019-06-29

本文共 1047 字,大约阅读时间需要 3 分钟。

一. 首先说下tcp端口的几种状态:

1、LISTENING状态

FTP服务启动后首先处于侦听(LISTENING)状态。

2、ESTABLISHED状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。
3、CLOSE_WAIT
    对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
4、TIME_WAIT
    我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
    目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。
5、SYN_SENT状态

   SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。

二、如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,

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
然后执行 /sbin/sysctl -p 让参数生效。
 
time_wait的设计,是基于tcp的四次挥手,上面改的那些内核参数的修改并非一劳永逸,可以参考:
本文转自 jiu~ 博客园博客,原文链接:http://www.cnblogs.com/jiu0821/p/8119363.html,如需转载请自行联系原作者
你可能感兴趣的文章
openstack网络管理命令
查看>>
利用cmd代码一次性提取电脑登陆过的wifi密码到桌面
查看>>
Python 网页解析器
查看>>
傻瓜式禅道配置
查看>>
XXE漏洞初窥
查看>>
POCO库中文编程参考指南(11)如何使用Reactor框架?
查看>>
leetcode689:Maximum Sum of 3 Non-Overlapping Subarrays
查看>>
php 使用 ffmpeg 转换视频,截图,并生成缩略图
查看>>
sqlserver快速查找所有存储过程中是否包含某字符
查看>>
【转】MFC OnIdle的详细说明
查看>>
线程池 Threadlocal 使用注意
查看>>
CSS的width:100%和width:auto区别
查看>>
大道至简,系统设计和模块划分的实用经验之谈
查看>>
怎么保存退出vi编辑
查看>>
mysql删除sql表添加别名及删除sql的注意事项
查看>>
tmux 基本用法
查看>>
iOS:使用NSRegularExpression正则去掉一串字符串中所有的特殊字符和标点
查看>>
腾讯工程师带你深入解析 MySQL binlog
查看>>
C指针操作ip地址以4个字节的int类型作为传输对象
查看>>
怎样在注冊表禁用或打开windows系统右键菜单
查看>>