netstat

netstat是一个基于命令行界面网络实用工具,可显示当前的网络状态,包括传输控制协议层的连线状况、路由表网络接口状态和网络协议的统计信息等[1]netstat命令适用于类Unix系统(如macOSLinuxSolarisBSD)、IBM OS/2Windows NT操作系统家族(如Windows XPWindows VistaWindows 7Windows 8Windows 10[2][3]

netstat
macOS终端运行netstat
操作系统Unix类Unix系统IBM OS/2Microsoft WindowsReactOS
类型命令

netstat可用于查找网络中的问题,并可通过计算网络流量来度量网络性能[4][5]。尽管该工具仍然被包含在许多Linux发行版中,但基本都被看作过时、应被替代的工具[6][7][8][9]

Linux上,推荐使用ss替代netstat,使用ip route替代netstat -r,使用ip -s link替代netstat -i,使用ip maddr替代netstat -g[10][11][12][13]

命令参数

命令netstat参数必须以连字符(-)而非斜杠(/)为前缀。并非所有平台都支持某些参数[1]

参数 描述 Windows[2][14] ReactOS[15] macOS[16][17][18] BSD[19] NetBSD[20][21] FreeBSD[22] Linux[3][7][8] Solaris[23] OS/2[24][25]
-a 显示所有活动中的网络连接和电脑正在监听的TCP/UDP端口
-b 显示每个应用程序所使用的网络连接和监听端口 。(仅适用于Windows XPWindows Server 2003或更高版本的Microsoft Windows操作系统,Windows 2000或更早版本不可用。)
-b -i,但计算网络流量的总字节数。
-e 显示以太网统计信息,例如发送和接收的字节数及数据包数。此参数可以与-s组合使用。
-f 显示外部地址的完整网域名称。(仅适用于Windows Vista和更高版本的Microsoft Windows操作系统。)
-f 限定显示使用特定套接字(unix、inet、inet6)的地址族。
-g 显示多播组信息。(可能仅适用于较新的操作系统。)
-i 显示网络接口及统计信息。
-m 显示随机存取存储器统计信息。
-n 显示活动中的TCP连接,但主机地址和端口号以数字形式表示,不会尝试确定实际主机名。
-o 显示活动中的TCP连接,并包含每个连接的进程ID()。根据PID,可在Windows任务管理器的“进程”选项卡中找到该应用程序。此参数可以与-a-n-p组合使用。如果安装了Windows修补程序,则此参数在Windows XPWindows Server 2003Windows 2000上可用。
-p 显示使用指定网络协议的连接。协议可以是TCP、UDP、TCPv6或UDPv6。如果此参数与-s组合使用,则协议可以是TCP、UDP、ICMP、IP、TCPv6、UDPv6、ICMPv6或IPv6。
-p 显示哪些进程正在使用哪些网络接口,类似于Microsoft Windows下的-b。(需要root权限才能执行此操作。)
-P 显示使用指定网络协议的连接。协议可以是IP、IPv6、ICMP、ICMPv6、IGMP、UDP、TCP或RawIP。
-r 显示路由表内容,与Microsoft Windowsroute print命令相同。
-s 按网络协议显示统计信息。默认情况下,显示TCP、UDP、ICMP和IP协议的统计信息。如果Windows XP安装了IPv6协议,亦可以显示TCPv6、UDPv6、ICMPv6和IPv6协议的统计信息。-p参数可用于指定一组协议。
-t 仅显示TCP连接。
-u 仅显示UDP连接。
-W 显示完整主机名或IPv6地址。
-v -b组合使用时,将显示所有应用程序使用的网络连接和监听端口所涉及的组件列表。
-h 显示该命令的提示。
-? 显示该命令的提示。
/? 显示该命令的提示。

统计信息

  • Proto网络协议,包括传输控制协议()和用户数据报协议()[26]
  • Local Address:本地计算机的IP地址和正在使用的端口号。除非使用-n参数,否则将显示与IP地址和端口对应的主机名称。如果主机正在侦听所有端口,则主机名显示为星号(*)。如果端口尚未建立,则端口号显示为星号[27]
  • Foreign Address:远程计算机的IP地址和正在使用的端口号。除非指定了-n参数,否则将显示与IP地址和端口对应的主机名称。如果端口尚未建立,则端口号显示为星号(*)[28]
  • State:TCP连接的状态,可能的状态包括CLOSE_WAITCLOSEDESTABLISHEDFIN_WAIT_1FIN_WAIT_2LAST_ACKLISTENSYN_RECEIVEDSYN_SENDTIME_WAIT[29]

命令范例

要仅显示TCP或UDP协议的统计信息,请键入以下命令之一[30]

netstat -sp tcp

netstat -sp udp

类Unix系统[1][3][9][31][32]

显示进程ID为“pid”的进程打开的所有端口:

netstat -aop | grep "pid"

持续更新活动中的TCP和UDP连接,但主机地址和端口号以数字形式表示,并显示哪些进程正在使用这些连接:

sudo netstat -nutpacw

Microsoft Windows[14]

显示活动的TCP连接和关联的进程ID,每5秒为一个更新周期(仅适用于基于Windows NT的操作系统或装有修补程序的Windows 2000):

netstat -o 5

显示活动中的TCP连接和关联的进程ID,但主机地址和端口号以数字形式表示(仅适用于基于Windows NT的操作系统或装有修补程序的Windows 2000):

netstat -no

应用(类UNIX系统)

命令说明[4][9]
netstat -a显示所有端口(无论被监听或不被监听)、所有网络协议的连接。
netstat -at仅显示TCP连接。
netstat -au仅显示UDP连接。
netstat -ant显示所有TCP连接,但不进行域名解析(即显示IP地址而不显示主机名)。
netstat -al显示所有被监听的端口。
sudo netstat -aep同时显示每个端口相关的进程和进程ID(需要root权限以运行此命令)。
netstat -s > wiki.txt输出当前计算机网络统计信息到文本文件wiki.txt
netstat -r显示路由表。与route -e的输出结果相同。
netstat -i显示所有网络接口netstat -i -eipconfig的输出结果类似。
netstat -ct显示TCP连接(持续更新)。
netstat -g 显示多播组信息。
netstat -lntu 显示所有监听端口的守护进程和本地计算机上所有空闲的开放端口。
grep ESTA 显示所有状态为ESTABLISHED的TCP连接。

通配符

netstat命令的输出结果中,星号(*)为通配符,表示“所有”[33][34]

例如:

....Local Address Foreign Address State
... *:smtp          *:*   LISTEN

在输出结果中,*:smtp表示该进程正在本地计算机的所有网络接口上监听所有映射SMTP的端口,此处的星号有时会被0.0.0.0代替,意义不改变。*:*中的第一个星号表示连接可以来自任何IP地址,第二个星号表示连接可以来自远程计算机上的任何端口[25][33][34][35]

参考文献

  1. . Geekflare. 2015-02-15 [2019-07-31]. (原始内容存档于2016-04-29).
  2. Stanek, William R. . Microsoft Press. 2008. ISBN 978-0735622623.
  3. . [2019-07-31]. (原始内容存档于2019-06-22).
  4. . Unix Tutorial. 2019-01-31 [2019-07-31]. (原始内容存档于2019-10-18).
  5. . ibm.com. [2020-09-26]. (原始内容存档于2019-10-18).
  6. . linux.slashdot.org. [2019-07-31]. (原始内容存档于2019-06-01).
  7. . linux.die.net. [2019-07-31]. (原始内容存档于2019-05-30).
  8. Mutai, Josphat. . 2018-01-17 [2019-07-31]. (原始内容存档于2018-10-08).
  9. . wiki.linuxfoundation.org. [2019-07-31]. (原始内容存档于2018-10-21).
  10. . linuxfoundation.org. [2019-07-31]. (原始内容存档于2016-06-11).
  11. . archlinux.org. 2011-06-08 [2019-07-31]. (原始内容存档于2019-07-22).
  12. . Doug Vitale Tech Blog. [2019-07-31]. (原始内容存档于2019-06-29).
  13. . [2014-08-02]. (原始内容存档于2019-02-17). This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.
  14. LLC), Tara Meyer (Aquent. . docs.microsoft.com. [2019-07-31]. (原始内容存档于2019-10-18).
  15. . doxygen.reactos.org. [2019-07-31]. (原始内容存档于2019-10-18).
  16. Alex; Alex, er Fox; AppleGazette, er Fox is a freelance tech writer who loves translating tech for consumers His work appears in; MakeTechEasier; SpyreStudios. . Lifewire.
  17. hb. . 2013-07-31 [2019-07-31]. (原始内容存档于2017-07-13).
  18. . www.oreilly.com. [2019-07-31]. (原始内容存档于2019-10-18).
  19. . man.openbsd.org. [2019-07-31]. (原始内容存档于2019-05-07).
  20. . wiki.netbsd.org. [2019-07-31]. (原始内容存档于2018-01-11).
  21. . netbsd.gw.com.
  22. . www.freebsd.org. [2019-07-31]. (原始内容存档于2018-12-22).
  23. . docs.oracle.com. [2019-07-31]. (原始内容存档于2014-02-15).
  24. Dyson, Peter. . Sybex. 1995. ISBN 978-0782116632.
  25. . www.ibm.com. [2019-08-04]. (原始内容存档于2019-08-04).
  26. . [2019-07-31]. (原始内容存档于2018-06-16).
  27. . 2016-11-10 [2019-07-31]. (原始内容存档于2019-06-20).
  28. . TechGenix. 2011-02-09 [2019-07-31]. (原始内容存档于2018-10-05).
  29. Postel, J. . tools.ietf.org. [2019-07-31]. (原始内容存档于2019-01-02).
  30. . www.linuxhowtos.org. [2019-07-31]. (原始内容存档于2018-10-09).
  31. . Unix & Linux Stack Exchange. [2019-07-31]. (原始内容存档于2019-10-18).
  32. . support.rackspace.com. [2019-08-04]. (原始内容存档于2019-08-04).
  33. . linux-ip.net. [2019-07-31]. (原始内容存档于2018-10-03).
  34. Ferguson, Bill. . John Wiley & Sons. 2006-02-20 Google Books.
  35. . library.netapp.com.

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.