Linux netstat 命令详解

netstat 是 Linux 中用于显示网络连接、路由表、接口状态等信息的命令。虽然它在现代系统中逐渐被 ssip 命令取代,但在很多环境中仍然有用。

以下是 netstat 命令的详细讲解,包括常见选项和输出解释。


一、基本语法

netstat [选项]

二、常用选项详解

选项 含义
-a 显示所有连接和监听端口(包括 TCP 和 UDP)
-t 显示 TCP 连接
-u 显示 UDP 连接
-l 仅显示监听中的套接字(Listen)
-n 以数字形式显示地址和端口(不解析为主机名和服务名)
-p 显示哪个进程在使用该端口(需要 root 权限)
-r 显示路由表(类似 route -n
-i 显示网络接口状态(类似 ifconfig
-s 显示每个协议的统计信息
-c 每隔一段时间持续输出(与 watch 类似)

三、常见用法示例

1. 显示所有连接(包括监听)

netstat -a

2. 显示当前所有 TCP 连接

netstat -at

3. 显示所有监听的 UDP 端口

netstat -lu

4. 显示端口号和 IP 而不是主机名(加速输出)

netstat -tun

5. 查看使用端口的程序(需 root)

sudo netstat -tulpn

6. 查看路由表

netstat -rn

7. 查看网络接口统计信息

netstat -i

8. 实时查看连接状态(每秒刷新)

watch netstat -tulpn

四、输出字段解释(以 netstat -tulpn 为例)

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
udp        0      0 0.0.0.0:68              0.0.0.0:*                           567/dhclient

字段说明:

  • Proto:协议(tcp / udp)

  • Recv-Q:接收队列中的数据量

  • Send-Q:发送队列中的数据量

  • Local Address:本地 IP 和端口

  • Foreign Address:远程 IP 和端口(* 表示尚未建立连接)

  • State:连接状态(TCP 有,UDP 没有),如:

    • LISTEN: 等待连接
    • ESTABLISHED: 已建立连接
    • TIME_WAIT: 等待足够时间以确保远程 TCP 接收最后的 ACK
  • PID/Program name:使用该端口的进程 ID 和程序名


五、替代工具推荐

  • ss:比 netstat 更快、功能更强(建议使用)

    ss -tuln
    ss -p
    
  • ip:用于替代 netstat -rifconfig

    ip route
    ip addr
    
posted @ 2025-07-02 22:23  槑孒  阅读(131)  评论(0)    收藏  举报