天天看點

Netstat指令詳解

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                 可以是下列協定之一:ip、ipv6、icmp、icmpv6、tcp、tcpv6、udp

或                 ()udpv6。

  -r            顯示路由表。

  -s            顯示按協定統計資訊。預設地,顯示 ip、

                ipv6、icmp、icmpv6、tcp、tcpv6、udp 和 udpv6 的統計資訊;

                -p 選項用于指定預設情況的子集。

  -v            與 -b 選項一起使用時将顯示包含于

                為所有可執行元件建立連接配接或監聽端口的

                元件。

  interval      重新顯示標明統計資訊,每次顯示之間

                暫停時間間隔(以秒計)。按 ctrl+c 停止重新

                顯示統計資訊。如果省略,netstat 顯示目前

                配置資訊(隻顯示一次)

(win2000)

displays protocol statistics and current tcp/ip network connections.

netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval]

  -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.

(linux)

[john11@john ~]$ netstat /?

usage: netstat [-veennccf] [] -r         netstat {-v|--version|-h|--help}

       netstat [-vnncaeol] [ ...]

       netstat { [-veennac] -i[] | [-cnne] -m | -s } [delay]

        -r, --route                display routing table

        -i, --interfaces=[] display interface table

        -g, --groups               display multicast group memberships

        -s, --statistics           display networking statistics (like snmp)

        -m, --masquerade           display masqueraded connections

        -v, --verbose              be verbose

        -n, --numeric              don't resolve names

        --numeric-hosts            don't resolve host names

        --numeric-ports            don't resolve port names

        --numeric-users            don't resolve user names

        -n, --symbolic             resolve hardware names

        -e, --extend               display other/more information

        -p, --programs             display pid/program name for sockets

        -c, --continuous           continuous listing

        -l, --listening            display listening server sockets

        -a, --all, --listening     display all sockets (default: connected)

        -o, --timers               display timers

        -f, --fib                  display forwarding information base (default)

        -c, --cache                display routing cache instead of fib

  : name of interface to monitor/list.

  ={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom

  =use '-a ' or '--'; default: inet

  list of possible address families (which support routing):

    inet (darpa internet) inet6 (ipv6) ax25 (ampr ax.25)

    netrom (ampr net/rom) ipx (novell ipx) ddp (appletalk ddp)

    x25 (ccitt x.25)

netstat的一些常用選項 

netstat -s——本選項能夠按照各個協定分别顯示其統計資料。如果你的應用程式(如web浏覽器)運作速度比較慢,或者不能顯示web頁之類的資料,那麼你就可以用本選項來檢視一下所顯示的資訊。你需要仔細檢視統計資料的各行,找到出錯的關鍵字,進而确定問題所在。 

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 state 

tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 established 

tcp 0 0 210.34.6.89:1165 210.34.6.84:netbios-ssn established 

tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 established 

tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 established 

tcp 0 0 *:9001 *:* listen 

tcp 0 0 *:6000 *:* listen 

tcp 0 0 *:socks *:* listen 

tcp 0 80 210.34.6.89:1161 210.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 bru 

lo 3924 0 1943 0 0 0 43 0 0 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.0.0.0 255.255.255.128 u 0 0 0 eth0 

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.6.2 0.0.0.0 ug 0 0 0 eth0 

- n 選項令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          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

  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      *:*

我們拿其中一行來解釋吧:

proto  local address          foreign address        state

tcp    eagle:2929             219.137.227.10:4899    established

協定(proto):tcp,指是傳輸層通訊協定(什麼?不懂?請用baidu搜尋"tcp",osi七層和tcp/ip四層可是基礎^_^)

本地機器名(local  address):eagle,俗稱計算機名了,安裝系統時設定的,可以在“我的電腦”屬性中修改,本地打開并用于連接配接的端口:2929)   

遠端機器名(foreign  address):219.137.227.10

遠端端口:4899  

狀态:established  

狀态清單

listen  :在監聽狀态中。   

established:已建立聯機的聯機情況。 

time_wait:該聯機在目前已經是等待的狀态。 

