10.7 netstat:查看網絡狀態


netstat命令

用於顯示本機網絡的連接狀態、運行端口和路由表等信息。


netstat命令的參數選項及說明


-r    顯示路由表信息,該功能類似於前面學過的route 和ip route
-g    顯示多播功能群組成員,該功能類似於前面學過的ip maddr
-i    顯示網絡接口信息,該功能類似於前面學過的ip -s link
-s    顯示各類協議的統計信息
-n    顯示數字形式的地址而不是去解析主機、端口或用戶名。默認情況下,netstat命令會嘗試解析並顯示主機的主機名,這個過程通常比較長也是非必需的
-a    顯示處於監聽狀態和非監聽狀態的socket信息
-A    顯示指定網絡類型的網絡連接狀態
-c<秒數>    后面跟的秒數表示每隔幾秒就刷新顯示一次
-l    僅顯示連接狀態為“LISTEN”的服務的網絡狀態
-t    顯示所有的TCP連接情況
-u    顯示所有的UDP連接情況
-p    顯示socket所屬進程的PID和名稱

常用選項組合1

[root@cs6 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0     64 10.0.0.100:22               10.0.0.1:2827               ESTABLISHED
tcp        0      0 10.0.0.100:22               10.0.0.1:6358               ESTABLISHED
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  8      [ ]         DGRAM                    12335  /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     12689  public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     12697  private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     12702  private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     12706  private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     12710  private/defer
unix  2      [ ACC ]     STREAM     LISTENING     12714  private/trace
unix  2      [ ACC ]     STREAM     LISTENING     12718  private/verify
unix  2      [ ACC ]     STREAM     LISTENING     12722  public/flush
unix  2      [ ACC ]     STREAM     LISTENING     12726  private/proxymap


針對該命令的第一行內容進行了說明。
    第一行活動網絡連接說明

第一列 Proto     socket使用的協議(TCP、UDP、RAW)
第二列 Recv-Q    接收到但是還未處理的字節數
第三列 Send-Q    已經發送但是未被遠程主機確認收到的字節數
第四列 Local Address 本地主機地址和端口
第五列 Foreign Address 遠程主機地址和端口
第六列 State     socket的狀態,通常僅僅有TCP的狀態,狀態值可有ESTABLISHED、SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT等



第6列 State狀態信息詳解

ESTABLISHED   socket已經建立連接,表示處於連接的狀態,一般認為有一個ESTABLISHED 是一個服務的並發連接。
             該連接狀態在生產場景中很重要,需要重點關注
SYN_SENT     socket正在積極嘗試建立一個連接,即處於發送后連接前的一個等待但未匹配進入連接的狀態
SYN_RECV     已經從網絡上收到一個連接請求
FIN_WAIT1    socket已關閉,連接正在或正要關閉
FIN_WAIT2    連接已關閉,並且socket正在等待遠端結束
TIME_WAIT    socket正在等待關閉處理仍在網絡上的教據包,這個連接狀態在生產場景中很重要,需要重點關注
CLOSED        socket不再被占用了
CLOSE_WAIT    遠端已經結束,等待socket關閉
LAST_ACK      遠端已經結束,並且socket也已關閉,等待acknowledgement
LISTEN        socket正在監聽連接請求
CLOSING       socket關閉,但是我們仍舊沒有發送數據
UNKNOWN       socket狀態未知



常用選項組合2


[root@cs6 ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1358/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1437/master         
tcp        0      0 :::22                       :::*                        LISTEN      1358/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1437/master

以上命令語句的作用為顯示所有TCP和UDP正在監聽的連接信息。
-l:顯示所有LISTEN狀態的網絡連接。
-n:顯示IP地址,不進行DNS解析成主機名、域名。
-t:顯示所有TCP連接。
-u:顯示所有UDP連接。
-p:顯示進程號和進程名。



顯示當前系統的路由表。


[root@cs6 ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.16.1.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
10.1.0.0        10.0.0.253      255.255.255.0   UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         10.0.0.2        0.0.0.0         UG        0 0          0 eth0



選項-i顯示網絡的接口狀況。


[root@cs6 ~]# 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     5405      0      0      0     3518      0      0      0 BMRU
eth1       1500   0        0      0      0      0       18      0      0      0 BMRU
lo        65536   0        0      0      0      0        0      0      0      0 LRU


以下是命令結果解釋。
lface:表示網絡設備的接口名稱。
MTU:表示最大傳輸單元,單位為字節。
RX-OK/TX-OK:表示已經准確無誤地接收/發送了多少數據包。
RX-ERR/TX-ERR:表示接收/發送數據包時產生了多少錯誤。
RX-DRP/TX-DRP:表示接收/發送數據包時丟棄了多少數據包。
RX-OVR/TX-OVR:表示由於誤差而遺失了多少數據包。
Flg:表示接口標記,其中各標記含義具體如下。
  • L:表示該接口是個回環設備。
  • B:表示設置了廣播地址。
  • M:表示接收所有數據包。
  • R:表示接口正在運行。
  • U:表示接口處於活動狀態。
  • o:表示在該接口上禁用arp。
  • P:表示一個點到點的連接。
正常情況下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都應該為0,如果這幾個選項的值不為0,並且很大,那么網絡質量肯定有問題,網絡傳輸性能也一定會下降。



[root@bzhl ~]# netstat -n|awk '/^tcp/ {++lewen[$NF]} END {for (a in lewen) print a ,lewen[a]}'
ESTABLISHED 5
TIME_WAIT 1


免責聲明!

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



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