netstat
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]。
作業系統 | Unix和類Unix系統、IBM OS/2、Microsoft Windows、ReactOS |
---|---|
類型 | 命令 |
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]。
命令範例
要僅顯示TCP或UDP協定的統計訊息,請鍵入以下命令之一[30]:
netstat -sp tcp
netstat -sp udp
- 顯示行程ID為「pid」的行程打開的所有埠:
netstat -aop | grep "pid"
- 持續更新活動中的TCP和UDP連接,但主機位址和埠號以數字形式表示,並顯示哪些行程正在使用這些連接:
sudo netstat -nutpacw
- 顯示活動的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.0 1.1 1.2 netstat Command Usage on Linux. Geekflare. 2015-02-15 [2019-07-31]. (原始內容存檔於2016-04-29).
- ^ 2.0 2.1 Stanek, William R. Windows Command-Line Administrator's Pocket Consultant, 2nd Edition. Microsoft Press. 2008. ISBN 978-0735622623.
- ^ 3.0 3.1 3.2 20 Netstat Commands for Linux Network Management. [2019-07-31]. (原始內容存檔於2019-06-22).
- ^ 4.0 4.1 Show Network Errors with netstat. Unix Tutorial. 2019-01-31 [2019-07-31]. (原始內容存檔於2019-10-18).
- ^ IBM Systems Information Center. ibm.com. [2020-09-26]. (原始內容存檔於2019-10-18).
- ^ 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.0 7.1 netstat(8) - Linux man page. linux.die.net. [2019-07-31]. (原始內容存檔於2019-05-30).
- ^ 8.0 8.1 Mutai, Josphat. netstat vs ss usage guide on Linux. 2018-01-17 [2019-07-31]. (原始內容存檔於2018-10-08).
- ^ 9.0 9.1 9.2 networking:net-tools [Wiki]. wiki.linuxfoundation.org. [2019-07-31]. (原始內容存檔於2018-10-21).
- ^ net-tools. linuxfoundation.org. [2019-07-31]. (原始內容存檔於2016-06-11).
- ^ Arch Linux. archlinux.org. 2011-06-08 [2019-07-31]. (原始內容存檔於2019-07-22).
- ^ Deprecated Linux networking commands and their replacements. Doug Vitale Tech Blog. [2019-07-31]. (原始內容存檔於2019-06-29).
- ^ 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.0 14.1 LLC), Tara Meyer (Aquent. Netstat: TCP/IP. docs.microsoft.com. [2019-07-31]. (原始內容存檔於2019-10-18).
- ^ ReactOS: base/applications/network/netstat/netstat.c Source File. doxygen.reactos.org. [2019-07-31]. (原始內容存檔於2019-10-18).
- ^ 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).
- ^ hb. Mac OS X: List listening ports and programs using netstat. 2013-07-31 [2019-07-31]. (原始內容存檔於2017-07-13).
- ^ netstat - Mac OS X in a Nutshell [Book]. www.oreilly.com. [2019-07-31]. (原始內容存檔於2019-10-18).
- ^ netstat(1) - OpenBSD manual pages. man.openbsd.org. [2019-07-31]. (原始內容存檔於2019-05-07).
- ^ how to gather network information on netbsd. wiki.netbsd.org. [2019-07-31]. (原始內容存檔於2018-01-11).
- ^ netstat(1) - NetBSD Manual Pages. netbsd.gw.com.[失效連結]
- ^ netstat(1). www.freebsd.org. [2019-07-31]. (原始內容存檔於2018-12-22).
- ^ Synopsis - man pages section 1M: System Administration Commands. docs.oracle.com. [2019-07-31]. (原始內容存檔於2014-02-15).
- ^ Dyson, Peter. Mastering OS/2 Warp. Sybex. 1995. ISBN 978-0782116632.
- ^ 25.0 25.1 IBM Knowledge Center. www.ibm.com. [2019-08-04]. (原始內容存檔於2019-08-04).
- ^ Network Administration: The netstat Command. [2019-07-31]. (原始內容存檔於2018-06-16).
- ^ How to check if port is in use on Linux or Unix. 2016-11-10 [2019-07-31]. (原始內容存檔於2019-06-20).
- ^ Determining If You are Actively Being Compromised. TechGenix. 2011-02-09 [2019-07-31]. (原始內容存檔於2018-10-05).
- ^ Postel, J. Transmission Control Protocol. tools.ietf.org. [2019-07-31]. (原始內容存檔於2019-01-02).
- ^ Linux Howtos: Network -> Using netstat. www.linuxhowtos.org. [2019-07-31]. (原始內容存檔於2018-10-09).
- ^ networking - How to know which ports are listened by certain PID?. Unix & Linux Stack Exchange. [2019-07-31]. (原始內容存檔於2019-10-18).
- ^ Rackspace Support Documentation. support.rackspace.com. [2019-08-04]. (原始內容存檔於2019-08-04).
- ^ 33.0 33.1 G.4. netstat. linux-ip.net. [2019-07-31]. (原始內容存檔於2018-10-03).
- ^ 34.0 34.1 Ferguson, Bill. Network+ Fast Pass. John Wiley & Sons. 2006-02-20 –透過Google Books.
- ^ Viewing statistics of all active TCP connections. library.netapp.com. [2019-07-31]. (原始內容存檔於2019-07-31).