如何使用Netstat命令

示例,開關等

netstat 命令是一個 命令提示符命令, 用於顯示有關計算機如何與其他計算機或網絡設備進行通信的非常詳細的信息。

具體而言,netstat命令可以顯示有關各個網絡連接的詳細信息,總體和特定於協議的網絡統計信息等等,所有這些都可以幫助解決某些類型的網絡問題。

Netstat命令可用性

在包括Windows 10Windows 8Windows 7Windows VistaWindows XP ,Windows Server 操作系統和某些較早版本的Windows的大多數Windows版本中, 命令提示符中都提供了netstat命令。

注意:某些netstat命令開關和其他netstat命令語法的可用性可能因操作系統和操作系統而異。

Netstat命令語法

netstat [ -a ] [ -b ] [ -e ] [ -f ] [ -n ] [ -o ] [ -p 協議 ] [ -r ] [ -s ] [ -t ] [ -x ] [ -y ] [ time_interval ] [ /? ]

提示:如果您不確定如何讀取上面顯示的netstat命令語法,請參閱如何閱讀命令語法

單獨執行netstat命令可顯示一個相對簡單的所有活動TCP連接列表,其中每個連接都將顯示本地IP地址 (您的計算機),外部IP地址(其他計算機或網絡設備)及其各自的IP地址端口號以及TCP狀態。

-a =此交換機顯示活動的TCP連接,具有監聽狀態的TCP連接以及正在監聽的UDP端口。

-b =此netstat開關與下面列出的-o開關非常相似,但不顯示PID,而是顯示進程的實際文件名。 使用-b over -o可能看起來像是為您節省了一兩步,但使用它有時會大大延長netstat完全執行的時間。

-e =使用此開關和netstat命令顯示有關您的網絡連接的統計信息。 該數據包括自連接建立以來收到和發送的字節,單播數據包,非單播數據包,丟棄數據,錯誤和未知協議。

-f = -f開關將強制netstat命令在可能時顯示每個外部IP地址的完全限定域名 (FQDN)。

-n =使用-n開關防止netstat嘗試確定外部IP地址的主機名 。 根據您當前的網絡連接,使用此開關可以大大縮短netstat完全執行所需的時間。

-o =許多故障排除任務的便利選項, -o開關顯示與每個顯示的連接關聯的進程標識符(PID)。 有關使用netstat -o的更多信息,請參閱下面的示例。

-p =使用-p開關僅顯示特定協議的連接或統計信息。 您無法一次定義多個協議 ,也無法在不定義協議的情況下使用-p執行netstat。

protocol =使用-p選項指定協議時,可以使用tcpudptcpv6udpv6 。 如果使用帶-p的 -s按協議查看統計信息 ,則除了前面提到的前四個外,還可以使用icmpipicmpv6ipv6

-r =使用-r執行netstat以顯示IP路由表。 這與使用route命令執行路由打印相同

-s = -s選項可以與netstat命令一起使用,以按協議顯示詳細的統計信息。 通過使用-s選項並指定該協議 ,可以將顯示的統計信息限制為特定的協議,但一起使用交換機時一定要在-p 協議之前使用-s

-t =使用-t開關顯示當前TCP煙囪卸載狀態,以代替通常顯示的TCP狀態。

-x =使用-x選項顯示所有NetworkDirect偵聽器,連接和共享端點。

-y = -y開關可用於顯示所有連接的TCP連接模板。 您不能對任何其他netstat選項使用-y

time_interval =這是您希望netstat命令自動重新執行的時間,以秒為單位,僅當您使用Ctrl-C結束循環時停止。

/? =使用幫助開關顯示有​​關netstat命令的幾個選項的詳細信息。

提示:通過使用重定向操作符將屏幕上顯示的內容輸出到文本文件 ,使命令行中的所有netstat信息更容易處理。 有關完整說明,請參閱如何將命令輸出重定向到文件

Netstat命令示例

netstat -f

在第一個例子中,我執行netstat來顯示所有活動的TCP連接。 但是,我確實希望看到我以FQDN格式[ -f ]連接的計算機,而不是簡單的IP地址。

以下是您可能會看到的一個示例:

