首頁 >php教程 >PHP开发 >linux的Netstat指令詳解

linux的Netstat指令詳解

高洛峰
高洛峰原創
2016-12-12 17:02:061261瀏覽

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.                

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn