Netstat

netstat是一个基于命令行界面的網路实用工具，可显示当前的網路状态，包括传输控制协议层的连线状况、路由表、網路接口状态和網路协议的统计訊息等。netstat命令适用于类Unix系统（如macOS、Linux、Solaris和BSD）、IBM OS/2和Windows NT操作系统家族（如Windows XP、Windows Vista、Windows 7、Windows 8和Windows 10）。

netstat可用于查找網路中的问题，并可通过计算網路流量来度量網路性能。尽管该工具仍然被包含在许多Linux发行版中，但基本都被看作过时、应被替代的工具。

在Linux上，推荐使用ss替代netstat，使用ip route替代netstat -r，使用ip -s link替代netstat -i，使用ip maddr替代netstat -g。

 命令参数 
命令netstat的参数必须以连字符（-）而非斜杠（/）为前缀。并非所有平台都支持某些参数。
 参数 描述 Windows ReactOS macOS BSD NetBSD FreeBSD Linux Solaris OS/2 -a 显示所有活动中的网络连接和电脑正在监听的TCP/UDP端口。    -b 显示每个应用程序所使用的網路连接和监听端口 。（仅适用于Windows XP、Windows 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 XP、Windows Server 2003和Windows 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 Windows下route print命令相同。     -s 按網路协议显示统计訊息。默认情况下，显示TCP、UDP、ICMP和IP协议的统计訊息。如果Windows XP安装了IPv6协议，亦可以显示TCPv6、UDPv6、ICMPv6和IPv6协议的统计訊息。-p参数可用于指定一组协议。    -t 仅显示TCP连接。   -u 仅显示UDP连接。     -W 显示完整主机名或IPv6地址。     -v 与-b组合使用时，将显示所有应用程序使用的网络连接和监听端口所涉及的组件列表。    -h 显示该命令的提示。          -? 显示该命令的提示。          /? 显示该命令的提示。         

 统计訊息 
：網路协议，包括传输控制协议（）和用户数据报协议（）。
：本地计算机的IP地址和正在使用的端口号。除非使用-n参数，否则将显示与IP地址和端口对应的主机名称。如果主机正在侦听所有端口，则主机名显示为星号（*）。如果端口尚未建立，则端口号显示为星号。
：远程计算机的IP地址和正在使用的端口号。除非指定了-n参数，否则将显示与IP地址和端口对应的主机名称。如果端口尚未建立，则端口号显示为星号（*）。
：TCP连接的状态，可能的状态包括、、、、、、、、和。

 命令范例 
缩略图|macOS终端运行
要仅显示TCP或UDP协议的统计訊息，请键入以下命令之一：
netstat -sp tcp
netstat -sp udp

类Unix系统：
显示进程ID为“pid”的进程打开的所有端口：
netstat -aop | grep "pid"

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

Microsoft Windows：
显示活动的TCP连接和关联的进程ID，每5秒为一个更新周期（仅适用于基于Windows NT的操作系统或装有修补程序的Windows 2000）：
netstat -o 5

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

 应用（类UNIX系统） 
 命令  说明  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 -e与ipconfig的输出结果类似。 netstat -ct  显示TCP连接（持续更新）。netstat -g显示多播组訊息。netstat -lntu显示所有监听端口的守护进程和本地计算机上所有空闲的开放端口。netstat -atnp | grep ESTA显示所有状态为的TCP连接。

 通配符 
在netstat命令的输出结果中，星号（*）为通配符，表示“所有”。

例如：

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

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

 参考文献 

 外部链接 

Category:Unix网络相关软件

Category:Windows命令

Category:Windows通信和服务
Category:Windows管理
Category:Windows管理