zoukankan      html  css  js  c++  java
  • Linux 监控tcp连接数及状态

    一、查看哪些IP连接本机

    netstat -an

    二、查看TCP连接数

    查看tcp连接数状态 
     

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 



    统计8080端口上有多少个TCP连接,命令: 
     

    netstat -ant |grep 80|wc -l 



    TCP连接中有多少个连接状态是ESTABLISHED,命令: 
     

    netstat -ant |grep 80|grep ESTABLISHED|wc -l 



    TCP连接中有多少个连接状态是CLOSE_WAIT 

    netstat -ant |grep 80|grep CLOSE_WAIT|wc -l 



    TCP连接中有多少个连接状态是TIME_WAIT 

    netstat -ant |grep 80|grep TIME_WAIT|wc -l 



    使用awk来完成统计信息,命令如下 
     

    netstat -ant |grep 80|awk '{++S[$NF]} END {for (a in S) print a, S[a]}'

    TCP连接状态详解 

    • LISTEN: 侦听来自远方的TCP端口的连接请求
    • SYN-SENT: 再发送连接请求后等待匹配的连接请求
    • SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
    • ESTABLISHED: 代表一个打开的连接
    • FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
    • FIN-WAIT-2: 从远程TCP等待连接中断请求
    • CLOSE-WAIT: 等待从本地用户发来的连接中断请求
    • CLOSING: 等待远程TCP对连接中断的确认
    • LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
    • TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
    • CLOSED: 没有任何连接状态
    • SYN_RECV表示正在等待处理的请求数;
    • ESTABLISHED表示正常数据传输状态;
    • TIME_WAIT表示处理完毕,等待超时结束的请求数。

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

    vim /etc/sysctl.conf
    编辑文件,加入以下内容:
    1.  
      net.ipv4.tcp_syncookies = 1
    2.  
      net.ipv4.tcp_tw_reuse = 1
    3.  
      net.ipv4.tcp_tw_recycle = 1
    4.  
      net.ipv4.tcp_fin_timeout = 30

    然后执行

    /sbin/sysctl -p 

    让参数生效。

    附上TIME_WAIT状态的意义:

    • 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,表示关闭。
    • net.ipv4.tcp_fin_timeout 修改系統默认的TIMEOUT时间

    5、客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口状态为TIME_WAIT是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

    主动关闭的一方在发送最后一个ack后,就会进入TIME_WAIT状态停留2MSL(max segment lifetime)时间,这个是TCP/IP必不可少的,也就是“解决”不了的。也就是TCP/IP设计者本来是这么设计的。

    主要有两个原因:

    • 1、防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
    • 2、可靠的关闭TCP连接在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin, 如果这时主动方处于CLOSED状态 ,就会响应rst而不是ack。所以主动方要处于TIME_WAIT状态,而不能是CLOSED 。TIME_WAIT并不会占用很大资源的,除非受到攻击。还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态。
  • 相关阅读:
    移动支付
    PowerBI
    PowerBI
    Fiddler 页面字段(图标)含义详解
    Fiddler 抓包淘宝小程序(Android)
    【练习读写excel文件】读取sheet1里面a列的值,逐行粘贴到sheet2,3,4,5,6,7里面的指定字段
    【练习读写excel文件】根据某一字段将相同的类拆分
    【练习读写excel文件】创建workbook和批量创建Sheet
    require.js的使用的坑!
    js的异步的问题的再次理解
  • 原文地址:https://www.cnblogs.com/laraine/p/11193849.html
Copyright © 2011-2022 走看看