目录
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:接口名称,如