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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值