一。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 状态

最新文章

  1. [转载]T-SQL(Oracle)语句查询执行顺序
  2. 数字与字母 随机数小demo
  3. Config文件的读写
  4. 编译系统中的LR与LL理解
  5. IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。
  6. BIEE 11g学习
  7. [转]Raspberry Pi做成路由器
  8. java jdbc----mysql的select、insert、update、delete
  9. ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2
  10. awk当中使用外部变量
  11. MySql数据库3【优化2】sql语句的优化
  12. java菜鸟篇<四> ZTree入门篇
  13. JS关闭页面无提示
  14. storybook实践
  15. Kubenetes 资源清单定义入门
  16. JavaScript(二)
  17. Nginx与PHP-FPM运行原理详解
  18. 【大数据技术】Flink
  19. PREV-4_蓝桥杯_剪格子
  20. Navi.Soft31.代码生成器(含下载地址)

热门文章

  1. node相关--代码共享
  2. Xamarin Android提示找不到资源属性定义
  3. eBay 使用ReviseInventoryStatusCall调整库存和价格
  4. android环境安装之android4.2安装(转)
  5. 手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
  6. BZOJ4417: [Shoi2013]超级跳马
  7. BZOJ3513: [MUTC2013]idiots
  8. jsoncpp封装和解析字符串、数字、布尔值和数组
  9. XSS的高级利用部分总结 -蠕虫
  10. Powershell的远程管理