netstat
命令完全指南netstat
(Network Statistics)是一个用于监控网络连接、路由表、接口统计等信息的命令行工具。以下是对其功能的详细解析,涵盖常用命令、高级用法及实际场景示例。
目录 一、基本语法与常用选项 二、核心功能详解 三、高级用法与组合命令 四、实际场景示例 五、跨平台差异与替代工具 六、常见问题与技巧
一、基本语法与常用选项
常用选项速查表
选项
功能描述
-a
显示所有连接(包括监听和非监听)
-t
仅显示 TCP 协议连接
-u
仅显示 UDP 协议连接
-l
仅显示监听状态的端口
-n
禁用域名解析(显示 IP 和端口号)
-p
显示进程 PID 和程序名(需 root 权限)
-r
显示路由表信息
-s
按协议统计网络数据包
-c
持续刷新输出(默认间隔 1 秒)
-e
显示扩展信息(如接口 MTU)
-4
/-6
仅显示 IPv4 或 IPv6 连接
二、核心功能详解 1. 查看所有网络连接
输出列说明 :
Proto : 协议类型(TCP/UDP)
Recv-Q/Send-Q : 接收/发送队列大小
Local Address : 本地地址与端口
Foreign Address : 远程地址与端口
State : 连接状态(如 ESTABLISHED
, LISTEN
)
2. 过滤 TCP/UDP 连接 1 2 netstat -at netstat -au
3. 显示监听端口
组合选项 :
-l
: 仅监听端口
-n
: 数字格式
-t
/-u
: 协议过滤
4. 查看进程与网络关联
1 2 3 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
5. 网络接口统计
关键指标 :
RX-OK/TX-OK : 成功接收/发送的数据包
RX-ERR/TX-ERR : 错误数据包数量
MTU : 最大传输单元
三、高级用法与组合命令 1. 按状态统计 TCP 连接数 1 netstat -ant | awk '/^tcp/ {print $6}' | sort | uniq -c
1 2 3 10 ESTABLISHED 2 LISTEN 1 TIME_WAIT
2. 查找占用特定端口的进程 1 sudo netstat -tulnp | grep :80
3. 实时监控网络活动 1 watch -n 1 "netstat -atn | grep ESTABLISHED"
4. 路由表分析
关键列 :
Destination : 目标网络
Gateway : 网关地址
Genmask : 子网掩码
Iface : 网络接口
四、实际场景示例 场景 1: 诊断端口冲突 1 2 3 4 5 sudo netstat -tulnp | grep :8080 kill -9 <PID>
场景 2: 分析网络吞吐量
场景 3: 追踪异常连接 1 2 netstat -ant | grep SYN_SENT
五、跨平台差异与替代工具 1. 操作系统差异
功能
Linux
macOS
Windows
显示进程名
-p
-v
不支持
持续刷新
-c
-w <秒>
无类似参数
2. 替代工具推荐
六、常见问题与技巧 1. TIME_WAIT
状态连接
原因 : TCP 正常关闭后的等待状态,确保数据完整性。
解决 : 通常无需干预,可通过调整内核参数优化。
2. netstat
与 ss
的选择
优先 ss
: 在 Linux 中,ss
直接读取内核数据,速度更快。
3. 统计总连接数
4. 过滤特定 IP 的连接 1 netstat -an | grep 192.168.1.100