netstat

命令行工具 来自维基百科,自由的百科全书

Netstat

netstat是一個基於命令列介面網路實用工具,可顯示當前的網路狀態,包括傳輸控制協定層的連線狀況、路由表網路介面狀態和網路協定的統計訊息等[1]netstat命令適用於類Unix系統(如macOSLinuxSolarisBSD)、IBM OS/2Windows NT作業系統家族(如Windows XPWindows VistaWindows 7Windows 8Windows 10[2][3]

快速預覽 作業系統, 類型 ...
netstat
Thumb
Linux執行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連接,並包含每個連接的行程IDPID)。根據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網路協定,包括傳輸控制協定TCP)和使用者資料報協定UDP[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]

命令範例

Thumb
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] ...
命令 說明[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 顯示所有監聽埠的守護行程和本地電腦上所有空閒的開放埠。
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]

參考文獻

外部連結

Wikiwand - on

Seamless Wikipedia browsing. On steroids.