複製鏈接
請複製以下鏈接發送給好友

Netstat

鎖定
在Internet RFC標準中,Netstat的定義是: Netstat是在內核中訪問網絡連接狀態及其相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告。
Netstat是控制枱命令,是一個監控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備狀態信息。Netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。
如果你的計算機有時候接收到的數據包導致出錯數據或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,並能夠自動重發數據包。但如果累計的出錯情況數目佔到所接收的IP數據報相當大的百分比,或者它的數目正迅速增加,那麼你就應該使用Netstat查一查為什麼會出現這些情況了。
一般用netstat -an 來顯示所有連接的端口並用數字表示。
netstat命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用户得知有哪些網絡連接正在運作。 [1]  使用時如果不帶參數,netstat顯示活動的 TCP 連接。
中文名
網絡信息統計
外文名
Netstat
顯    示
IPTCPUDPICMP協議
應    用
檢驗本機各端口的網絡連接情況
命    令
顯示網絡連接、路由表網絡接口

Netstat格式

該命令的一般格式為 :
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

Netstat選項

命令中各選項的含義如下:
命令中各選項的含義 命令中各選項的含義
-a 顯示所有socket,包括正在監聽的。
-n 以數字形式顯示地址和端口號
-r 顯示核心路由表,格式同“route -e”。
-t 顯示當前連接卸載狀態。
-v 顯示正在進行的工作。
-p proto 顯示proto指定的協議的連接。
-b 顯示在創建每個連接或偵聽端口時涉及的可執行程序
-e 顯示以太網統計。此選項可以與 -s 選項結合使用。
-f 顯示外部地址的完全限定域名(FQDN)。
-o 顯示擁有的與每個連接關聯的進程PID
-q 顯示所有連接、偵聽端口和綁定的非偵聽 TCP 端口。
-s 顯示每個協議的統計。
-x 顯示 NetworkDirect 連接、偵聽器和共享端點。
-y 顯示所有連接的 TCP 連接模板。無法與其他選項結合使用。
interval 重新顯示選定的統計,各個顯示間暫停的 間隔秒數。按 CTRL+C 停止重新顯示統計。如果省略,則 netstat 將打印當前的配置信息一次。

Netstat列標題

Name接口 Name接口
Name接口的名字
Mtu 接口的最大傳輸單位
Net/Dest 接口所在的網絡
Address 接口的IP地址
Ipkts 接收到的數據包數目
Ierrs 接收到時已損壞的數據包數目
Opkts 發送的數據包數目
Oeers 發送時已損壞的數據包數目
Collisions 由這個接口所記錄的網絡衝突數目

Netstat常用選項

