目录
Linux netstat
命令 是一个强大的网络工具,用于显示网络连接、路由表、接口统计、多播成员、网络协议统计信息等与网络相关的详细状态。它主要用于诊断网络问题、监控网络活动以及理解系统网络配置。以下是对netstat
命令的详细讲解:
命令格式与基本用法
netstat
命令接受一系列选项来指定要显示的信息类型和格式。一些常用的选项包括:
-a
或--all
:显示所有活动的连接和监听(Listening)的套接字(包括TCP、UDP、Unix域套接字等)。-t
或--tcp
:仅显示TCP协议的连接。-u
或--udp
:仅显示UDP协议的连接。-n
或--numeric
:直接显示数字形式的IP地址和端口号,而不是尝试查找对应的主机名和服务名,提高显示速度。-l
或--listening
:仅显示处于监听状态(即等待连接请求)的套接字。-p
或--programs
:显示持有相应套接字的进程ID(PID)和程序名(需要权限)。-r
或--route
:显示路由表信息。-s
或--statistics
:显示每个协议的统计信息,如TCP、UDP、IP、ICMP等。-c
或--continuous
:持续刷新输出,常用于监控网络状态的变化。-i
或--interfaces
:显示网络接口(网卡)状态信息。-e
或--extend
:显示扩展信息,如接口的发送和接收数据量、错误计数等。
显示网络连接
使用netstat
可以查看当前系统中的网络连接状态:
显示所有活动连接(包括监听状态):
netstat -a
显示所有TCP连接:
netstat -at
显示所有监听TCP端口:
netstat -lt
显示监听TCP端口及其对应的程序信息:
1netstat -plt
查看路由表
路由表决定了数据包如何从本机到达目的网络。使用以下命令查看路由表:
netstat -rn
接口统计信息
获取网络接口(如以太网卡、无线网卡等)的统计信息,包括发送/接收数据量、错误计数等:
netstat -i
协议统计信息
查看特定网络协议(如TCP、UDP、IP等)的统计信息,如连接建立、断开次数、发送/接收的数据包数、错误计数等:
netstat -s
持续监控网络状态
要实时监控网络状态变化,可以使用-c
选项持续刷新输出:
netstat -ct
其他功能
netstat
还支持显示多播成员、伪装(masquerading)连接、FIB(转发信息库)信息等,这些功能相对较少使用,通常需要结合特定的网络环境和配置来查阅和理解。
示例输出解释
netstat
的输出可能包含以下部分或全部信息:- Active Internet connections (servers and established):活动的互联网连接(监听和已建立的)。
- Proto:使用的协议(TCP、UDP、RAW等)。
- Recv-Q 和 Send-Q:接收队列和发送队列的长度,表示待处理的数据量。
- Local Address 和 Foreign Address:本地地址(源地址)和远程地址(目标地址),格式为
IP:Port
。 - State:连接状态,如
ESTABLISHED
、TIME_WAIT
、LISTEN
等,反映了TCP连接的不同阶段。 - PID/Program name:持有该套接字的进程ID和程序名。
- 路由表输出通常包含以下字段:
- Destination:目标网络地址。
- Gateway:下一跳网关地址。
- Genmask:子网掩码。
- Flags:路由标志,如
U
(已启用)、H
(主机路由)、G
(网关)、R
(重定向)等。 - Metric:路由度量,用于选择最优路径。
- Ref、Use、Iface:引用计数、使用计数、接口名称。
- 接口统计信息包括:
- Name:接口名称,如
eth0
、lo
等。 - MTU:最大传输单元。
- RX 和 TX:接收和发送的数据量、错误计数、丢包计数等。
- Name:接口名称,如