netstat

Linux运行netstat

操作系统| Unix和类Unix系统、IBM OS/2、Microsoft Windows、ReactOS
类型| 命令

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

`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 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）。根据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 | 显示该命令的提示。  | 否  | 否  | 是  | 是  | 是  | 是  | 是  | 是  | 否
-? | 显示该命令的提示。  | 否  | 否  | 否  | 否  | 否  | 否  | 否  | 否  | 是
/? | 显示该命令的提示。  | 是  | 是  | 否  | 否  | 否  | 否  | 否  | 否  | 否

## 统计訊息[编辑]

* Proto：網路协议，包括传输控制协议（TCP）和用户数据报协议（UDP）[26]。
* Local Address：本地计算机的IP地址和正在使用的端口号。除非使用-n参数，否则将显示与IP地址和端口对应的主机名称。如果主机正在侦听所有端口，则主机名显示为星号（*）。如果端口尚未建立，则端口号显示为星号[27]。
* Foreign Address：远程计算机的IP地址和正在使用的端口号。除非指定了-n参数，否则将显示与IP地址和端口对应的主机名称。如果端口尚未建立，则端口号显示为星号（*）[28]。
* State：TCP连接的状态，可能的状态包括CLOSE_WAIT、CLOSED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、LAST_ACK、LISTEN、SYN_RECEIVED、SYN_SEND和TIME_WAIT[29]。

## 命令范例[编辑]

macOS终端运行netstat

要仅显示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 -e`与`ipconfig`的输出结果类似。
`netstat -ct` | 显示TCP连接（持续更新）。
`netstat -g` | 显示多播组訊息。
`netstat -lntu` | 显示所有监听端口的守护进程和本地计算机上所有空闲的开放端口。
`netstat -atnp | 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. ^ 1.0 1.1 1.2 netstat Command Usage on Linux. Geekflare. 2015-02-15  [2019-07-31]. （原始内容存档于2016-04-29）.
2. ^ 2.0 2.1 Stanek, William R. Windows Command-Line Administrator's Pocket Consultant, 2nd Edition. Microsoft Press. 2008. ISBN 978-0735622623.
3. ^ 3.0 3.1 3.2 20 Netstat Commands for Linux Network Management.  [2019-07-31]. （原始内容存档于2019-06-22）.
4. ^ 4.0 4.1 Show Network Errors with netstat. Unix Tutorial. 2019-01-31  [2019-07-31]. （原始内容存档于2019-10-18）.
5. ^ IBM Systems Information Center. ibm.com.  [2020-09-26]. （原始内容存档于2019-10-18）.
6. ^ There Are Real Reasons For Linux To Replace ifconfig, netstat and Other Classic Tools - Slashdot. linux.slashdot.org.  [2019-07-31]. （原始内容存档于2019-06-01）.
7. ^ 7.0 7.1 netstat(8) - Linux man page. linux.die.net.  [2019-07-31]. （原始内容存档于2019-05-30）.
8. ^ 8.0 8.1 Mutai, Josphat. netstat vs ss usage guide on Linux. 2018-01-17  [2019-07-31]. （原始内容存档于2018-10-08）.
9. ^ 9.0 9.1 9.2 networking:net-tools [Wiki]. wiki.linuxfoundation.org.  [2019-07-31]. （原始内容存档于2018-10-21）.
10. ^ net-tools. linuxfoundation.org.  [2019-07-31]. （原始内容存档于2016-06-11）.
11. ^ Arch Linux. archlinux.org. 2011-06-08  [2019-07-31]. （原始内容存档于2019-07-22）.
12. ^ Deprecated Linux networking commands and their replacements. Doug Vitale Tech Blog.  [2019-07-31]. （原始内容存档于2019-06-29）.
13. ^ netstat man page (notes section).  [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. ^ 14.0 14.1 LLC), Tara Meyer (Aquent. Netstat: TCP/IP. docs.microsoft.com.  [2019-07-31]. （原始内容存档于2019-10-18）.
15. ^ ReactOS: base/applications/network/netstat/netstat.c Source File. 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. How to Use the Netstat Command on Mac. Lifewire.  [2019-07-31]. （原始内容存档于2021-11-26）.
17. ^ hb. Mac OS X: List listening ports and programs using netstat. 2013-07-31  [2019-07-31]. （原始内容存档于2017-07-13）.
18. ^ netstat - Mac OS X in a Nutshell [Book]. www.oreilly.com.  [2019-07-31]. （原始内容存档于2019-10-18）.
19. ^ netstat(1) - OpenBSD manual pages. man.openbsd.org.  [2019-07-31]. （原始内容存档于2019-05-07）.
20. ^ how to gather network information on netbsd. wiki.netbsd.org.  [2019-07-31]. （原始内容存档于2018-01-11）.
21. ^ netstat(1) - NetBSD Manual Pages. netbsd.gw.com. [失效連結]
22. ^ netstat(1). www.freebsd.org.  [2019-07-31]. （原始内容存档于2018-12-22）.
23. ^ Synopsis - man pages section 1M: System Administration Commands. docs.oracle.com.  [2019-07-31]. （原始内容存档于2014-02-15）.
24. ^ Dyson, Peter. Mastering OS/2 Warp. Sybex. 1995. ISBN 978-0782116632.
25. ^ 25.0 25.1 IBM Knowledge Center. www.ibm.com.  [2019-08-04]. （原始内容存档于2019-08-04）.
26. ^ Network Administration: The netstat Command.  [2019-07-31]. （原始内容存档于2018-06-16）.
27. ^ How to check if port is in use on Linux or Unix. 2016-11-10  [2019-07-31]. （原始内容存档于2019-06-20）.
28. ^ Determining If You are Actively Being Compromised. TechGenix. 2011-02-09  [2019-07-31]. （原始内容存档于2018-10-05）.
29. ^ Postel, J. Transmission Control Protocol. tools.ietf.org.  [2019-07-31]. （原始内容存档于2019-01-02）.
30. ^ Linux Howtos: Network -> Using netstat. www.linuxhowtos.org.  [2019-07-31]. （原始内容存档于2018-10-09）.
31. ^ networking - How to know which ports are listened by certain PID?. Unix & Linux Stack Exchange.  [2019-07-31]. （原始内容存档于2019-10-18）.
32. ^ Rackspace Support Documentation. support.rackspace.com.  [2019-08-04]. （原始内容存档于2019-08-04）.
33. ^ 33.0 33.1 G.4. netstat. linux-ip.net.  [2019-07-31]. （原始内容存档于2018-10-03）.
34. ^ 34.0 34.1 Ferguson, Bill. Network+ Fast Pass. John Wiley & Sons. 2006-02-20 -通过Google Books.
35. ^ Viewing statistics of all active TCP connections. library.netapp.com.  [2019-07-31]. （原始内容存档于2019-07-31）.

## 外部链接[编辑]

* `netstat(8)` – Linux程序员手册页 – 管理及特权命令（Administration and Privileged Commands）
* `netstat(1)` – FreeBSD通用命令（General Commands）手册页
* `netstat(1M)` – Solaris 10系统管理命令（System Administration Commands）参考手册页

* 查
* 论
* 编

Unix命令行程序和shell内建命令

文件系統|

* cat
* cd
* chmod
* chown
* chgrp
* cksum
* cmp
* cp
* dd
* du
* df
* file
* fsck
* fuser
* ln
* ls
* mkdir
* mount
* mv
* pax（英语：pax (Unix)）
* pwd
* rm
* rmdir
* size
* split
* stat
* tee
* touch
* type（英语：type (Unix)）
* umask（英语：umask）

程序|

* at
* bg
* chroot
* cron
* fg
* kill
* killall（英语：killall）
* nice
* pgrep
* pkill（英语：pkill）
* ps
* pstree（英语：pstree）
* time
* top

用户环境|

* clear
* env
* exit
* history（英语：history (Unix)）
* id
* logname
* mesg（英语：mesg）
* passwd
* su
* sudo
* uptime
* talk（英语：talk (software)）
* tput（英语：tput）
* uname
* w
* wall（英语：wall (Unix)）
* who
* whoami
* write（英语：write (Unix)）

文本编辑|

* awk
* banner（英语：banner (Unix)）
* basename
* comm（英语：comm）
* csplit（英语：csplit）
* cut
* diff
* dirname
* ed
* ex
* fmt（英语：fmt）
* fold（英语：fold (Unix)）
* head（英语：head (Unix)）
* iconv
* join（英语：join (Unix)）
* less
* more
* nl（英语：nl (Unix)）
* paste（英语：paste (Unix)）
* sed
* sort（英语：sort (Unix)）
* spell（英语：spell (Unix)）
* strings（英语：strings (Unix)）
* tail
* tr
* uniq（英语：uniq）
* vi
* wc
* xargs

壳层内建|

* alias
* echo
* printf格式字符串
* test（英语：test (Unix)）
* unset
* wait

网络|

* dig
* host
* ifconfig
* inetd（英语：inetd）
* netcat
* netstat
* nslookup
* ping
* rdate（英语：rdate）
* rlogin（英语：rlogin）
* route
* ssh
* traceroute

查找|

* find
* grep
* locate
* whatis（英语：whatis）
* whereis

文档|

* apropos（英语：apropos (Unix)）
* help（英语：help (command)）
* man

软件开发|

* ar
* ctags
* lex
* make
* nm
* strip
* yacc

杂项|

* bc
* cal
* dc
* expr
* lp（英语：lp (Unix)）
* lpr
* sleep
* true和false
* yes

Unix实用程序列表

* 查
* 论
* 编

Windows命令行程序和殼層內建指令

* COMMAND.COM
* 命令提示字元
* Windows PowerShell
* 復原主控台

文件管理导航|

* cd (chdir)
* dir
* pushd
* popd
* tree

文件管理操作|

* attrib（英语：ATTRIB）
* cacls
* cipher
* compact
* copy
* del（英语：del (command)） (erase)
* deltree（英语：deltree）
* expand
* icacls
* makecab
* md (mkdir)
* move（英语：move (command)）
* rd (rmdir)
* recover（英语：recover (command)）
* ren（英语：ren (command)） (rename)
* replace（英语：replace (command)）
* Rmdir
* robocopy（英语：robocopy）
* xcopy（英语：XCOPY）

磁盘管理|

* chkdsk
* convert（英语：convert (command)）
* defrag
* diskcomp（英语：diskcomp）
* diskcopy（英语：diskcopy）
* diskpart（英语：diskpart）
* fdisk（英语：fdisk）
* format（英语：Format (command)）
* label（英语：label (command)）
* subst（英语：SUBST）
* scandisk
* sys（英语：SYS (command)）
* vol（英语：vol (command)）
* vssadmin

进程|

* exit
* kill
* powercfg（英语：powercfg）
* runas
* sc
* shutdown
* start（英语：start (command)）
* taskkill
* tasklist（英语：tasklist）

注册表|

* assoc
* ftype（英语：ftype）
* reg
* regini
* Regsvr32

用户环境|

* date
* mode
* path
* set
* setx
* time（英语：TIME (command)）
* title
* ver（英语：ver (command)）
* Whoami

文件内容|

* comp（英语：comp (command)）
* edit（英语：MS-DOS Editor）
* edlin（英语：edlin）
* fc（英语：Microsoft File Compare）
* find（英语：find (command)）
* findstr
* print（英语：PRINT (command)）
* type（英语：TYPE (DOS command)）

脚本|

* choice（英语：choice (command)）
* clip
* cscript
* doskey（英语：DOSKEY）
* echo
* for
* Goto
* if
* more
* pause
* prompt（英语：Command-line_interface#Command_prompt）
* rem

网络|

* arp
* getmac
* hostname
* ipconfig
* net use（英语：net use）
* netsh
* netstat
* nslookup
* Pathping
* ping
* route
* tracert

维护|

* driverquery（英语：driverquery）
* msiexec
* ntbackup
* sfc
* systeminfo
* w32tm（英语：w32tm）
* WBAdmin（英语：WBAdmin）
* winsat
* wmic

启动管理|

* bcdedit
* bootcfg
* fixboot
* fixmbr

软件开发|

* debug（英语：debug (command)）
* exe2bin
* QBASIC

杂项|

* cls
* help（英语：help (command)）

* MS-DOS命令列表
* 环境变量

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板