netstat -a
——本選項顯示一個所有的有效連接信息列表,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接。
netstat -b
該參數可顯示在創建網絡連接和偵聽端口時所涉及的可執行程序。
netstat -s
——本選項能夠按照各個協議分別顯示其統計數據。如果你的應用程序(如Web瀏覽器運行速度比較慢,或者不能顯示Web頁之類的數據,那麼你就可以用本選項來查看一下所顯示的信息。你需要仔細查看統計數據的各行,找到出錯的關鍵字,進而確定問題所在。
netstat -e
——本選項用於顯示關於以太網的統計數據,它列出的項目包括傳送數據報的總字節數、錯誤數、刪除數,包括髮送和接收量(如發送和接收的字節數、數據包數 [1]  ),或有廣播的數量。可以用來統計一些基本的網絡流量
netstat -r
——本選項可以顯示關於路由表的信息,類似於後面所講使用routeprint命令時看到的信息。除了顯示有效路由外,還顯示當前有效的連接。
netstat -n
——顯示所有已建立的有效連接。
netstat -p
——顯示協議名查看某協議使用情況
netstat -p netstat -p

Netstat常見狀態

即連接狀態。在原模式中沒有狀態,在用户數據報協議中也經常沒有狀態,於是狀態列可以空出來。若有狀態,通常取值為:
LISTEN
偵聽來自遠方的TCP端口的連接請求
SYN-SENT
在發送連接請求後等待匹配的連接請求
SYN-RECEIVED
在收到和發送一個連接請求後等待對方對連接請求的確認
ESTABLISHED
代表一個打開的連接
FIN-WAIT-1
等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2
從遠程TCP等待連接中斷請求
CLOSE-WAIT
等待從本地用户發來的連接中斷請求
CLOSING
等待遠程TCP對連接中斷的確認
LAST-ACK
等待原來的發向遠程TCP的連接中斷請求的確認
TIME-WAIT
等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED
沒有任何連接狀態

Netstat命令示例

該命令(Winxp下)的一般格式為 :
C:\>netstat /?
顯示協議統計信息和當前 TCP/IP網絡連接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v]
-a 顯示所有連接和監聽端口。
-b 顯示包含於創建每個連接或監聽端口的可執行組件。在某些情況下已知可執行組件擁有多個獨立組件,並且在這些情況下包含於創建連接或監聽端口的組件序列被顯示。
這種情況下,可執行組件名在底部的 [] 中,頂部是其調用的組件,等等,直到 TCP/IP部分。注意此選項可能需要很長時間,如果沒有足夠權限可能失敗。
-e 顯示以太網統計信息。此選項可以與 -s選項組合使用
-n 以數字形式顯示地址和端口號。 此選項可以與 -a選項組合使用
-o 顯示與每個連接相關的所屬進程 ID。
-p proto 顯示 proto 指定的協議的連接;proto 可以是下列協議之一: TCP、UDP、TCPv6 或 UDPv6。
如果與 -s 選項一起使用以顯示按協議統計信息,proto 可以是下列協議之一:
IPIPv6ICMPICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協議統計信息。默認地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計信息;
-p 選項用於指定默認情況的子集。
-v 與 -b 選項一起使用時將顯示包含於為所有可執行組件創建連接或監聽端口的組件
interval 重新顯示選定統計信息,每次顯示之間暫停時間間隔(以秒計)。按 CTRL+C 停止重新顯示統計信息。如果省略,netstat 顯示當前配置信息(只顯示一次)
該命令(Win2000下)的一般格式為 :
C:\>netstat /?
Displays protocol statistics and current TCP/IP network connections.
NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r]
-a Displays all connections and listening ports.
-e Displays Ethernet statistics. This may be combined with the -s
option.
-n Displays addresses and port numbers in numerical form.
-p proto Shows connections for the protocol specified by proto; proto
may be TCP or UDP. If used with the -s option to display
per-protocol statistics, proto may be TCP, UDP, or IP.
-r Displays the routing table.
-s Displays per-protocol statistics. By default, statistics are
shown for TCP, UDP and IP; the -p option may be used to specify
a subset of the default.
interval Redisplays selected statistics, pausing interval seconds
between each display. Press CTRL+C to stop redisplaying
statistics. If omitted, netstat will print the current
configuration information once
微軟公司故意將這個功能強大的命令隱藏起來是因為它對於普通用户來説有些複雜。我們已經知道:Netstat它可以用來獲得你的系統網絡連接的信息(使用的端口,在使用的協議等 ),收到和發出的數據,被連接的遠程系統的端口,Netstat在內存中讀取所有的網絡信息

Netstat實錄

用實例詳細的解釋一下各個參數的使用:
C:\>netstat -a
Active Connections
Proto Local Address Foreign Address State
TCP Eagle:ftp Eagle:0 LISTENING
TCP Eagle:telnet Eagle:0 LISTENING
TCP Eagle:smtp Eagle:0 LISTENING
TCP Eagle:http Eagle:0 LISTENING
TCP Eagle:epmap Eagle:0 LISTENING
TCP Eagle:https Eagle:0 LISTENING
TCP Eagle:microsoft-ds Eagle:0 LISTENING
TCP Eagle:1030 Eagle:0 LISTENING
TCP Eagle:6059 Eagle:0 LISTENING
TCP Eagle:8001 Eagle:0 LISTENING
TCP Eagle:8005 Eagle:0 LISTENING
TCP Eagle:8065 Eagle:0 LISTENING
TCP Eagle:microsoft-ds localhost:1031 ESTABLISHED
TCP Eagle:1031 localhost:microsoft-ds ESTABLISHED
TCP Eagle:1040 Eagle:0 LISTENING
TCP Eagle:netbios-ssn Eagle:0 LISTENING
TCP Eagle:1213 218.85.139.65:9002 CLOSE_WAIT
TCP Eagle:2416 219.133.63.142:https CLOSE_WAIT
TCP Eagle:2443 219.133.63.142:https CLOSE_WAIT
TCP Eagle:2907 192.168.1.101:2774 CLOSE_WAIT
TCP Eagle:2916 192.168.1.101:telnet ESTABLISHED
TCP Eagle:2927 219.137.227.10:4899 TIME_WAIT
TCP Eagle:2928 219.137.227.10:4899 TIME_WAIT
TCP Eagle:2929 219.137.227.10:4899 ESTABLISHED
TCP Eagle:3455 218.85.139.65:9002 ESTABLISHED
TCP Eagle:netbios-ssn Eagle:0 LISTENING
UDP Eagle:microsoft-ds *:*
UDP Eagle:1046 *:*
UDP Eagle:1050 *:*
UDP Eagle:1073 *:*
UDP Eagle:1938 *:*
UDP Eagle:2314 *:*
UDP Eagle:2399 *:*
UDP Eagle:2413 *:*
UDP Eagle:2904 *:*
UDP Eagle:2908 *:*
UDP Eagle:3456 *:*
UDP Eagle:4000 *:*
UDP Eagle:4001 *:*
UDP Eagle:6000 *:*
UDP Eagle:6001 *:*
UDP Eagle:6002 *:*
UDP Eagle:6003 *:*
UDP Eagle:6004 *:*
UDP Eagle:6005 *:*
UDP Eagle:6006 *:*
UDP Eagle:6007 *:*
UDP Eagle:6008 *:*
UDP Eagle:6009 *:*
UDP Eagle:6010 *:*
UDP Eagle:6011 *:*
UDP Eagle:1045 *:*
UDP Eagle:1051 *:*
UDP Eagle:netbios-ns *:*
UDP Eagle:netbios-dgm *:*
UDP Eagle:netbios-ns *:*
UDP Eagle:netbios-dgm *:*

