netstat
是 Linux 系统的网络监控工具,功能是显示网络连接状态、路由表和网络接口等信息,可以让用户得知本机系统各端口的网络连接情况
netstat
常用的参数如下表所示,更多参数可以使用命令 man netstat
查看详细信息
参数 | 功能 |
---|---|
-a | 显示所有的 socket,默认只展示已连接的 socket |
-n | 直接展示数字类型的 IP 和端口,不对 IP 和端口进行别名转换 |
-p | 显示正在使用连接的进程ID和进程名称 |
-r | 显示本机的路由表 |
-l | 显示本机正在监听中、等待连接的服务端进程 |
-i | 展示本机的网卡列表 |
-c | 动态展示连接信息 |
-s | 展示统计数据 |
-t | 展示使用 tcp 协议的连接 |
-u | 展示使用 udp 协议的连接 |
-x | 展示使用 unix 域 socket 的连接 |
以下是 netstat
命令的输出结果示例,连接信息大致分为了两个部分:
Active Internet connections(网络连接)
,其各个列的含义如下:
- Proto 通信协议
- Recv-Q 接收队列,非 0 表示有接收数据堆积
- Send-Q 发送队列,非 0 表示有发送数据堆积
- Local Address 通信双方中的本地端地址
- Foreign Address 通信双方中的外部端地址
- State 连接的状态
Active UNIX domain sockets(Unix域 socket)
,Linux 系统提供的本机进程间通信机制创建的连接,各个关键列的含义如下:
- Proto 通信协议
- RefCnt 连接所属的进程号
- Type socket 的类型,STREAM 表示发送数据前需要先进行连接动作,DGRAM 表示直接发送数据
- State 连接的状态
- Path 连接所属的进程的启动路径
[root@aly-inner-001 ~]$ netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.128.39.51:60530 172.18.211.120:8080 TIME_WAIT
tcp 0 0 127.0.0.1:25031 127.0.0.1:8500 TIME_WAIT
tcp 0 0 10.128.39.51:65032 172.18.212.71:2379 ESTABLISHED
tcp 0 0 10.128.39.51:60524 172.18.211.120:8080 TIME_WAIT
tcp 0 0 10.128.39.51:54271 172.18.1.217:389 ESTABLISHED
tcp 0 0 127.0.0.1:24981 127.0.0.1:8500 TIME_WAIT
tcp 0 0 10.128.39.51:44648 10.128.38.226:5044 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 6 [ ] DGRAM 546 /run/systemd/journal/socket
unix 14 [ ] DGRAM 548 /log
unix 2 [ ] DGRAM 12160 /run/systemd/shutdownd
unix 2 [ ] DGRAM 19454 /var/run/nscd/socket
unix 3 [ ] STREAM CONNECTED 95657062
使用以下命令查看在本机上的连接
# 列出所有连接
sudo netstat -anp
# 列出所有 tcp 连接
sudo netstat -anpt
# 列出所有 udp 使用的连接
sudo netstat -anpu
使用以下命令查看在本机上作为服务端进行端口监听的进程建立的连接
# 列出所有连接
sudo netstat -anpl
# 列出所有本机上作为服务端建立的 tcp 连接
sudo netstat -anplt
# 列出本机上作为服务端监听的 udp 端口
sudo netstat -anplu
使用以下命令查看本机上监听端口的进程建立的 tcp 连接中包含 80 端口的连接
sudo netstat -anplt | grep -w 80
统计 tcp 连接的数量
sudo netstat -ant | wc -l