netstat 查看TCP状态值
一。TCP 状态值
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
二。怎么处理大量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 生效
net.ipv4.tcp_syncookies = 1
表示开启SYN cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_fin_timeout
修改系統默认的 TIMEOUT 时间
三。什么时候进入TIME_WAIT
客户端与服务器端建立TCP/IP连接后,关闭SOCKET,服务器端连接的端口状态为TIME_WAIT,是不是所有执行主动关闭的socket都会
进入TIME_WAIT状态呢? 主动关闭的一方在发送最后一个 ack 后就会进入 TIME_WAIT 状态停留2MSL(max segment lifetime)时间
这个是TCP/IP必不可少的,主要有两个原因:
1。防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
2。可靠的关闭TCP连接,在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin, 如果这时主动方处于 CLOSED 状态 ,
就会响应 rst 而不是 ack。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。但是如果一方 send 或 recv 超时,就会直接进入
CLOSED 状态
最新文章
- [转载]T-SQL(Oracle)语句查询执行顺序
- 数字与字母 随机数小demo
- Config文件的读写
- 编译系统中的LR与LL理解
- IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。
- BIEE 11g学习
- [转]Raspberry Pi做成路由器
- java jdbc----mysql的select、insert、update、delete
- ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2
- awk当中使用外部变量
- MySql数据库3【优化2】sql语句的优化
- java菜鸟篇<;四>; ZTree入门篇
- JS关闭页面无提示
- storybook实践
- Kubenetes 资源清单定义入门
- JavaScript(二)
- Nginx与PHP-FPM运行原理详解
- 【大数据技术】Flink
- PREV-4_蓝桥杯_剪格子
- Navi.Soft31.代码生成器(含下载地址)
热门文章
- node相关--代码共享
- Xamarin Android提示找不到资源属性定义
- eBay 使用ReviseInventoryStatusCall调整库存和价格
- android环境安装之android4.2安装(转)
- 手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
- BZOJ4417: [Shoi2013]超级跳马
- BZOJ3513: [MUTC2013]idiots
- jsoncpp封装和解析字符串、数字、布尔值和数组
- XSS的高级利用部分总结 -蠕虫
- Powershell的远程管理