Netstat詳細信息

我們拿其中一行來解釋吧:
Proto Local Address Foreign Address State
TCP Eagle:2929 219.137.227.10:4899 ESTABLISHED
協議(Proto):TCP,指是傳輸控制協議。
本地機器名(Local Address):Eagle,俗稱計算機名,安裝系統時設置的,可以在“我的電腦”屬性中修改,本地打開並用於連接的端口:2929)
遠程機器名(Foreign Address):219.137.227.10
遠程端口:4899
狀態:ESTABLISHED
狀態列表
LISTEN :在監聽狀態中。
ESTABLISHED:已建立聯機的聯機情況。
-a 參數常用於獲得你的本地系統開放的端口,用它您可以自己檢查你的系統上有沒有被安裝木馬
如果您Netstat你自己的話,發現下面的信息:
Port 12345(TCP) Netbus
Port 31337(UDP) Back Orifice

Netstat相關

繼續我們的探討,使用-n參數。(Netstat -n)
Netstat -n基本上是-a參數的數字形式:
C:\>netstat -n
Active Connections
Proto Local Address Foreign Address State
TCP 127.0.0.1:445 127.0.0.1:1031 ESTABLISHED
TCP 127.0.0.1:1031 127.0.0.1:445 ESTABLISHED
TCP 192.168.1.180:1213 218.85.139.65:9002 CLOSE_WAIT
TCP 192.168.1.180:2416 219.133.63.142:443 CLOSE_WAIT
TCP 192.168.1.180:2443 219.133.63.142:443 CLOSE_WAIT
TCP 192.168.1.180:2907 192.168.1.101:2774 CLOSE_WAIT
TCP 192.168.1.180:2916 192.168.1.101:23 ESTABLISHED
TCP 192.168.1.180:2929 219.137.227.10:4899 ESTABLISHED
TCP 192.168.1.180:3048 192.168.1.1:8004 SYN_SENT
TCP 192.168.1.180:3455 218.85.139.65:9002 ESTABLISHED
-a 和 -n 是最常用的兩個,據我不完全測試得出以下結果:
1. -n 顯示用數字化主機名,即IP地址,而不是compute_name【eagle】
2. -n 只顯示TCP連接
得到IP等於得到一切,它是最容易使機器受到攻擊的東西,所以隱藏自己IP,獲得別人的IP對hacker來説非常重要.
-a 和 -n 是最常用的命令,如果要顯示一些協議的更詳細信息,就要用-p這個參數了,它其實是-a 和 -n的一個變種,我們來看一個實例,你就明白了:【netstat -p @@@ 其中@@@為TCP或者UDP】
C:\>netstat -ptcp
Active Connections
Proto Local Address Foreign Address State
TCP Eagle:microsoft-ds localhost:1031 ESTABLISHED
TCP Eagle:1031 localhost:microsoft-ds ESTABLISHED
TCP Eagle:1213 218.85.139.65:9002 CLOSE_WAIT
TCP Eagle:2416 219.133.63.142:https CLOSE_WAIT
TCP Eagle:2443 219.133.63.142:https CLOSE_WAIT
TCP Eagle:2907 192.168.1.101:2774 CLOSE_WAIT
TCP Eagle:2916 192.168.1.101:telnet ESTABLISHED
TCP Eagle:2929 219.137.227.10:4899 ESTABLISHED
TCP Eagle:3455 218.85.139.65:9002 ESTABLISHED
繼續我們的參數講解 -e
含義:本選項用於顯示關於以太網的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發送的數據報數量,也有接收的數據報數量。這個選項可以用來統計一些基本的網絡流量。
C:\>netstat -e
Interface Statistics
Received Sent
Bytes ????????? ????????
Unicast packets ?????? ??????
Non-unicast packets 886526 2386
Discards 0 0
Errors 0 0
Unknown protocols 4449
若接收錯和發送錯接近為零或全為零,網絡的接口無問題。但當這兩個字段有100個以上的出錯分組時就可以認為是高出錯率了。高的發送錯表示本地網絡飽和或在主機與網絡之間有不良的物理連接; 高的接收錯表示整體網絡飽和、本地主機過載或物理連接有問題,可以用Ping命令統計誤碼率,進一步確定故障的程度。netstat -e 和ping結合使用能解決一大部分網絡故障
接下來我們開始講解兩個比較複雜的參數 -r 和 -s 。
-r是用來顯示路由表信息,我們來看例子:
C:\>netstat -r
Route Table(路由表)
Interface List(網絡接口列表)
0x1 ........................... MS TCP Loopback interface
0x10003 ...00 0c f1 02 76 81 ...... Intel(R) PRO/Wireless LAN 2100 3B Mini PCI
dapter
0x10004 ...00 02 3f 00 05 cb ...... Realtek RTL8139/810x Family Fast Ethernet
Active Routes:(動態路由)
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.181 30
0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.180 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.180 192.168.1.180 20
192.168.1.0 255.255.255.0 192.168.1.181 192.168.1.181 30
192.168.1.180 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.1.181 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.1.255 255.255.255.255 192.168.1.180 192.168.1.180 20
192.168.1.255 255.255.255.255 192.168.1.181 192.168.1.181 30
224.0.0.0 240.0.0.0 192.168.1.180 192.168.1.180 20
224.0.0.0 240.0.0.0 192.168.1.181 192.168.1.181 30
255.255.255.255 255.255.255.255 192.168.1.180 192.168.1.180 1
255.255.255.255 255.255.255.255 192.168.1.181 192.168.1.181 1
Default Gateway: 192.168.1.254(默認網關)
===========================================================================

