Linux下netstat命令詳解


一、netstat命令簡述

netstat命令用來打印Linux系統的網絡狀態信息,包括網絡連接(network connections)、路由表(routing tables)、網絡接口設備統計信息(interface statistics)、偽裝連接(masquerade connections)和多播成員信息(multicast memberships)等,可顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。。

 二、輸出解釋

在linux下直接執行netstat會得到如下結果

從整體上看netstat的輸出結果可以分為兩個部分。一個是Active Internet connections,二是Active UNIX domain sockets。

(1)Active Internet connections Active Internet connections表示活躍的網絡連接,包括UDP和TCP連接信息。其中"Recv-Q"和"Send-Q"指接收隊列和發送隊列,這些數字一般都是0,如果不是則表示數據發送和接收隊列存在堆積,這種情況較為少見。Local Address和Foreign Address表示本地和遠端的IP、端口,State表示連接的狀態,主要有:

    ESTABLISHED:已建立連接的狀態

    LISTEN :偵聽來自遠方的TCP端口的連接請求

    SYN_SENT:發出主動連接(SYN)的數據包

    SYN_RECV :接收到一個要求連接的主動連接數據包

    FIN_WAIT1 :該套接字服務已中斷,該連接正在斷線中

    FIN_WAIT2:該連接已掛斷,正在等待對方主機響應斷線確認的數據包

    TIME_WAIT :連接已掛斷,但socket還在網絡上等待結束

    CLOSE_WAIT:等待從本地用戶發來的連接中斷請求

    

 

為了方便理解上述狀態具體內容,畫出客戶端向服務器請求TCP連接的三次握手和客戶端主動斷開連接的四次揮手過程示意圖如下:

 

三次握手:

 

四次揮手:

 

 

(2)Active UNIX domain sockets Active UNIX domain sockets,稱為活躍Unix域套接字。

Proto顯示連接使用的協議; RefCnt表示使用數量,即通過此套接字連接的進程數;

Flags顯示的標志為SO_ACCEPTON(顯示為 ACC)、SO_WAITDATA(W)或SO_NOSPACE(N)。如果相應的進程等待一個連接請求,那么SO_ACCECPTON用於未連接的套接字。其它標志通常並不重要。

Types顯示套接口的類型,一般為DGRAM(數據報)、STREAM(數據流);

I-Node表示套接字的Inode節點號;

Path表示套接字所在路徑。

State顯示套接字當前的狀態,此字段包含以下關鍵字之一:  

  FREE:套接字未分配。

  LISTENING:套接字正在監聽一個連接請求。除非設置 --listening (-l) 或者 --all (-a) 選項,否則不顯示。

  CONNECTING:套接字正要建立連接

  CONNECTED:套接字已連接

  DISCONNECTING:套接字已斷開

  (empty):套接字未連

 

三、常用netstat相關命令

命令格式:

netstat[<options>]

語法選項:

-a或--all:顯示所有連線中的Socket;
-A<網絡類型>或--<網絡類型>:列出該網絡類型連線中的相關地址;
-c或--continuous:持續列出網絡狀態;
-C或--cache:顯示路由器配置的快取信息;
-e或--extend:顯示網絡其他相關信息;
-F或--fib:顯示FIB;
-g或--groups:顯示多重廣播功能群組組員名單;
-h或--help:在線幫助;
-i或--interfaces:顯示網絡界面信息表單;
-l或--listening:顯示監控中的服務器的Socket;
-M或--masquerade:顯示偽裝的網絡連線;
-n或--numeric:直接使用ip地址,而不通過域名服務器;
-N或--netlink或--symbolic:顯示網絡硬件外圍設備的符號連接名稱;
-o或--timers:顯示計時器;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-r或--route:顯示Routing Table;
-s或--statistice:顯示網絡工作信息統計表;
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-v或--verbose:顯示指令執行過程;
-V或--version:顯示版本信息;
-w或--raw:顯示RAW傳輸協議的連線狀況;
-x或--unix:此參數的效果和指定"-A unix"參數相同;
--ip或--inet:此參數的效果和指定"-A inet"參數相同。

