1. 程式人生 > >Linux中的netstat命令詳解

Linux中的netstat命令詳解

前面我們學習了網路的有關基礎知識,今天我們來介紹一個Linux下面的關於網路的一個重要指令——netstat.

功能說明

netstat是基於Netstat這個命令列工具的指令,它可以用來查詢系統上的網路套接字連線情況,包括tcp,udp以及Unix套接字;另外它還能列出路由表,介面狀態和多播成員等資訊。

主要選項

關於netstat命令的選項有很多,這裡我們只介紹常見選項,關於選項和選項的作用如下圖:
這裡寫圖片描述

例項演示

netstat -a       

這條命令會列出所有的,包括監聽的和未監聽的。

netstat -t

列出所有的tcp協議的埠,結果如下:

[root@bogon Test2017_3_7]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 localhost:1024              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*
LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 localhost:smtp *:* LISTEN tcp 0 0 localhost:40312 localhost:1024 ESTABLISHED tcp 0
0 localhost:1024 localhost:40312 ESTABLISHED tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 localhost:smtp *:* LISTEN
netstat -ua

同樣,這條命令表示列出所有的UDP協議的埠。

找出程式執行的埠

netstat -ap | grep '程式名'

例如:

[root@bogon Test2017_3_7]# netstat -ap | grep './server'
tcp        0      0 localhost:1024              *:*                         LISTEN      6130/./server       
tcp        0      0 localhost:1024              localhost:40312             ESTABLISHED 6130/./server       
You have new mail in /var/spool/mail/lzh

找出埠的程式名

netstat -ap | grep '埠號'

例如:

[[email protected] Test2017_3_7]# netstat -ap | grep '1024'
tcp        0      0 localhost:1024              *:*                         LISTEN      6130/./server       
tcp        0      0 localhost:40312             localhost:1024              ESTABLISHED 6323/./client       
tcp        0      0 localhost:1024              localhost:40312             ESTABLISHED 6130/./server   

禁止域名解析
這個主要netstat中的-n選項有關,我們先來看看不帶n時所輸出的結果。

[root@bogon Test2017_3_7]# netstat -ltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 localhost:1024              *:*                         LISTEN      6130/./server       
tcp        0      0 *:ssh                       *:*                         LISTEN      1800/sshd           
tcp        0      0 localhost:ipp               *:*                         LISTEN      1690/cupsd          
tcp        0      0 localhost:smtp              *:*                         LISTEN      1925/master         
tcp        0      0 *:ssh                       *:*                         LISTEN      1800/sshd           
tcp        0      0 localhost:ipp               *:*                         LISTEN      1690/cupsd          
tcp        0      0 localhost:smtp              *:*                         LISTEN      1925/master    

下面我們再來看看加上n 選項後的輸入結果。

[root@bogon Test2017_3_7]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:1024              0.0.0.0:*                   LISTEN      6130/./server       
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1800/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1690/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1925/master         
tcp        0      0 :::22                       :::*                        LISTEN      1800/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1690/cupsd          
tcp        0      0 ::1:25                      :::*                        LISTEN      1925/master         

我們發現在local address 即主機地址這一欄中,如果沒有帶n選項,會將套接字所對應的域名解析出來,如果加上n選項,那麼就不會顯示,即禁止域名解析的功能,這樣做有助於提高查詢速度,因為減少了對主機域名的查詢。

持續輸出netstat資訊

這個沒有什麼好說的,大家自己試一試指令即可。

netstat -c**

顯示路由表的資訊

netstat -r

這條指令相當於route指令,會輸出核心路由資訊。

[root@bogon Test2017_3_7]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.3.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.168.3.1     0.0.0.0         UG        0 0          0 eth0

顯示介面資訊

netstat -i
root@bogon Test2017_3_7]# 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     5277      0      0      0      578      0      0      0 BMRU
lo        16436   0      820      0      0      0      820      0      0      0 LRU

分類統計各個協議的相關資訊

netstat -sa