netstat 与 ss 比较

一、netstat 命令

1. 核心功能

  • 显示网络连接、路由表、接口统计等信息。

  • 支持TCP、UDP、UNIX域套接字等协议。

  • 可查看进程与端口的关联。

2. 常用语法示例

查看所有活动连接

复制代码
netstat -a
# 输出示例:
Proto Recv-Q Send-Q Local Address   Foreign Address  State      
tcp        0      0 192.168.1.2:22 10.0.0.5:54321   ESTABLISHED
  • -a:显示所有连接(包括监听和非监听)。

查看TCP监听端口

复制代码
netstat -tuln
# 输出示例:
Proto Recv-Q Send-Q Local Address   State       PID/Program name
tcp        0      0 0.0.0.0:80      LISTEN      1234/nginx
  • -t:TCP协议;-u:UDP协议;-l:仅监听端口;-n:禁用域名解析。

统计各连接状态的数量

复制代码
netstat -ant | awk '/^tcp/ {print $6}' | sort | uniq -c
# 输出示例:
  10 ESTABLISHED
   2 TIME_WAIT

查看进程与端口的关联

复制代码
netstat -tulnp
# 输出示例:
tcp6       0      0 :::80      :::*        LISTEN      1234/nginx

二、ss 命令

1. 核心功能

  • 替代 netstat 的现代工具,直接读取内核网络栈数据(通过 netlink 接口)。

  • 速度更快,支持更复杂的过滤语法。

  • 支持显示TCP内部状态(如拥塞窗口、RTT)。

2. 常用语法示例

查看所有TCP连接

复制代码
ss -at
# 输出示例:
State    Recv-Q   Send-Q   Local Address:Port    Peer Address:Port   
ESTAB    0        0        192.168.1.2:22        10.0.0.5:54321
  • -a:所有连接;-t:TCP协议。

查看监听端口

复制代码
ss -tuln
# 输出示例:
Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port 
tcp    LISTEN  0       128     *:80                *:*              
  • -u:UDP协议;-l:监听端口;-n:禁用域名解析。

按状态过滤连接

复制代码
ss -t state established
# 输出示例:
Recv-Q Send-Q Local:Port    Peer:Port    
0      0      192.168.1.2:22 10.0.0.5:54321
  • 支持过滤:established, time-wait, closed 等状态。

查看进程和Socket详细信息

复制代码
ss -tulnp
# 输出示例:
Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port Process
tcp    LISTEN  0       128     *:80                *:*              users:(("nginx",pid=1234,fd=3))
  • -p:显示进程信息(需root权限)。

统计各状态的连接数

复制代码
ss -s
# 输出示例:
Total: 45 (kernel 60)
TCP:   10 (estab 5, closed 2, orphaned 0, timewait 3)
UDP:   3

三、核心区别对比

特性 netstat ss
数据来源 读取 /proc/net 文件 直接通过 netlink 接口读取内核数据
性能 较慢(高连接数时卡顿) 极快(适合大规模服务器)
功能复杂度 简单但功能有限 支持高级过滤和TCP内部状态分析
输出信息 基础连接信息 更详细的Socket元数据(如内存用量)
系统兼容性 旧系统默认安装 新系统推荐工具(如CentOS 7+/Ubuntu 16+)
进程关联显示 需要 -p 选项 同样支持,但格式更清晰

四、使用场景建议

1. 推荐使用 ss 的场景

  • 高并发服务器:需快速统计数千个连接。

  • 精准过滤:按状态、端口、IP等条件筛选连接。

    复制代码
    ss -t src 192.168.1.2 and dport = 80
  • 分析TCP性能:查看拥塞窗口、RTT等指标。

    复制代码
    ss -ti

2. 可能仍需使用 netstat 的场景

  • 旧系统兼容 :某些嵌入式系统未预装 ss

  • 路由表查看netstat -r 显示路由信息更直观。

  • 接口统计netstat -i 查看网络接口流量。

五、示例分析

案例:查找占用80端口的进程

**  使用 netstat**

复制代码
netstat -tulnp | grep ':80'
# 输出:
tcp6  0  0 :::80  :::*  LISTEN  1234/nginx

**  使用 ss**

复制代码
ss -tulnp | grep ':80'
# 输出:
tcp  LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=3))

**  结果对比** :ss 输出更简洁,直接显示进程名称和文件描述符。

案例:统计ESTABLISHED连接数

**  使用 netstat**

复制代码
netstat -ant | grep ESTABLISHED | wc -l

**  使用 ss**

复制代码
ss -t state established | wc -l
  • 效率对比ss 直接过滤状态,速度更快。
相关推荐
如意.75920 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera77720 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ21 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
安当加密1 天前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
内卷焦虑人士1 天前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
dddddppppp1231 天前
qemu模拟的一个内核驱动 io口中断
linux
程序员老赵1 天前
超全 Docker 镜像源配置指南|Windows/Mac/Linux一键搞定,拉镜像再也不卡顿
linux·后端·容器
门豪杰1 天前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
总要冲动一次1 天前
离线安装 percona-xtrabackup-24
linux·数据库·mysql·centos
桌面运维家1 天前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows