netstat - 打印网络连接、路由表、接口统计信息、伪装连接和多播成员
概要
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w]
[--l2cap|-2] [--rfcomm|-f] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c] [--wide|-W]
netstat {--route|-r} [address_family_options] [--extend|-e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--interfaces|-i} [--all|-a] [--extend|-e[--extend|-e]] [--verbose|-v] [--program|-p]
[--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--groups|-g} [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]
[--continuous|-c]
netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w]
netstat {--version|-V}
netstat {--help|-h}
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 的替代方案是 ss。netstat -r 的替代方案是 ip route。netstat -i 的替代方案是 ip -s link。netstat -g 的替代方案是 ip maddr。
描述
Netstat 打印有关 Linux 网络子系统的信息。打印的信息类型由第一个参数控制,如下所示:
(无)
默认情况下,netstat 显示一个打开的套接字列表。如果您没有指定任何地址族,则将打印所有已配置地址族的活动套接字。
--route, -r
显示内核路由表。有关详细信息,请参阅 route(8) 中的说明。netstat -r 和 route -e 产生相同的输出。
--groups, -g
显示 IPv4 和 IPv6 的多播组成员资格信息。
--interfaces, -i
显示所有网络接口的表。
--masquerade, -M
显示伪装连接的列表。
--statistics, -s
显示每个协议的摘要统计信息。
选项
--verbose, -v
通过详细输出告诉用户正在发生什么。特别是打印一些关于未配置的地址族的有用信息。
--wide, -W
不要通过使用尽可能宽的输出来截断 IP 地址。目前这还是可选的,以避免破坏现有的脚本。
--numeric, -n
显示数字地址,而不是尝试确定符号化的主机、端口或用户名。
--numeric-hosts
显示数字主机地址,但不影响端口或用户名的解析。
--numeric-ports
显示数字端口号,但不影响主机或用户名的解析。
--numeric-users
显示数字用户 ID,但不影响主机或端口名的解析。
--protocol=family, -A
指定要显示其连接的地址族(或者更准确地说,是低级协议)。family 是一个逗号 (,) 分隔的地址族关键字列表,例如 inet、inet6、unix、ipx、ax25、netrom、econet、ddp 和 bluetooth。这与使用 --inet|-4、--inet6|-6、--unix|-x、--ipx、--ax25、--netrom、--ddp 和 --bluetooth 选项具有相同的效果。
地址族 inet(IPv4)包括原始套接字、UDP、UDPLite 和 TCP 协议套接字。
地址族 bluetooth(IPv4)包括 L2CAP 和 RFCOMM 协议套接字。
-c, --continuous
这将导致 netstat 每秒打印一次所选信息。
-e, --extend
显示其他信息。使用此选项两次以获得最大的详细信息。
-o, --timers
包括与网络计时器相关的信息。
-p, --program
显示每个套接字所属的程序 PID 和名称。如果套接字属于内核(例如,内核服务,或者进程已退出但套接字尚未完成关闭),则显示一个连字符。
-l, --listening
仅显示侦听套接字。(默认情况下,这些套接字将被省略。)
-a, --all
显示侦听和非侦听套接字。与 --interfaces 选项一起使用时,显示未启动的接口。
-F
从 FIB 打印路由信息。(这是默认设置。)
-C
从路由缓存中打印路由信息。
输出
活动 Internet 连接(TCP、UDP、UDPLite、原始套接字)
Proto
套接字使用的协议(tcp、udp、udpl、raw)。
Recv-Q
已建立连接:用户程序未复制的字节数。侦听状态:从 Kernel 2.6.18 开始,此列包含当前的 syn 积压。
Send-Q
已建立连接:远程主机未确认的字节数。侦听状态:从 Kernel 6.18 开始,此列包含 syn 积压的最大大小。
本地地址
套接字本地端地址和端口号。除非指定了 --numeric (-n) 选项,否则套接字地址将被解析为其规范主机名(FQDN),并且端口号将被转换为相应的服务名称。
外地地址
套接字的远程端地址和端口号。类似于“本地地址”。
状态
套接字的状态。由于在原始模式下没有状态,并且通常 UDP 和 UDPLite 也不使用状态,因此此列可以留空。通常,这可以是以下几种值之一:
ESTABLISHED
套接字已建立连接。
SYN_SENT
套接字正在积极尝试建立连接。
SYN_RECV
已从网络接收到连接请求。
FIN_WAIT1
套接字已关闭,并且正在关闭连接。
FIN_WAIT2
连接已关闭,套接字正在等待来自远程端的关闭。
TIME_WAIT
套接字正在等待关闭后处理仍存在于网络中的数据包。
CLOSE
套接字未被使用。
CLOSE_WAIT
远程端已关闭,正在等待套接字关闭。
LAST_ACK
远程端已关闭,套接字已关闭。正在等待确认。
LISTEN 套接字正在侦听传入的连接。除非指定了 --listening (-l) 或 --all (-a) 选项,否则此类套接字不会包含在输出中。
CLOSING
两个套接字都已关闭,但我们仍然没有发送所有数据。
DISCONNECTING
套接字的状态未知。
用户
套接字所有者的用户名或用户 ID (UID)。
PID/程序名称
一个以斜杠分隔的对,表示拥有该套接字的进程的进程 ID (PID) 和进程名称。--program 选项会导致包含此列。您还需要超级用户权限才能查看您不拥有的套接字上的此信息。此标识信息尚未适用于 IPX 套接字。
定时器
与此套接字关联的 TCP 定时器。格式为 timer(a/b/c)。定时器可以是以下值之一:
off 没有为该套接字设置定时器。
on 套接字的重传定时器处于活动状态。
keepalive
保活定时器处于活动状态。
timewait
连接正在关闭,并且套接字的 timewait 定时器处于活动状态。
括号中的值:
a 定时器值。
b 发送的重传次数。
c 发送的保活次数。
活动的 UNIX 域套接字
协议
套接字使用的协议(通常为 unix)。
RefCnt
引用计数(即通过此套接字连接的进程数)。
标志
显示的标志是 SO_ACCEPTON(显示为 ACC)、SO_WAITDATA (W) 或 SO_NOSPACE (N)。如果相应的进程正在等待连接请求,则 SO_ACCECPTON 用于未连接的套接字。其他标志通常不重要。
类型
有几种类型的套接字访问:
SOCK_DGRAM
套接字用于数据报(无连接)模式。
SOCK_STREAM
这是一个流(连接)套接字。
SOCK_RAW
套接字用作原始套接字。
SOCK_RDM
这提供可靠的消息传递。
SOCK_SEQPACKET
这是一个顺序数据包套接字。
SOCK_PACKET
原始接口访问套接字。
UNKNOWN
无论未来会给我们带来什么——请在此处填写。
状态
此字段将包含以下关键字之一:
FREE:套接字未分配
LISTENING:套接字正在监听连接请求。只有在指定 `--listening (-l)` 或 `--all (-a)` 选项时,此类套接字才会包含在输出中。
CONNECTING:套接字即将建立连接。
CONNECTED:套接字已连接。
DISCONNECTING:套接字正在断开连接。
(空):套接字未连接到其他套接字。
DISCONNECTING:此状态不应发生。
PID/程序名称
拥有套接字的进程的进程 ID (PID) 和进程名称。更多信息请参见上面的“活动互联网连接”部分。
路径
这是相应进程连接到套接字的路径名。
活动 IPX 套接字
(需要由了解此的人来完成)
活动 NET/ROM 套接字
(需要由了解此的人来完成)
活动 AX.25 套接字
(需要由了解此的人来完成)
文件
/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 —— 统计信息
参见
route(8), ifconfig(8), iptables(8), proc(5), ss(8), ip(8)
错误
如果套接字在查看时发生更改,有时可能会出现奇怪的信息。这种情况不太可能发生。
作者
netstat 用户界面由 Fred Baumgarten <_> 编写,man 页面基本上由 Matt Welsh <_> 编写。它由 Alan Cox <_> 更新,然后由 Tuan Hoang <_> 再次更新。man 页面和 net-tools 包中的命令由 Bernd Eckenfels <_> 完全重写。UDPLite 选项由 Brian Micek <_> 添加。