netstat

显示网络连接、路由表与网络接口的统计数据等


语法格式

netstat [-tuwx] [--inet|--ip] [-acelnopv] [delay]
netstat [-g] [-cn] [delay]
netstat {-i|-I=iface} [-acenpv] [delay]
netstat [-r] [-tuw] [--inet|--ip] [-cenv] [delay]
netstat [-s] [-tuw] [delay]
netstat [-h|--help] [-V|--version]

命令简介

netstat命令用于显示网络连接、内核路由表和网络接口等各种网络统计数据与状态信息等。如果不加任何选项与参数,netstat将会显示当前打开的所有套接字。

如果第一个选项选择了“-i”、“-r”或“-s”等功能选项,netstat命令将分别显示网络接口、核心路由表与协议分类统计的汇总数据等。

在上述语法格式中,delay是抽样显示的延迟时间或称时间间隔(单位秒),表示连续显示相应的统计数据。

注意,netstat命令将会隐退,替换的命令是ss。取代“netstat -r”的是“ip route”,取代“netstat -i”的是“ip -s link”,取代“netstat -g”的是“ip maddr”。

功能选项

-g, --groups  显示IPv4与IPv6的广播组成员信息。

-i, -I=iface, --interfaces=iface  显示指定或所有网络接口的统计数据及状态信息等。

-r, --route  显示内核路由表。

-s, --statistics  按照协议分类显示每个协议的汇总统计数据。

命令选项

-a, --all  显示所有套接字(包括正在监听和未监听的套接字)的状态信息。

-c, --continuous  每秒一次,连续显示指定的信息。

-e, --extend  显示附加的信息。连续指定“-e”选项两次将会显示更多的内容。

-l, --listening  仅显示监听的套接字。

-n, --numeric  只需显示IP地址或端口号即可,不必把IP地址解析成相应的主机名或端口名等。

-o, --timers  显示时增加网络时钟方面的信息。

-p, --program  表示显示每个套接字所属程序的名字与进程ID。

-v, --verbose  显示命令的处理过程与动作。

-t, --tcp  仅显示TCP套接字的状态信息。

-u, --udp  仅显示UDP套接字的状态信息。

-w, --raw  仅显示原始套接字的状态信息。

-x, --unix  仅显示UNIX域套接字的状态信息。

--inet, --ip  显示TCP、UDP及原始套接字的状态信息。

命令输出

Active Internet connections (TCP, UDP, raw):

Proto  套接字采用的协议,如tcp、udp或raw。

Recv-Q  本地主机当前套接字接收队列中网络应用程序尚未读取的数据字节计数。

Send-Q  本地主机当前套接字发送队列中尚未确认远程主机是否已读取的数据字节计数。

Local Address  活动套接字的本地主机地址与端口号,其表示形式为“主机:端口号”,“主机”是主机名或IP地址。“端口号”是一个网络服务,可以是/etc/services文件定义的端口号,也可以是相应的服务名(如telnet)。除非指定了“-n”选项,本地主机地址字段通常是主机名(或规范域名)与服务名的组合。

Foreign Address  活动套接字的远程主机地址与端口号。表示方法同上。

State  表示网络连接(套接字)的状态。下面是部分常见的状态(注意,raw模式与UDP协议不提供网络连接状态信息,故其状态列通常为空):

ESTABLISHED  网络连接已建立,双方可以利用相应的套接字传输分组数据。

SYN_SENT  本地主机已利用套接字发出连接请求,正在尝试建立网络连接,并等待远程主机的确认。

SYN_RECV  本地主机已收到远程主机的网络连接请求,且已经给予确认,现正等待远程主机的最终确认。

FIN_WAIT1  本地主机已利用套接字发出关闭网络连接的请求,现正在等待远程主机的响应。处于这个状态表示本地主机已经开始了关闭网络连接的第一步。

FIN_WAIT2  在收到远程主机断开连接的确认之后,本地主机进入此状态。

TIME_WAIT  在第二次收到远程主机的最终确认之后,本地主机进入此状态。至此,网络连接基本上已经成功关闭,即将转入最终的CLOSED状态。

CLOSED  网络连接已经关闭,套接字处于空闲未用的状态。

CLOSE_WAIT  在收到远程主机关闭网络连接的请求,且已给予确认之后,本地主机进入此状态。正在等待本地套接字关闭。

LAST_ACK  在收到应用程序关闭网络连接的请求之后,本地主机进入此状态。等最终收到远程主机的确认之后即可转入最终的CLOSED状态。

LISTEN  本地主机正处于监听状态,相应的套接字正在监听来自远程主机的网络连接请求。

CLOSING  从FIN_WAIT1到TIME_WAIT状态有3条路径,一是直接进入TIME_WAIT状态,二是经FIN_WAIT2转入TIME_WAIT状态,第三条路径就是经CLOSING转入TIME_WAIT状态。

UNKNOWN  套接字的状态不确定。

User  套接字文件属主的用户名或用户ID。

PID/Program name  打开或使用套接字的进程的PID与进程名字。注意,仅当指定了“-p”选项后才会输出此项,而且只有超级用户才能看到完整的信息。