活動連接原始本地地址外部地址狀態TCP 127.0.0.1:5357 VM-Windows-7:49229 TIME_WAIT TCP 127.0.0.1:49225 VM-Windows-7:12080 TIME_WAIT TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168 .1.14:49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49230 TIM-PC:wsd TIME_WAIT TCP 192.168.1.14:49231 TIM-PC:icslap ESTABLISHED TCP 192.168.1.14:49232 TIM-PC:netbios-ssn TIME_WAIT TCP 192.168.1.14:49233 TIM-PC:netbios-ssn TIME_WAIT TCP [:: 1]:2869 VM-Windows-7:49226 ESTABLISHED TCP [:: 1] :49226 VM-Windows-7:icslap ESTABLISHED

正如你所看到的,我在執行netstat時有11個活動的TCP連接。 列出的唯一協議(在Proto列中)是TCP,這是預期的,因為我沒有使用-a

您還可以在“ 本地地址”列中看到三組IP地址 - 我的實際IP地址為192.168.1.14 ,我的環回地址的 IPv4和IPv6版本以及每個連接使用的端口。 外地址欄列出了FQDN( 75.125.212.75由於某種原因未解決)以及該端口。

最後, 狀態列列出了該特定連接的TCP狀態。

netstat -o

在這個例子中,我想正常運行netstat,所以它只顯示活動的TCP連接,但我也希望看到每個連接的相應進程標識符[ -o ],以便我可以確定每台計算機上的哪個程序啟動了每個連接。

這是我的電腦顯示的內容:

活動連接原始本地地址外部地址狀態PID TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT 2948 TCP 192.168.1.14:49196 a795sm:http CLOSE_WAIT 2948 TCP 192.168.1.14:49197 a795sm:http CLOSE_WAIT 2948

您可能注意到了新的PID列。 在這種情況下,PID都是相同的,這意味著我的計算機上的相同程序打開了這些連接。

要確定我的計算機上由2948的PID表示什麼程序,我所要做的就是打開任務管理器 ,單擊進程選項卡,然後記下在PID列中要查找的PID旁邊列出的圖像名稱1

在追踪哪個程序使用的帶寬過大時,將netstat命令與-o選項一起使用會非常有用。 它還可以幫助找到某種惡意軟件或者其他合法的軟件可能在未經您許可的情況下發送信息的目的地。

注意:雖然這和前面的例子都在同一台計算機上運行,並且在相隔一分鐘之內,您可以看到活動TCP連接的列表有很大不同。 這是因為您的計算機不斷連接到網絡上的各種其他設備並通過互聯網斷開連接。

netstat -s -p tcp -f

在第三個例子中,我想查看協議特定的統計信息[ -s ],但不是全部,只是TCP統計信息[ -p tcp ]。 我還希望外部地址以FQDN格式[ -f ]顯示。

這就是netstat命令,如上所示,在我的計算機上生成:

用於IPv4活動打開的TCP統計= 77被動打開= 21失敗連接嘗試= 2重置連接= 25當前連接= 5接收段= 7313段發送= 4824段重傳= 5活動連接原始本地地址外部地址狀態TCP 127.0.0.1: 2869 VM-Windows-7:49235 TIME_WAIT TCP 127.0.0.1:2869 VM-Windows-7:49238 ESTABLISHED TCP 127.0.0.1:49238 VM-Windows-7:icslap ESTABLISHED TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168.1.14:49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT

正如您所看到的,顯示TCP協議的各種統計信息,以及當時所有活動的TCP連接。

netstat -e -t 5

在這最後一個例子中,我執行netstat命令來顯示一些基本的網絡接口統計信息[ -e ],並且我希望這些統計信息每五秒鐘在命令窗口中不斷更新[ -t 5 ]。

以下是屏幕上顯示的內容:

接口統計接收發送字節22132338 1846834單播數據包19113 9869非單播數據包0 0丟棄0 0錯誤0 0未知協議0接口統計接收已發送字節數22134630 1846834單播數據包19128 9869非單播數據包0 0放棄0 0錯誤0 0未知協議0 ^ C

將顯示各種信息,您可以在此處看到以及我在上面的-e語法中列出的信息。

我只讓netstat命令自動執行一個額外的時間,就像你在結果中的兩個表中看到的一樣。 注意底部的^ C ,表示我使用了Ctrl-C中止命令來停止命令的重新運行。

Netstat相關命令

netstat命令通常與其他網絡相關的命令提示命令(如nslookup, pingtracert ,ipconfig等)一起使用。

[1]您可能必須手動將PID列添加到任務管理器。 您可以通過從視圖 - >任務管理器中的選擇列中選擇“PID(過程標識符)”複選框來完成此操作。 如果您要查找的PID沒有列出,您可能還需要單擊“進程”選項卡上的“顯示所有用戶的進程”按鈕。