netstat -ntlp //查看當前所有tcp端口
netstat -ntulp |grep 80 //查看所有80端口使用情況
netstat -an | grep 3306 //查看所有3306端口使用情況
netstat -lanp //查看一台服務器上面哪些服務及端口
ps -ef |grep mysqld //查看一個服務有幾個端口。比如要查看mysqld
netstat -pnt |grep :3306 |wc //查看某一端口的連接數量,比如3306端口
netstat -anp |grep 3306 //查看某一端口的連接客戶端IP 比如3306端口

 

 

 

 

常用的命令如下圖:

 

 

四、常用命令示例

1.列出所有端口信息(包括監聽和未監聽的)

netstat -a

顯示信息:

hadoop@master:~$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
udp        0      0 localhost:domain        0.0.0.0:*                          
udp        0      0 0.0.0.0:45465           0.0.0.0:*                          
udp        0      0 0.0.0.0:ipp             0.0.0.0:*                          
udp        0      0 0.0.0.0:mdns            0.0.0.0:*                          
udp6       0      0 [::]:56383              [::]:*                             
udp6       0      0 [::]:mdns               [::]:*                             
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     40098    @/tmp/.ICE-unix/2304
unix  2      [ ]         DGRAM                    37416    /run/user/1001/systemd/notify

 

2.列出所有的tcp協議的端口

netstat -at

顯示信息:

hadoop@master:~$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN     
tcp        0      1 master:55660            36.75.98.34.bc.go:https SYN_SENT   
tcp        0      0 master:45170            server-13-32-52-1:https ESTABLISHED
tcp        0      1 master:55662            36.75.98.34.bc.go:https SYN_SENT   
tcp        0      0 master:55696            ec2-52-24-186-236:https ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN 

 

3.顯示每個協議的統計信息

netstat -s

顯示信息:

hadoop@master:~$ netstat -s
Ip:
    Forwarding: 2
    2700 total packets received
    63 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    2635 incoming packets delivered
    2445 requests sent out
    20 outgoing packets dropped
Icmp:
    43 ICMP messages received
    0 input ICMP message failed
    ICMP input histogram:
        destination unreachable: 43
    51 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 51
IcmpMsg:
        InType3: 43
        OutType3: 51

 

4.顯示核心路由信息

netstat -r

顯示信息:

hadoop@master:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         _gateway        0.0.0.0         UG        0 0          0 ens33
192.168.81.0    0.0.0.0         255.255.255.0   U         0 0          0 ens33

 

5.持續輸出 netstat 信息。netstat -c將每隔一秒輸出網絡信息

netstat -c

 

6. 找出程序運行的端口。並不是所有的進程都能找到,沒有權限的會不顯示,使用 root 權限查看所有的信息

root@master:/home/hadoop# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      964/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1640/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1149/cupsd          

 

7. 顯示多播組信息

netstat -g

顯示信息:

root@master:/home/hadoop# netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      224.0.0.251
lo              1      all-systems.mcast.net
ens33           1      224.0.0.251
ens33           1      all-systems.mcast.net
lo              1      ff02::fb
lo              1      ip6-allnodes
lo              1      ff01::1
ens33           1      ff02::fb
ens33           1      ff02::1:ffae:db63
ens33           2      ip6-allnodes
ens33           1      ff01::1

 

8.顯示接口信息

netstat -i

顯示:

root@master:/home/hadoop# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33     1500     3856      0      0 0          2715      0      0      0 BMRU
lo       65536      766      0      0 0           766      0      0      0 LRU

 

9.禁止域名解析

正常情況輸出結果:

root@master:/home/hadoop# netstat -ltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN      964/systemd-resolve 
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      1640/sshd           
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN      1149/cupsd          
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN      1704/mysqld         
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      1640/sshd           

禁止域名解析后輸出結果:

root@master:/home/hadoop# 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.53:53           0.0.0.0:*               LISTEN      964/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1640/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1149/cupsd          
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN  

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

 

netstat的大部分功能都介紹了,如果想知道netstat更高級的功能,請閱讀它的手冊~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM