Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

netstat 命令完全指南

netstat(Network Statistics)是一个用于监控网络连接、路由表、接口统计等信息的命令行工具。以下是对其功能的详细解析,涵盖常用命令、高级用法及实际场景示例。


目录

一、基本语法与常用选项
二、核心功能详解
三、高级用法与组合命令
四、实际场景示例
五、跨平台差异与替代工具
六、常见问题与技巧


一、基本语法与常用选项

1
netstat [选项] [间隔时间]

常用选项速查表

选项 功能描述
-a 显示所有连接(包括监听和非监听)
-t 仅显示 TCP 协议连接
-u 仅显示 UDP 协议连接
-l 仅显示监听状态的端口
-n 禁用域名解析(显示 IP 和端口号)
-p 显示进程 PID 和程序名(需 root 权限)
-r 显示路由表信息
-s 按协议统计网络数据包
-c 持续刷新输出(默认间隔 1 秒)
-e 显示扩展信息(如接口 MTU)
-4/-6 仅显示 IPv4 或 IPv6 连接

二、核心功能详解

1. 查看所有网络连接

1
netstat -a
  • 输出列说明:
    • Proto: 协议类型(TCP/UDP)
    • Recv-Q/Send-Q: 接收/发送队列大小
    • Local Address: 本地地址与端口
    • Foreign Address: 远程地址与端口
    • State: 连接状态(如 ESTABLISHED, LISTEN

2. 过滤 TCP/UDP 连接

1
2
netstat -at  # 仅 TCP
netstat -au # 仅 UDP

3. 显示监听端口

1
netstat -lntu
  • 组合选项:
    • -l: 仅监听端口
    • -n: 数字格式
    • -t/-u: 协议过滤

4. 查看进程与网络关联

1
sudo netstat -tulnp
  • 示例输出:
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. 网络接口统计

1
netstat -i
  • 关键指标:
    • 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. 路由表分析

1
netstat -rn
  • 关键列:
    • Destination: 目标网络
    • Gateway: 网关地址
    • Genmask: 子网掩码
    • Iface: 网络接口

四、实际场景示例

场景 1: 诊断端口冲突

1
2
3
4
5
# 查看 8080 端口是否被占用
sudo netstat -tulnp | grep :8080

# 若发现占用进程,终止该进程
kill -9 <PID>

场景 2: 分析网络吞吐量

1
2
# 查看接口统计(每秒刷新)
netstat -ie 1

场景 3: 追踪异常连接

1
2
# 筛选所有处于 SYN_SENT 状态的连接
netstat -ant | grep SYN_SENT

五、跨平台差异与替代工具

1. 操作系统差异

功能 Linux macOS Windows
显示进程名 -p -v 不支持
持续刷新 -c -w <秒> 无类似参数

2. 替代工具推荐

  • ss (Linux): 查看文件与网络连接关联
1
ss -tulnp  # 替代 netstat -tulnp
  • lsof: 查看文件与网络连接关联
1
lsof -i :80  # 查看 80 端口占用情况

六、常见问题与技巧

1. TIME_WAIT 状态连接

  • 原因: TCP 正常关闭后的等待状态,确保数据完整性。
  • 解决: 通常无需干预,可通过调整内核参数优化。

2. netstatss 的选择

  • 优先 ss: 在 Linux 中,ss 直接读取内核数据,速度更快。

3. 统计总连接数

1
netstat -ant | wc -l

4. 过滤特定 IP 的连接

1
netstat -an | grep 192.168.1.100

评论