Netstat補充信息

Persistent Routes:(靜態路由
None
Persistent Routes:(靜態路由)
None
C:\>
-s 參數的作用前面有詳細的説明,來看例子
C:\>netstat -s
IPv4 Statistics (IP統計結果)
Packets Received = 369492(接收包數)
Received Header Errors = 0(接收頭錯誤數)
Received Address Errors = 2(接收地址錯誤數)
Datagrams Forwarded = 0(數據報遞送數)
Unknown Protocols Received = 0(未知協議接收數)
Received Packets Discarded = 4203(接收後丟棄的包數)
Received Packets Delivered = 3 6 5 2 8 7(接收後轉交的包數)
Output Requests = 3 69066(請求數)
Routing Discards = 0(路由丟棄數 )
Discarded Output Packets = 2172(包丟棄數)
Output Packet No Route = 0(不路由的請求包)
Reassembly Required = 0(重組的請求數)
Reassembly Successful = 0(重組成功數)
Reassembly Failures = 0(重組失敗數)
Datagrams Successfully Fragmented = 0(分片成功的數據報數)
Datagrams Failing Fragmentation = 0(分片失敗的數據報數)
Fragments Created = 0(分片建立數)
ICMPv4 Statistics (ICMP統計結果)包括Received和Sent兩種狀態
Received Sent
Messages 285 784(消息數)
Errors 0 0(錯誤數)
Destination Unreachable 53 548(無法到達主機數目)
Time Exceeded 0 0(超時數目)
Parameter Problems 0 0(參數錯誤)
Source Quenches 0 0(源夭折數)
Redirects 0 0(重定向數)
Echos 25 211(迴應數)
Echo Replies 207 25(回覆迴應數)
Timestamps 0 0(時間戳數)
Timestamp Replies 0 0(時間戳回覆數)
Address Masks 0 0(地址掩碼數)
Address Mask Replies 0 0(地址掩碼回覆數)
TCP Statistics for IPv4(TCP統計結果)
Active Opens = 5217(主動打開數)
Passive Opens = 80(被動打開數)
Failed Connection Attempts = 2944(連接失敗嘗試數)
Reset Connections = 529(復位連接數)
Current Connections = 9(當前連接數目)
Segments Received = 350143(當前已接收的報文數)
Segments Sent = 347561(當前已發送的報文數)
Segments Retransmitted = 6108(被重傳的報文數目)
UDP Statistics for IPv4(UDP統計結果)
Datagrams Received = 14309(接收的數據包)
No Ports = 1360(無端口數)
Receive Errors = 0(接收錯誤數)
Datagrams Sent = 14524(數據包發送數)
-----------------------------------------------------
netstat -abnov ,顯示的該進程發起的程序進程或者文件列表。此命令常用來判斷是否有可疑進程,之後進行相關操作。
參考資料
  • 1.    電腦報,張濤.電腦應用紅寶書.昆明:雲南科技出版社,2007:292-315