大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第62篇文章
文章目录
前言
在工作中,我们经常遇到一个问题,就是需要监听端口或者查看网络连接状态信息。 我们使用的命令一般是netstat,今天我们就来聊聊netstat的使用
一. netstat命令详解
作用
netstat 命令: 查看系统中网络连接状态信息
1. 常用参数
参数 | 作用 |
---|---|
-a, --all | 显示本机所有连接和监听的端口 |
n, --numeric | 不解析域名 |
-u | 显示udp协议连接 |
-t | 显示tcp协议连接 |
-p | 显示连接对应的PID与程序名 |
c | 设置几秒钟更新一次 |
o | 显示计时器 |
M | 显示伪装的链接 |
2. 命令使用
我们来挨个看一下圈起来的第二行的参数,是什么意思?
1) 参数作用详解
参数 | 作用 |
---|---|
Proto | 连接协议的种类 |
Recv-Q | 接收到字节数 |
Send-Q | 从本服务器,发出去的字节数 |
Local Address | 本地的IP地址,可以是IP,也可以是主机名 |
Foreign Address | 远程主机的IP 地址 |
state | 网络连接状态 |
我们来看下面的网络连接状态
2) 网络连接状态详解
- CLOSED : 初始(无连接)状态。
- CLOSING:等待远程TCP对连接中断的确认
- LISTEN : 侦听状态,等待远程机器的连接请求。
- ESTABLISHED: 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
- TIME_WAIT : 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
- SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood***了)
- CLOSE-WAIT:等待从本地用户发来的连接中断请求
- FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
- FIN-WAIT-2:从远程TCP等待连接中断请求
二. 案例实战
1. 服务器上有大量TIME_WAI连接,如何优化TCP连接,快速释放tcp连接 ?
[root@ecs-c13b ~]# netstat -antup |grep TIME_WAI
解决: 通过缩短 time_wait的时间来快速释放链接
首先我们得知道他的默认等待时间是多少?
上图中我们可以看到,默认是60S,下面我们来缩短时间,并查看一下:
2. 显示网卡列表
3. 显示网络统计情况
4. 显示路由信息
还有个类似的命令是route -n
5. 统计服务器中网络连接各个状态的个数
netstat -an | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a,S[a]} ’
6. 查看链接服务器端口做多的IP地址
[root@gaosh-63 ~]# netstat -ant |grep “192.168.1.*” |awk ‘{print $5}’|awk -F: ‘{print $1}’ |sort -nr|
总结:
netstat在公司里使用的比较频繁,一定要认证掌握,主要关注antup这五个参数,其他的参数等到用的时候在查即可。
我是高胜寒,一个在教培行业不忘初心的人,欢迎留言探讨,一起学习