「netstat(8)」-

  LINUX MANUAL PAGES

打印网络链接、路由表、接口统计、伪装连接、组播成员信息

命令语法格式

netstat [address_family_options] [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w] [–l2cap|-2] [–rfcomm|-f] [–listening|-l] [–all] [–numeric] [–numeric-hosts] [–numeric-ports] [–numeric-users] [–symbolic|-N] [–extend] [–timers|-o] [–program] [–verbose] [–continuous] [–wide|-W]

netstat {–route} [address_family_options] [–extend] [–verbose] [–numeric] [–numeric-hosts] [–numeric-ports] [–numeric-users] [–continuous]

netstat {–interfaces} [–all] [–extend] [–verbose] [–program] [–numeric] [–numeric-hosts] [–numeric-ports] [–numeric-users] [–continuous]

netstat {–groups|-g} [–numeric] [–numeric-hosts] [–numeric-ports] [–numeric-users] [–continuous]

netstat {–masquerade} [–extend|-e] [–numeric] [–numeric-hosts] [–numeric-ports] [–numeric-users] [–continuous]

netstat {–statistics} [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w]

地址族参数

参数address_family_options取值如下:

[-4|–inet] [-6|–inet6] [–protocol={inet,inet6,unix,ipx,ax25,netrom,ddp,bluetooth,…}] [–unix|-x] [–inet|–ip|–tcpip]
[–ax25] [–x25] [–rose] [–ash] [–bluetooth] [–ipx] [–netrom] [–ddp|–appletalk] [–econet|–ec]

命令描述

命令netstat打印有关Linux网络子系统的信息。

这个程序已经过时了。现在已经使用ss(8)命令代替netstat命令,该命令位于iproute2软件包中。替换netstat -r的是ip route命令;替换netstat -i的是ip -s link命令;替换netstat -g的是ip maddr命令。

命令行选项

控制输出内容的选项

命令打印的信息类型由第一个参数控制,如下所示:

(none)
默认情况下,命令netstat显示当前打开的套接字列表。如果未指定任何地址族,则将打印所有的已配置地址族的活动套接字。

–route, -r
显示内核路由表。有关详细信息,请参阅route(8)中的说明。命令netstat -rroute -e产生的输出是相同的。

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

–interfaces, -i
显示所有网络接口的表。

–masquerade, -M
显示伪装连接列表。

–statistics, -s
显示每个协议的摘要统计信息。

其他选项

–verbose, -v
使用详细的输出告诉用户发生了什么。对于未配置的地址族,该命令会特别地打印一些有用的信息。

–wide, -W
根据需要使输出尽可能的宽泛而不截断IP地址。现在该选项是可选的,来不破坏现有脚本。

–protocol=family, -A
显示地址族为family的连接(可能更好说法为低级协议)。参数family是逗号(’,’)分隔的地址族关键字列表,如inet、inet6、unix、ipx、ax25、netrom、econet、ddp、bluetooth,这与使用–inet|-4, –inet6|-6, –unix|-x, –ipx, –ax25, –netrom, –ddp, and –bluetooth选项具有相同的效果。

地址族“inet”(Iv4)包括raw、udp、udplite、tcp协议套接字。地址族”bluetooth”(Iv4)包括l2cap、rfcomm协议套接字。

-c, –continuous
使netstat每秒打印一次信息。

-o, –timers
包括与网络计时器相关的信息。

-l, –listening
仅显示监听的套接字。该选项不是默认的,未指定该选项时,不显示监听的套接字。

-a, –all
显示所有的套接字,包括监听的和未监听的。与选项–interfaces一起,可以显示未激活接口的套接字。

扩展显示字段

-e, –extend
显示其他信息。使用此选项两次将显示最多的细节信息。

-p, –program
显示每个套接字所属程序的PID和程序名称。

路由表选项

-F
从FIB中打印路由信息。

-C
从路由缓存中打印路由信息。

输出的符号解析

–numeric,-n
显示数字类型的地址、端口、用户名,而不解析为符号;

–numeric-hosts
仅仅显示数字类型的地址,但不影响端口、用户名的解析;

–numeric-ports
仅仅显示数字类型的端口,但不影响IP地址、用户名的解析;

–numeric-users
仅仅显示数字类型的用户ID,但不影响IP地址、端口的解析;

输出说明

Active Internet connections (TCP, UDP, UDPLite, raw)

Proto
套接字使用的协议(tcp,udp,udpl,raw)。

Recv-Q
Established:连接到此套接字的用户程序未复制的字节数。Listening:从内核2.6.18开始,此列包含当前的syn积压。

Send-Q
Established:远程主机未确认的字节数。Listening:从内核2.6.18开始,此列包含syn积压的最大大小。

Local Address
套接字本地端的地址和端口号。除非指定了–numeric(-n)选项,否则套接字地址将被解析为其规范主机名(FQDN),并且端口号将转换为相应的服务名称。

Foreign Address
套接字远程端的地址和端口号。 类似于“Local Address”。

State
套接字的状态。由于在原始模式下是没有状态的,并且在UDP和UDPLite中通常没有使用状态,因此该列可以留空。通常,可以是以下几个值中的一个:

ESTABLISHED
套接字已建立连接。

SYN_SENT
套接字正在主动尝试建立连接。

SYN_RECV
已从网络中接收连接请求。

FIN_WAIT1
套接字已关闭,连接正在关闭。

FIN_WAIT2
连接已关闭,套接字正在等待远程端关闭。

TIME_WAIT
在套接字关闭后,套接字等待处理仍在网络中的数据包。

CLOSE
套接字未被使用。

CLOSE_WAIT
远程端已关闭,等待套接字关闭。

LAST_ACK
远程端已关闭,套接字已关闭。等待确认(ACK)。

LISTEN
套接字正在侦听传入连接。 除非指定–listening(-l)或–all(-a)选项,否则此类套接字不包含在输出中。

CLOSING
两个套接字都关闭了,但我们仍然没有发送所有数据。

UNKNOWN
套接字的状态未知。

User

套接字所有者的用户名或UID(UID)。

PID/Program name

斜杠(/)分隔的进程ID(PID)和拥有套接字的进程的进程名称。选项–program被使用时才会包含此列。您还需要超级用户权限才能在不属于你的套接字上查看此信息。此标识信息尚不可用于IPX套接字。

Timer
手册中暂无说明。

Active UNIX domain Sockets

Proto
套接字使用的协议(tcp,udp,udpl,raw)。

RefCnt
引用计数(即通过此套接字附加的进程)。

Flags
显示的标志是SO_ACCEPTON(ACC),SO_WAITDATA(W),SO_NOSPACE(N)。标志SO_ACCECPTON用于未连接的套接字,如果它们的相应进程正在等待连接请求。其他标志不属于正常的兴趣。

Type
有以下几种类型的套接字访问:

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

SOCK_STREAM
这是一个流(连接)套接字。

SOCK_RAW
套接字用作原始套接字。

SOCK_RDM
这个提供可靠传递的消息。

SOCK_SEQPACKET
这是一个顺序数据包套接字。

SOCK_PACKET
原始接口访问套接字。

UNKNOWN
谁知道未来会给我们带来什么 – 只是写这里 🙂

State

This field will contain one of the following Keywords:

FREE
套接字未分配。

LISTENING
套接字正在侦听连接请求。如果指定–listening(-l)或–all(-a)选项,则此类套接字仅包含在输出中。

CONNECTING
套接字即将建立连接。

CONNECTED
套接字已连接。

DISCONNECTING
套接字正在断开连接。

(empty)
套接字未连接到另一个套接字。

UNKNOWN
该状态永远都不应该出现。

PID/Program name
斜杠(/)分隔的进程ID(PID)和拥有套接字的进程的进程名称。选项–program被使用时才会包含此列。您还需要超级用户权限才能在不属于你的套接字上查看此信息。此标识信息尚不可用于IPX套接字。

Path
这是相应进程附加的套接字的路径名。

Active IPX sockets
手册中并没有太多的说明。

Active NET/ROM sockets
手册中并没有太多的说明。

Active AX.25 sockets
手册中并没有太多的说明。

注意事项

如果套接字在查看时发生了更改,则偶尔会出现奇怪的信息。这不太可能发生。

相关文件

/etc/services
服务翻译文件。包含了端口、协议和服务之间的对应关系。

/proc
文件系统proc的挂载点,通过下面的文件访问内核状态信息。

/proc/net/dev
设备信息。

/proc/net/raw
原始套接字信息。

/proc/net/tcp
TCP套接字信息。

/proc/net/udp
UDP套接字信息。

/proc/net/udplite
UDPLite套接字信息。

/proc/net/igmp
IGMP多播信息。

/proc/net/unix
Unix域套接字信息。

/proc/net/ipx
IPX套接字信息。

/proc/net/ax25
AX25套接字信息。

/proc/net/appletalk
DDP (appletalk)套接字信息。

/proc/net/nr
NET/ROM套接字信息。

/proc/net/route
IP路由信息。

/proc/net/ax25_route
AX25路由信息。

/proc/net/ipx_route
IPX路由信息。

/proc/net/nr_nodes
NET/ROM节点列表。

/proc/net/nr_neigh
NET/ROM邻居。

/proc/net/ip_masquerade
伪装连接。

/sys/kernel/debug/bluetooth/l2cap
蓝牙L2CAP信息。

/sys/kernel/debug/bluetooth/rfcomm
蓝牙串行连接

/proc/net/snmp
统计

使用示例

使用一条命令,显示系统已启动服务正在监听的端口号:

# netstat -n -l -p

选项-n表示不反向解写IP地址、端口;选项-l表示显示将听的服务;选项-p打印程序;

相关手册

route(8), ifconfig(8), iptables(8), proc(5) ss(8) ip(8)

参考文献

  • man 8 netstat, Version net-tools 2.10-alpha

更新日志

  • 08/02/2018 创建文章