目录
netstat
(网络统计)是一个强大的命令行工具,常用于检查各种网络相关的统计信息,包括接口统计、路由表、网络连接、监听端口等。这个工具在网络问题诊断和性能分析中非常有用。
一、netstat
命令的主要功能
-
显示所有连接和监听端口
- 列出所有端口的状态,包括 TCP 和 UDP 端口。
-
显示路由表
- 查看本机的路由表。
-
显示网络接口信息
- 查看网络接口的状态,包括每个接口的 IP 地址、MTU、网络流量等。
-
显示统计信息
- 提供 TCP、UDP、ICMP 和 IP 等协议的详细统计信息。
常用 netstat
命令及选项
-
-a
(all)- 显示所有连接和监听端口。这包括 TCP 和 UDP 的所有端口。
-
-t
(TCP)- 仅显示 TCP 连接。
-
-u
(UDP)- 仅显示 UDP 连接。
-
-n
(numeric)- 显示 IP 地址和端口号,不使用域名和服务名。这可以加速显示结果,因为避免了 DNS 解析。
-
-l
(listening)- 仅显示监听中的服务端口(通常用于查找正在运行的服务器)。
-
-p
(program)- 显示哪个进程正在监听某个端口。这需要 root 权限来查看非当前用户的进程。
-
-r
(routing)- 显示路由表。
-
-i
(interfaces)- 显示网络接口统计信息,如接口状态、MTU、以及发送和接收的数据包数。
-
-s
(statistics)- 显示协议统计信息,如 TCP、UDP、ICMP 和 IP 的统计数据。
-
-c
(continuous)- 持续输出选定的信息,通常用于监控网络状态的变化。
二、示例和用法
以下详细介绍了 netstat
的各种实用示例和用法,这些示例能帮助你更好地理解和使用这个命令。
1. 查看所有连接和监听端口
-
查看所有连接
netstat -a
这个命令显示所有的连接和监听端口,包括 TCP 和 UDP。这是检测系统上网络活动的一个快速方式。
-
查看所有 TCP 连接
netstat -at
使用
-t
选项来限制输出只显示 TCP 协议的连接。 -
查看所有 UDP 连接
netstat -au
使用
-u
选项来限制输出只显示 UDP 协议的连接。 -
查看所有监听端口
netstat -l
使用
-l
选项来显示所有处于监听状态的端口,这对于查找所有正在运行的服务特别有用。 -
查看所有监听的 TCP 端口
netstat -lt
结合
-l
和-t
来查看所有监听的 TCP 端口。 -
查看所有监听的 UDP 端口
netstat -lu
结合
-l
和-u
来查看所有监听的 UDP 端口。
2. 显示端口和进程信息
-
显示监听端口及其服务名称
netstat -l --tcp --programs --numeric-ports
或简写为
netstat -ltpn
在这里:
-l
表示监听-t
表示 TCP-p
表示显示进程信息-n
表示显示数字形式的端口和 IP 地址
-
查看谁在监听端口 80
netstat -lnp | grep ':80'
这对于检查哪个进程 (比如 Web 服务器) 正在使用端口 80 非常有用。
3. 使用 netstat
查看路由表
-
查看系统路由表
netstat -r
或者
netstat -rn
这里
-r
选项表示显示路由表,-n
表示使用数字地址。
4. 查看接口统计
-
查看网络接口的详细信息
netstat -i
这将列出所有网络接口及其状态,包括 MTU、数据包统计等。
-
查看更详细的网络接口信息
netstat -ie
这里
-e
显示扩展信息,如更多的统计数据。
5. 查看服务和协议的统计信息
-
查看所有协议的统计信息
netstat -s
这将显示 TCP、UDP、ICMP 等所有支持的协议的统计信息。
-
查看 TCP 协议的统计信息
netstat -st
只显示 TCP 协议的统计信息。
-
查看 UDP 协议的统计信息
netstat -su
只显示 UDP 协议的统计信息。
6. 持续监控网络状态
-
持续报告网络连接状态
netstat -c
使用
-c
持续输出选定的信息,常用于实时监控网络状态。
7. 组合使用 netstat
选项
-
查找所有处于 ESTABLISHED 状态的连接
netstat -atn | grep ESTABLISHED
这里通过组合使用
-a
、-t
、-n
并结合grep
命令,你可以过滤出所有建立了的 TCP 连接。 -
检查特定服务(如 MySQL)使用的端口
netstat -tulpn | grep mysql
或者
netstat -tulpn | grep 3306
这对于找出 MySQL 数据库服务监听的端口非常有用(通常是 3306)。
8. 其他有用的 netstat
用法
-
查看多播组成员资格
netstat -g
这将列出网络接口的多播组成员资格信息,对于调试多播问题很有帮助。
-
列出所有端口,包括监听和非监听状态,以及服务名称
netstat -atunp
这个命令结合了多个选项,提供了一个全面的网络连接视图。
三、结论
netstat
是一个多功能网络工具,可以提供系统连接、路由表、接口计数器等多样的信息。通过上述示例和用法,你可以有效地监控和诊断网络相关的问题和性能瓶颈。不过,随着 Linux 发展,一些新的工具如 ss
和 ip
命令开始取代 netstat
,提供了更高的性能和更多的功能。但在很多系统上,netstat
仍然可用,是理解网络状态的一个重要工具。