命令简介

netstat 是一个用于显示网络连接、路由表、接口统计等网络相关信息的命令。它可以用来查看系统的网络状况、排查网络问题等。netstat 命令是 Linux/Unix 系统管理员常用的网络诊断工具之一。

在高版的 Linux 发行版本中, netstat 命令逐渐被 ss 命令所替代。

关于 ss 命令的用法,请参考:Linux 命令之 - ss

命令格式

1
netstat [options]

参数说明

参数 说明 备注
-a 显示所有连接和监听端口
-t 显示 TCP 协议的连接情况
-u 显示 UDP 协议的连接情况
-n 显示数字形式的地址和端口号
-l 仅列出在监听状态的网络服务
-p 显示建立相关链接的程序名
-r 显示路由表信息
-s 显示网络统计信息
-i 显示网络接口列表
-c 持续输出网络状态信息
-o 显示与每个内核套接字相关的计时器信息
-e 获取更多的网络和套接字信息
-W 显示 RAW 传输协议的连接情况
-x 显示 UNIX 域套接字的连接情况

命令实例

基础用法

1.查看系统所有网络连接

1
$ netstat -a

2.查看 TCP 连接状态

1
$ netstat -ant

3.查看所有监听端口

1
$ netstat -antl

4.查看 UDP 连接状态

1
$ netstat -anu

5.查看路由表

1
$ netstat -r

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

1
$ netstat -i

7.查看网络统计信息

1
$ netstat -s

8.查看连接进程名

1
$ netstat -antp

9.持续监视网络状态

1
$ netstat -c

10.查看 UNIX 域套接字连接

1
$ netstat -xu

扩展使用方法

1.查看指定协议的连接状态

1
2
3
4
$ netstat -at   # 查看 TCP 连接
$ netstat -au # 查看 UDP 连接
$ netstat -ax # 查看 UNIX 域套接字连接
$ netstat -aw # 查看 RAW 传输协议连接

2.查看指定端口的连接状态

1
$ netstat -antp | grep :80

上面的命令显示了所有与端口 80 相关的 TCP 连接。

3.查看指定程序的网络连接

1
$ netstat -antp | grep sshd

上面的命令显示了 sshd 程序的所有网络连接。

4.统计连接状态数量

1
$ netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn

上面的命令统计了各种 TCP 连接状态的数量,可以用来分析网络连接状况。

高级使用方法

1.使用 ss 命令代替 netstat

在较新的 Linux 发行版中,ss 命令被推荐用来替代 netstat 命令。ss 命令提供了更丰富的功能和更好的性能。

1
2
3
4
$ ss -a   # 列出所有套接字
$ ss -t # 列出 TCP 套接字
$ ss -u # 列出 UDP 套接字
$ ss -x # 列出 UNIX 域套接字

2.使用 lsof 命令查看网络连接

lsof 命令可以列出打开的文件描述符,包括网络连接。

1
2
3
4
$ lsof -i   # 列出所有网络连接
$ lsof -i :80 # 列出端口 80 的连接
$ lsof -i tcp # 列出 TCP 连接
$ lsof -i udp # 列出 UDP 连接
  1. 使用 tcpdump 命令抓包分析

tcpdump 是一个强大的网络数据包捕获和分析工具。它可以用于排查网络问题,分析网络流量等。

1
2
3
$ tcpdump -i eth0   # 在 eth0 接口上抓包
$ tcpdump -i eth0 port 80 # 抓取 80 端口的数据包
$ tcpdump -i eth0 host 192.168.1.100 # 抓取与特定主机的数据包

以上就是关于 netstat 命令的详细介绍和使用示例,希望对你有所帮助。如果还有任何疑问或需要进一步的帮助,欢迎随时提出。