Active UNIX domain Sockets:

Proto  套接字采用的协议(通常为unix)。

RefCnt  引用计数,表示加接到相应套接字的进程数量。

Flags  标志字段。其中ACC(SO_ACCEPTON)、W(SO_WAITDATA)或N(SO_NOSPACE)是可能出现的标志之一。ACC标志表示一个套接字尚未连接,其相应的进程正在等待网络连接请求。

Type  套接字访问类型。Linux系统支持的套接字访问类型如下:

SOCK_DGRAM  相应的套接字用于数据报(无连接模式)。

SOCK_STREAM  相应的套接字是一个Stream(连接模式)套接字。

SOCK_RAW  相应的套接字用于原始套接字模式。

SOCK_RDM  相应的套接字用于提供可靠的消息传递服务。

SOCK_SEQPACKET  相应的套接字支持顺序分组数据传输。

SOCK_PACKET  相应的套接字支持原始接口访问。

State  状态字段通常包含下列关键字之一:

FREE  相应的套接字尚未分配。

LISTENING  相应的套接字正在监听一个网络连接请求。

CONNECTING  相应的套接字正在建立网络连接。

CONNECTED  相应的套接字已经建立网络连接。

DISCONNECTING  相应的套接字正在断开网络连接。

(空)  相应的套接字尚未连接网络。

PID/Program name  打开套接字的进程的PID与进程名字。注意,仅当指定了“-p”选项后才输出此项,而且只有超级用户才能看到完整的信息。

Path  套接字的文件路径名。

Kernel Interface table(“netstat -i”命令):

Iface  网络接口的名字

MTU  网络接口当前支持的最大传输单位。MTU是IP模块的设备驱动程序一次收发时能够处理的最大字节数量。对于常规的以太网络接口、回环网络接口(loopback)和IEEE 802.3网络接口,MTU的默认值分别为1500、8232和1492。

Met  网络接口当前支持的路由度量值。

RX-OK  正确无误地接收分组数据的数量。

RX-ERR  接收的分组数据本身有误的分组数据数量。

RX-DRP  接收时由于各种原因而丢弃的分组数据数量。

RX-OVR  由于接收错误或处理不及时等原因遗失的分组数据数量。

TX-OK  正确无误发送的分组数据数量。

TX-ERR  发送有误的分组数据数量。

TX-DRP  发送时丢弃的分组数据数量。

TX-OVR  由于发送错误而遗失的分组数据数量。

Flg  网络接口标志。网络接口可能的设置标志如下:

B  广播地址标志。

L  回环网络接口标志,表示相应的网络接口是回环接口。

M  混杂接收模式标志,意味着网络接口能够接收所有的分组数据。

O  网络接口禁用ARP的标志。

P  点到点链接标志,表示相应的网络接口采用点对点连接方式。

R  网络接口已处于运行状态。

U  网络接口已经启用。

Kernel IP routing table(“netstat -r”命令):

Destination  表示路由的目的主机或网络。

Gateway  表示把分组数据转发到目的主机或网络需要用到的网关。如果这个字段为星号“*”,则意味着未使用网关。

Genmask  确定路由时使用的子网掩码。当给定一个IP地址,期望找到一个适当的路由时,系统内核将会利用这个子网掩码对IP地址进行逻辑与运算,然后依次检索每一个路由表项,从中找出匹配的路由。

Flags  表示路由当前状态的标志。可能出现的状态标志如下:

U  表示相应的路由已经建立。

G  表示路由是利用网关实现的。

H  表示路由的目的地是一个主机,如回环接口表示的主机(127.0.0.1)。

R  表示路由是已恢复的动态路由。

D  表示路由是由路由守护进程或ICMP重定向消息动态建立的。

M  表示路由根据路由守护进程或ICMP重定向消息修改后发生了变动。

C  表示缓存的路由。

MSS  MSS(Maximum Segment Size)是最大数据段的字节数量,也是系统内核通过相应路由能够传输的最大数据报大小。

Window  本地系统能够接收远程主机一次传输的最大数据量。

irtt  “initial round trip time”的缩写,意即初始的往返传输时间。TCP协议能够确保在通信的主机之间可靠地传输数据。如果数据传输有误,TCP将会重传丢失的数据报。TCP协议采用一个计数器,记录数据报传输到远程主机花费的时间,以及收到一个确认需要多长时间,因而知道在重传数据报之前需要等待多长时间。这个时间称作数据报传输与确认的往返时间。在开始建立网络连接时,TCP协议将会采用一个初始的往返时间作为默认值。对于大多数网络而言,TCP协议采用的默认往返时间值是适当的,但对于一些速度较慢的网络,如果这个时间太短,将会引起不必要的数据报重传。必要的话,可以利用route命令设置irtt值。如果这个字段值为0,意味着采用默认值。

Iface  表示路由经由的网络接口。

应用实例

1. 查询网络接口的状态与统计数据。

2. 显示当前打开的所有套接字及其状态与统计信息。


索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z