linux命令-netstat与ss 命令详解
一、netstat简介
netstat 全称是:network statistics,是一个用于监控、排除网络连接故障、路由表的命令行工具,它提供关于网络统计和 socket 连接的详细信息。
二、命令安装
sudo apt install net-tools # For Debian/Ubuntu
sudo yum install net-tools # For CentOS/RHEL
三、常用选项示例
- 查看所有连接
netstat -a
# 显示所有活动的连接和监听的端口
- 仅显示监听的端口
netstat -l
- 仅显示 TCP 连接
netstat -t
- 仅显示 UDP 连接
netstat -u
- 显示带有数字地址的连接
netstat -an
# 跳过主机名解析以实现更快的输出。
- 显示连接时包括进程名和PID
netstat -p
- 显示路由表
netstat -r
# 输出内核路由表,与route 命令相似
- 查看网络接口统计信息
netstat -i
# 提供有关发送/接收的数据包和接口错误的详细信息
- 持续监控连接
netstat -c
# 每秒刷新一次输出
- 合并多个选项
netstat -tunlp
# -t:TCP
# -u:UDP
# -n:数字地址
# -l:监听的端口
# -p:PID和进程名称
- 关键输出字段解释
Proto:协议类型:TCP 或 UDP
Recv-Q:接收队列大小(等待读取的数据)
Send-Q:发送队列大小(等待发送的数据)
Local Address:连接本地的地址和端口。
Foreign Address:连接远程的地址和端口
State:连接的状态,LISTEN、ESTABLISHED 等
PID/Program name:进程ID和进程名称
四、ss简介
ss 全称 Socket Statistics,是一个用于探究 Linux 上的套接字和网络连接的强大实用程序,它被用来替代老版的 netstat ,提供更快、更详细的信息输出。
五、常用选项
- 查看所有 sockets
ss -a
# 显示所有监听和未监听的sockets
- 显示监听的 sockets
ss -l
# 输出主动等待连接的服务
- 仅显示 TCP sockets
ss -t
- 仅显示 UDP sockets
ss -u
- 显示数字地址
ss -n
# 跳过 DNS 解析以显示 IP 地址和端口号
- 显示包含进程的信息
ss -p
# 显示进程ID和进程名称
- 仅显示 IPv4
ss -4
- 仅显示 IPv6
ss -6
- 显示已建立的连接
ss -t -a state established
# 显示所有已建立的 TCP 连接
- 持续监控
ss -c
# 实时更新socket信息。
- 显示摘要统计信息
ss -s
# 提供套接字使用情况的摘要,包括打开和已建立的连接数
- 显示监听的 TCP 端口
ss -lt
- 连接到指定地址
ss dst 192.168.1.100
- 连接到指定端口
ss dport = 22
- 显示路由表
ss -r
# 显示内核路由表
- 关键字段解释
Netid:网络类型或协议,如:tcp、udp、unix
State:连接的状态,如:LISTEN、LISTEN
Recv-Q:接收队列中的字节数
Send-Q:发送队列中的字节数
Local Address:Port:连接本地端的地址和端口
Peer Address:Port:连接远端的地址和端口
Process:关联的进程ID和名称
六、高级用法
- 显示 UNIX 域套接字
ss -x
# 显示 UNIX 套接字连接(例如,进程间通信)
- 显示已建立的 TCP 连接
ss state established
- 显示正在监听的 UDP 连接
ss -u state listening
- 显示详细的接口统计信息
ss -i
七、总结
1. 底层实现不同
- netstat
属于 net-tools 工具包,通过读取 /proc/net 下的文件(如 /proc/net/tcp)来获取信息。在连接数较多时性能较差。 - ss
属于 iproute2 工具包,直接通过内核的 netlink 接口 获取数据,效率更高,尤其适用于高并发场景。
2. 性能差异
- netstat
处理大量连接时速度较慢(例如数万个并发连接)。 - ss
性能显著优于 netstat,能快速显示大规模连接信息。
3. 功能与输出格式
- netstat
显示网络连接、路由表、接口统计等信息。
输出格式较为冗长,信息分散。 - ss
专注于套接字(socket)统计,提供更详细的连接状态信息。
默认输出更简洁,支持结构化显示(如 -t 仅显示 TCP)。
支持更灵活的过滤(如按端口、状态、IP 等)。
4. 过滤与筛选能力
- netstat
过滤功能有限,需结合 grep 等工具。 - ss
内置强大的过滤语法:
ss -t state established # 仅显示已建立的 TCP 连接
ss dst 192.168.1.1 # 按目标 IP 过滤
ss dport = :80 # 按目标端口过滤
5. 协议支持
- netstat
对新型协议(如 SCTP)支持不足。 - ss
支持更多现代协议(如 SCTP、TCP 扩展状态),并展示更详细的协议参数(如拥塞控制算法)。
6. 系统兼容性
- netstat
已逐渐被标记为“过时”,部分新系统默认未安装(需手动安装 net-tools)。 - ss
作为 iproute2 的一部分,是大多数现代 Linux 发行版的默认工具,推荐替代 netstat。