Linux 监控tcp连接数及状态

摘要:
1、 查看哪些IP连接是本地netstat和II。查看TCP连接的数量查看TCP连接数量状态netstat n | awk‘/^TCP/{++S[$NF]}END{for(ainS)printa,S[a]}‘统计端口8080上有多少TCP连接命令:netstat ant | grep80 | wc-l建立了多少TCP连接命令:netstat ant|grep80|

一、查看哪些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 状态。

免责声明:文章转载自《Linux 监控tcp连接数及状态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇APPScan安装与使用教程layer弹框层学习笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下对nginx日志进行统计分析的常用命令

1.awk对nginx日志文件状态码的查询统计命令: No.1. cat /var/log/nginx/access.log-20210128 | awk '{print $9,$10}' | awk 'BEGIN{count[$1]=0}($2!=200){count[$1]+=1}END{for(i in count) print(i,count[i]...

linux系统python3安装pip

环境ubutun14,python版本是python3.6. 今天在安装Pip 时出现ModuleNotFoundError: No module named 'distutils.util'。操作步骤如下: 我们可以通过以下命令来判断是否已安装: pip --version 如果还未安装,则可以使用以下方法来安装: $ curl https://b...

Linux命令行:对内容进行大小写字符转换 ​​​​

如果有一个字符串要确保全部是大写的,只需通过tr命令替换: [root@localhost ~]# echo "Hello World" | tr [:lower:] [:upper:] HELLO WORLD 下面是在脚本中使用此命令的示例,需要确保添加到文件中的所有文本都是大写,以保持一致性: #!/bin/bash read -p "Enter...

DataSnap基础

DataSnap基础 1. DATASNAP 历史 作为MIDAS起始于Delphi3,Delphi4是MIDAS II,Delphi5中是MIDASIII,而后基于COM远程数据模块方式使用TCP/IP,HTTP,(D)COM构建出强大的通讯能力.从Delphi6开始改名为DataSnap,直到D2007这个框架一直在使用.D2009重新架构了DataS...

青蛙学Linux—MySQL安装和初始化

1、安装MySQL 这里我们选择MySQL的源码包进行安装,MySQL版本5.7,安装路径为/usr/local/mysql,数据存储路径为/db/mysql,日志文件路径/usr/local/mysql/logs,运行MySQL的用户和组为mysql。 1.1、创建mysql用户 mysql用户用于运行MySQL,不能使用shell,为虚拟用户: [ro...

在linux的weblogic上增加启动参数

如何在linux的weblogic上增加启动参数在windows的myeclipse非常简单,就是window-preference-myclipse-application server-weblogicX-JDK中增加就可以了。但是linux上怎么增加?登陆控制台http://ip:7001/console版本是WebLogic Server管理控制台...