-a 參數常用于獲得你的本地系統開放的端口,用它您可以自己檢查你的系統上有沒有被安裝木馬(ps:有很多好程式用來檢測木馬,但你的目的是想成為真正的hacker,手工檢測要比隻按一下“scan”按鈕好些----僅個人觀點)。如果您netstat你自己的話,發現下面的資訊: 

  

  port 12345(tcp) netbus 

  port 31337(udp) back orifice 

  祝賀!您中了最常見的木馬(^_^,上面4899是我連别人的,而且這個radmin是商業軟體,目前我最喜歡的遠端控制軟體) 

  如果你需要木馬及其端口清單的話,去國内的h站找找,或者baidu,google吧 

  ***************************************************************** 

  #一些原理:也許你有這樣的問題:“在機器名後的端口号代表什麼? 

  例子:eagle:2929

  小于1024的端口通常運作一些網絡服務,大于1024的端口用來與遠端機器建立連接配接。  

  *****************************************************************

繼續我們的探讨,使用-n參數。(netstat -n) 

  netstat -n基本上是-a參數的數字形式:

c:\>netstat -n

  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來說非常重要,現在隐藏ip技術很流行,但那些隐藏工具或服務真的讓你隐身嗎?我看不見得,呵呵,代理,跳闆不屬于今天讨論,一個擷取對方ip的簡單例子請參考我前面的文章【

<a target="_blank" href="http://hawkoo.bokee.com/viewdiary.10456844.html">用dos指令查qq好友ip位址</a>

-a 和 -n 是最常用的指令,如果要顯示一些協定的更詳細資訊,就要用-p這個參數了,它其實是-a 和 -n的一個變種,我們來看一個執行個體,你就明白了:【netstat -p @@@ 其中@@@為tcp或者udp】

c:\&gt;netstat -p tcp

繼續我們的參數講解 -e

    含義:本選項用于顯示關于以太網的統計資料。它列出的項目包括傳送的資料報的總位元組數、錯誤數、删除數、資料報的數量和廣播的數量。這些統計資料既有發送的資料報數量,也有接收的資料報數量。這個選項可以用來統計一些基本的網絡流量。

c:\&gt;netstat -e

interface statistics

                           received            sent

bytes                     143090206        44998789

unicast packets              691805          363603

non-unicast packets          886526            2386

discards                          0               0

errors                            0               0

unknown protocols              4449

    若接收錯和發送錯接近為零或全為零,網絡的接口無問題。但當這兩個字段有100個以上的出錯分組時就可以認為是高出錯率了。高的發送錯表示本地網絡飽和或在主機與網絡之間有不良的實體連接配接;  高的接收錯表示整體網絡飽和、本地主機過載或實體連接配接有問題,可以用ping指令統計誤碼率,進一步确定故障的程度。netstat

-e 和ping結合使用能解決一大部分網絡故障。

    接下來我們開始講解兩個比較複雜的參數 -r 和 -s ,也正因為如此,筆者把他放到最後講解,這裡面可能會涉及到其他方面的知識,以後在我的部落格中将會繼續寫出來,呵呵,最近比較忙

-r是用來顯示路由表資訊,我們來看例子:

c:\&gt;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

c

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(預設網關)

persistent routes:(靜态路由)

  none

c:\&gt;

-s 參數的作用前面有詳細的說明,來看例子

c:\&gt;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         = 365287(接收後轉交的包數)

  output requests                    = 369066(請求數)

  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(資料包發送數)

還有幾個常用的指令參數是windowsxp獨有的,-b 和–v 這兩個參數的解釋在前面也是很詳細了,我下面展示兩個例子吧(主要是要顯示對應的應用程式元件等詳細資訊,有馬兒立刻獻身喔,^_^)

c:\&gt;netstat -b

  proto  local address          foreign address        state           pid

  tcp    eagle:microsoft-ds     localhost:1031         established     4

  [system]

  tcp    eagle:1031             localhost:microsoft-ds  established     4

  tcp    eagle:2929             219.137.227.10:4899    established     3224

  [radmin.exe]

  tcp    eagle:3455             218.85.139.65:9002     established     1924

  [dca.exe]

  tcp    eagle:1213             218.85.139.65:9002     close_wait      1924

  tcp    eagle:2416             219.133.63.142:https   close_wait      596

  [qq.exe]

  tcp    eagle:2443             219.133.63.142:https   close_wait      596

  tcp    eagle:2907             192.168.1.101:2774     close_wait      596

c:\&gt;netstat -v

active conne

繼續閱讀