Netstat用於顯示與IP、TCP、UDP和ICMP協定相關的統計數據,一般用於檢驗本機各連接埠的網路連線情況。
如果你的電腦有時候接收到的資料封包導致出錯資料或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,並且能夠自動重發資料封包。但如果累積的出錯情況數目占到所接收的IP資料報相當大的百分比,或者它的數目正迅速增加,那麼你就應該使用Netstat查一查為什麼會出現這些情況了。
Netstat 詳細參數清單
(winXP)
C:>netstat /?
顯示協定統計資訊和目前 TCP/IP 網路連線。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 顯示所有連接和監聽端口。
-b 顯示包含於建立每個連接或監聽連接埠的可執行元件。在某些情況下已知可執行組 件擁有多個獨立元件,且在這些情況下包含於建立連接或監聽連接埠的元件序列 顯示。在這種情況下,可執行元件名在底部的 [] 中,頂部是其呼叫的元件, 等等,直到 TCP/IP部分。注意此選項可能需要很長時間,如果沒有足夠權限 可能失敗。
-e 顯示乙太網路統計資料。此選項可以與 -s選項組合使用。
-n 以數位形式顯示位址及連接埠號碼。
-o 顯示與每個連結相關的所屬進程 ID。
-p proto 顯示 proto 指定的協定的連線;proto 可為下列協定之一: TCP、UDP、 TCPv6 或 UDPv6。如果與 -s 選項一起使用以顯示按協議統計信息,proto
-r 顯示路由表。
-s 顯示依協定統計資料。預設地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計資料;
-v 與 -b 選項一起使用時將顯示包含於
interval 重新顯示選定統計訊息,每次顯示之間
暫停時間間隔(以秒計)。按 CTRL+C 停止重新
顯示統計資料。若省略,netstat 顯示目前
配置資訊(只顯示一次)
(win2000)
C:>netstat /?
Displays protocol statistics 及 current-n. ] [-s] [-p proto] [-r] [interval]
-a Displays all connections and listening ports.
-e s
option.
-n Displays addresses and port numbers in numerical form.
-p proto Shows connections for the protocol specified by proto; proto
集 per-protocol statistics, proto may be TCP, UDP, or IP.
-r Displays the routing table.
-s Displays per-proprotocol statistics. 顯示 TCP、UDP 與 IP; -p 選項可用來指定
預設值的子集。
interval 重新顯示選定的統計訊息,在每次顯示之間暫停間隔秒數
。 按 CTRL+C 停止重新顯示
統計資料。 如果省略,netstat 將列印一次目前
設定資訊。
(linux)
[john11@john ~]$ netstat /?
用法:netstat [-veenNcCF] [] -r netstat {-V|--version|- h|--help}. ...]
netstat { [-veenNac] -i[] | [-cnNe] -M | -s } [delay]
-r, --route faces=[] 顯示介面表
-g, --groups 顯示多重播放群組成員資格
-M, --masquerade 顯示偽裝的連結
-v, --verbose -v, --verbose
-n, --numeric 不分析名稱
--numeric-hosts . 不解析連接埠名稱
--numeric-users
-e, --extend 顯示其他/更多資訊
-p, --programs 顯示套接字的名詞 連續清單
-l, --listening 顯示監聽伺服器套接字
-a, --all, --listening 顯示所有套接字(預設:已連接)
-o, --time , --fib 顯示轉送資訊庫(預設)
-C , --cache 顯示路由快取而非FIB
: 監控/清單的介面名稱。
={-t|-- tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
=使用'-A '或'--';預設值:inet
可能的位址族清單(支援路由):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROMov) ipxN/ROMov) IPp ) ddp (Appletalk DDP)
x25 (CCITT X.25)
Netstat的一些常用選項
netstat -s——本能夠各個協定分別顯示其統計資料。如果你的應用程式(如網頁瀏覽器)運作比較慢,或是無法顯示網頁之類的數據,那麼你就可以用本選項來查看一下所顯示的資訊。你需要仔細查看統計數據的各行,找到出錯的關鍵字,進一步確定問題所在。
netstat -e-本其推出的項目包括傳送資料封包的總位元組數、錯誤數、刪除數、資料封包的數量和廣播的數量。這些統計資料傳送的資料封包數量,也有接收資料的封包數量。這個選項可以用來統計一些基本的網路流量。
netstat -r-這個選項可以顯示關於路由表的信息,類似於後面所講使用route print指令時看到的 資訊。除了顯示有效路由外,還顯示目前有效的連線。
netstat -a-本選項顯示一個所有的有效連接資訊列表,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接,斷開連接(CLOSE_WAIT)或處於聯機等待狀態的(TIME_WAIT)等
netstat -n——顯示所有已建立的有效連線。
netstat支援用於顯示活動或被動套接字的選項集。選項- t、- u、- w和-
x分別表示TCP、UDP、RAW和UNIX套接字連接。如果你另外還提供了一個-
a標記,還會顯示出等待連接(也就是說處於監聽模式)的套接字。這樣就可以得到一份伺服器清單,目前所有運行於系統中的所有伺服器都會列入其中。
呼叫netstat -ta時,輸出結果如下:
[root@machine1 /]$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address. 6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 0 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED BLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 0 *:9001 *:* LISTEN
tcp 0 0 *:6000 *:* LISTEN
tcp 0 0 *socks:6000 *:* LISTEN
tcp 0 0 *socks:6000 34. 6.10:netbios-ssn CLOSE
上面的輸出顯示部分伺服器處於等待存取連線狀態。利用-
a選項的話,netstat也會顯示出所有的套接字。注意根據連接埠號,可以判斷一條連接是否為外出連線。對於呼叫方主機來說,列出的連接埠號碼應該一直是一個
整數,而對眾所周知服務(well known
service)連接埠正在使用中的被呼叫方來說,netstat採用的則是取自/etc/ services檔案的象徵性服務名稱在隨- i標記一起呼叫時, netstat將顯示網路介面的目前設定特性。除此之外,如果調用時還帶上-a選項,它還將輸出內核中所有接口,並不只是當前配置的接口。 netstat-i的輸出結果是這樣的:
[root@machine1 /]$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 787165 0 0 1 51655 0 0 0 BRU
eth1 1500 0 520811 0 0 0 1986 0 0 0 B RU 0 LRU
MTU和Met欄位表示的是介面的MTU和度量值值;RX和TX這兩列表示的是已經準確無誤地收發了多少資料包( RX - OK / TX -
OK)、產生了多少錯誤(
RX-ERR/TX- ERR)、丟棄了多少包(RX-DRP/TX-DRP),由於誤差而遺失了多少包(RX-OVR/TX-OVR);最後一列展示的是
為這個接口設定的標記,在利用ifconfig顯示介面配置時,這些標記都會採用一個字母。它們的說明如下:
■ B 已經設定了一個廣播位址。
■ L 此介面是一個回送設備。
■ M 接收所有封包(混亂模式)。
■ N 避免追蹤。
■ O 在該介面上,停用A R P。
■ P 這是一個點到點連結。
■ R 介面正在運作。
■ U 介面處於「活動」狀態。 ◆ 顯示路由表
在隨- r標記一起呼叫n e t s t a t時,將顯示核心路由表,就像我們利用r o u t e指令一樣。產生的輸出如下:
[root@machine1 /]$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
210.34.6.0 0.50.
192.168.1.0 0.0 .0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 210.34.選項令netstat以點分四段式的形式輸出IP位址,而不是像徵性的主機名稱和網路名稱。如果想避免透過網路查找位址(例如避開DNS或NIS伺服器),這一點是特別有用的。
netstat輸出結果中,第二列展示的是路由條目所指的網關,如果沒有使用網關,就會出現一個星號(*)或0.0.0.0;第三列展示路由的概述,在
為具體的I P位址找出最恰當的路由時,核心將查看路由表內的所有條目,在對找到的路由與目標路由比較之前,將對I
P位址和genmask進行按位「與」計算;第四欄位顯示了不同的標記,這些標記的說明如下:
■ G 路由將採用閘道。
■ U 準備使用的介面處於「活動」狀態。
■ H 透過此路由,只能抵達一台主機。
■ D 如果路由表的條目是由ICMP重新導向訊息產生的,就會設定這個標記。
■ M 如果路由表條目已被ICMP重定向訊息修改,就會設定這個標記。
netstat輸出結果的Iface顯示該連接所使用的實體網路卡,如eth0表示用第一張,eth1表示用第二張。
接下來我們來看一下,微軟是怎麼說的?
微軟公司故意將這個強大的命令隱藏起來是因為它對一般使用者來說有些複雜。我們已經知道:Netstat它可以用來獲得你的系統網路連接的資訊(使用的端口,在使用的協議等),收到和發出的數據,被連接的遠端系統的端口,Netstat在記憶體中讀取所有的網路資訊。
在Internet RFC標準中,Netstat的定義是: Netstat是在核心中存取網路及相關資訊的程序,它能提供TCP連接,TCP和UDP監聽,進程記憶體管理的相關報告。
對於好奇心極強的人來說,緊密有上面的理論是遠遠不夠的,接下來我們來詳細的解釋一下各個參數的使用,看看執行之後會發生什麼,顯示的信息又是什麼意思,好了,廢話不說了,讓我們一起來實踐一下:)
C:>netstat -a
Active Connections
Proto Local Address Eagle:0 LISTENING
TCP Eagle:telnet Eagle:0 LISTENING
TCP Eagle:smtp Eagle Eagle:0 LISTENING
TCP Eagle:epmap
TCP Eagle:https Eagle:0 LISTENING LISTENING
TCP Eagle:1030 Eagle:0 LISTENING
TCP Eagle:8001 Eagle:0 Eagle:0 LISTENING
TCP Eagle:8065
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:24433 CLOSE_WAIT
TCP Eagle:2907 192.168.1.101:2774 CLOSE_WAIT 92.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 9 已建立
TCP Eagle:3455 218.85.139.65:9002 監聽
UDP Eagle:microsoft -ds *:*
UDP 鷹:1046 *:*
UDP 鷹:1050 *:*
UDP 鷹:1073 *:*
UDP 鷹:1938 *:*
UDP 鷹:2314 *:*
UDP 鷹:2399 *: *
UDP 鷹:2413 *:*
UDP 鷹:2904 UDP 鷹:2904 UDP *:*
UDP 鷹:3456 * :*
UDP 4001 *: *
UDP Eagle:6000 *:*
UDP Eagle:6001 *:*
UDP Eagle:6003 *:*
UDP 鷹 *:*
UDP 鷹:6006 *:*
UDP 鷹:6007 *:*
UDP 鷹:6009 *:*
UDP *:*
UDP 鷹:1045 *:*
UDP Eagle:1051 *:*
UDP Eagle:netbios-ns *
UDP Eagle:netbios-ns *:*
UDP 鷹:netbios-dgm *: *
我們拿其中一行來解釋:
Proto 本地地址 國外地址 State ESTABLISHED
協定(Proto):TCP,指傳輸通訊層協定(什麼?不懂?請用baidu搜尋“TCP”,OSI七層和TCP/IP四層不過基礎^_^)
本地機器名(本地地址):Eagle,俗稱計算機名了,安裝系統時設置的,在“我的”電腦」屬性中修改,本地開啟並用於連接的連接埠:2929)
遠端機器名稱(國外位址):219.137.227.10
遠端連接埠:4899
狀態:ESTABLISHED ESTABLISHED:已建立連線的連線情況。安裝木馬(ps:有很多好程式用來偵測木馬,但你的目的是想成為真正的駭客,手動偵測只按一下「掃描」按鈕好----僅個人觀點)。 ,發現下面的資訊:
Port 12345(TCP) Netbus
Port 31337(UDP) Back Orifice
!您中了最常見的木馬
的遠端控制軟體)
如果你需要木馬及其連接埠清單的話,去國內的H站找找,或是baidu,google吧
******************* **********************************************
#一些原理:也許你有這樣的問題:「在機器名稱後的連接埠號碼代表什麼?
範例:Eagle:2929
小於1024的連接埠通常運作一些網路服務,大於1024的連接埠用來與遠端機器建立連線。 㟎㟎〜 ************************************************** ***************
繼續我們的探討,使用-n參數。 >netstat -n
Active Connections
Proto Local Address Foreign Address State
TCP :1031 ESTABLISHED
TCP ESTABLISHED
TCP ESTABLISHED
TCP 127.0.0.1:1031 127.0.0.1:4455 68.1.180:1213 218.85.139.65 。 180:2443 219.133.63.142:443 CLOSE_WAIT
TCP WAIT
TCP 192.168.1.180:2916 192.168 .1.101:23 ESTABLISHED
TCP ESTABLISHED
TCP 192.168.1.180:2929 219.137.227.10:48991ED 180:3048 192.168.1.1:8004 SYN_SENT
TCP 192.168.1.180:3455 219150
-a 和- n 是最常用的兩個,根據我不完全測試得出以下結果:
1. -n 顯示用數位化主機名,即IP位址,而不是compute_name【eagle】
2. -n 只顯示TCP連接(沒有在哪裡看過微軟的相關文檔,有哪個朋友見到的話,記得告訴我喔^_^)
得到IP等於得到一切,它是最容易使機器受到攻擊的東東,所以隱藏自己IP,獲得別人的IP對hacker來說非常重要,現在隱藏IP技術很流行,但那些隱藏工具或服務真的讓你隱身嗎?我看不見得,呵呵,代理,跳板不屬於今天討論,一個獲取對方IP的簡單例子請參考我前面的文章【
用DOS命令查QQ好友IP地址
】
-a 和-n 是最常用的命令,如果要顯示一些協議的更詳細信息,就要用-p這個參數了,它其實是-a 和-n的一個變種,我們來看一個實例,你就明白了:【netstat -p @ @@ 其中@@@為TCP或UDP】
C:>netstat -p tcp
Active Connections
Proto Local Address Foreign Address Eaglec :1031 ESTABLISHED
TCP Eagle:1031 localhost:microsoft-ds ESTABLISHED
TCP Eagle:1213 218.85.139.65:9002 CLOSE_WAIT
19.133.63.142:https CLOSE_WAIT
TCP Eagle:2443 219.133.63.142:https 192.168.1.101:2774 CLOSE_WAIT
TCP Eagle:2916 192.168.1.101:telnet ESTABLISHED
TCP Eagle:2929 219.137.227.10:4899595 218.85.139.65:9002 ESTABLISHED
繼續我們的參數解說 -e
意義:此選項用於顯示關於乙太網路的統計資料。它列出的項目包括傳送的資料封包的總位元組數、錯誤數、刪除數、資料封包的數量和廣播的數量。這些統計資料既有發送的資料報數量,也有接收的資料報數量。這個選項可以用來統計一些基本的網路流量。
C:>netstat -e
Interface Statistics
143090206 44998789
Unicast packets 886526 2386
Discards Errors 0 若接收錯誤和發送錯誤接近為零或全為零,網路的介面無問題。但當這兩個欄位有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 0 .... Realtek RTL8139/810x Family Fast Ethernet
C
================================== =========================================
======== ==================================================== =================
Active Routes:(動態路由)
Network Destination Netmask Gateway Inter 0.0.0.0 192.168.1.254 192.168.1.181 30
0.0.0.00.0.0. 0.0.0.0 192.168.1.254 192.168.1.180 20
127.0.0.0 0.50.0 27.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.168.1.0 255.255.255.0 1. 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 17. 192.168.1.181 255.255.255.255 127.0.0.1 127.0.0.1 25130 55.255.255 192.168.1.180 192.168.1.180 20
192.168.1.255 255555. 255.255 192.168.1.181 192.168.1.181 30
224.0.0.0091. .180 192.168.1.180 20
224.0.0.0 240.0.0.0 192.168.1.181 192.168.1.181 192.168.1.181 30025255. 55 192.168.1.180 192.168.1.180 1
255.255.255.255 255.255.255. .1.181 1
Default Gateway: 192.168.1.254(默認網關)
=============================================== ============================
Persistent Routes:(靜態路由)
None
C:>
-s 參數的作用前面有詳細的說明,請參考範例
C:>netstat -s
IPv4 Statistics (IP統計結果)
Packets Received dive er Errors = 0(接收頭錯誤數)
Received Address Errors = 2(接收位址錯誤數)
Datagrams Forwarded = 0(資料封包遞送數)
Un = 4203(接收後丟棄的包數)
Received Packets Delivered = 365287 (接收後轉交的包數)
Output Requests = 369066(請求數)
Discarded Output Packets = 2172(丟棄數位)
Output Packet No Route = Packet No Route 包)
Reassembly Required = 0(重組的請求數)
Reassembly Successful = 0(重組失敗數)
Datagrams Successfully Fragmented = 0(分片成功的資料封包數)
Datagrams Failing Fragmentation = 0(分片失敗的資料封包數)
Fragments Created = 0(分片建立數)ICICv4 Statis Received Sent
Messages
Errors 0 0(錯誤中使用 Time Exceeded 0 0(逾時數目)
Parameter Problems 0 0(源夭折數)
Redirects 0(重新導向數)
Echos 25 211 25(回覆回應數)
Timestamps 0 0(時間戳回覆數)
Address Masks 0 0(位址遮罩數)
Address Mask Replies )
Active Opens = 5217(主動開啟數)
開啟數)
Failed Connection Attempts = 2944(連線失敗嘗試數)
Reset Connections Reset Connections = 9(目前連結數目)
Segments Received = 350143(目前已接收的封包數Segments Sent = 347561(目前已發送的報文數)
Segments tistics for IPv4(UDP統計結果)
Datagrams Received = 14309(接收的資料包)
No Ports = 1360(無連接埠數)
Receive Errors =
還有幾個常用的指令參數是WindowsXP獨有的,-b和–v 這兩個參數的解釋在前面也是很詳細了,我下面展示兩個例子吧(主要是要顯示對應的應用程序組件等詳細信息,有馬兒立刻獻身喔,^_^)
C :>netstat -b
Active Connections
Proto Local Address Foreign Address localhost:1031 ESTABLISHED 4
[System]
TCP Eagle:1031]
TCP Eagle:1031]
TCP Eagle:1031]
4
[System ]
TCP Eagle:2929 219.137.227.10:4899 ESTABLISHED :3455 218.85.139.65:9002 ESTABLISHED 1924 218.85.139.65:9002 CLOSE_WAIT 1924
[DCA.exe]
TCP Eagle:2416 219.133.63.142:https CLOSE_WAIT 596
[QQ.exe]
TCP Eagle:2443 219.133.63.142:https CLOSE_WAIT 596
[QQ.exe]
TCP Eagle :2907 192.168.1.101:2774 CLOSE_WAIT 596
Activ = [QQ.