Linux netstat命令結果分析

yoylee_web發表於2018-09-30

一:獲取資料

  • 使用命令

netstat -anp 

//命令介紹:

netstat : linux中檢視網路狀態的命令

-a : 顯示所有的連線

-n : 以ip格式顯示

-p : 顯示連線對應的程式

netstat命令詳解請移步:http://man.linuxde.net/netstat

  • 引數含義(來自菜鳥教程):

  • -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"引數相同。
  • 得到結果

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      458/sshd            
tcp        0     52 10.105.254.117:22       124.251.53.238:58615    ESTABLISHED 29936/sshd: root@pt 
tcp6       0      0 :::3306                 :::*                    LISTEN      32519/mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      5737/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      458/sshd            
udp        0      0 0.0.0.0:111             0.0.0.0:*                           5737/rpcbind        
udp        0      0 0.0.0.0:824             0.0.0.0:*                           5737/rpcbind        
udp6       0      0 :::111                  :::*                                5737/rpcbind        
udp6       0      0 :::824                  :::*                                5737/rpcbind        
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     130995418 32519/mysqld         /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     12137    454/lsmd             /var/run/lsm/ipc/simc
unix  2      [ ]         DGRAM                    6767     1/systemd            /run/systemd/notify
unix  2      [ ]         DGRAM                    6769     1/systemd            /run/systemd/cgroups-agent
unix  2      [ ACC ]     STREAM     LISTENING     6778     1/systemd            /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    6781     1/systemd            /run/systemd/journal/socket
unix  8      [ ]         DGRAM                    6783     1/systemd            /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     9601     1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ]         DGRAM                    9613     1/systemd            /run/systemd/shutdownd
unix  2      [ ACC ]     STREAM     LISTENING     9615     1/systemd            /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     11170    1/systemd            /var/run/rpcbind.sock
unix  2      [ ACC ]     STREAM     LISTENING     12196    454/lsmd             /var/run/lsm/ipc/sim
unix  2      [ ACC ]     STREAM     LISTENING     11173    1/systemd            /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     11944    462/acpid            /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     9448     1/systemd            /run/systemd/private
unix  2      [ ACC ]     SEQPACKET  LISTENING     9464     1/systemd            /run/udev/control

二:結果分析

  • 分為兩部分:

    • Active Internet connections(有源Internet連線):用於網路連線傳輸

    • Active UNIX domain sockets(有源UNIX套接字):只能用於本地通訊,效能比第一種好

  • Active Internet connections 部分:

  • 欄位介紹:

    • Proto : 該連線所使用的協議

    • Recv-Q : 接受佇列

    • Send-Q : 傳送佇列

    • Local Address: 本地ip:port

    • Foreign Address : 遠端主機ip:port

    • State :連線所處的狀態

    • PID/Program name :使用該連線的程式id和name

  • 相關欄位作用:

    • Proto :通過此欄位可以看到連線使用的是什麼協議,主要是TCP協議還是UDP協議,還有TCP6、UDP6這就是使用了ipv6的協議

    • Recv-Q表示收到的資料已經在本地接收緩衝,但是還有多少沒有被程式取走,recv()。如果接收佇列Recv-Q一直處於阻塞狀態,也就是Recv-Q值不為零並且值挺大,可能是遭受了Dos 攻擊。 

    • Send-Q 對方沒有接受的資料,仍然在本地緩衝區中。如果傳送佇列Send-Q不能很快的清零,可能是有應用向外傳送資料包過快,或者是對方接收資料包不夠快。這時候就要調整傳送速度或者接受速度了。例如:如果看到是大量的 send-Q ,可以判定是傳送資料給目的地址的時候出現了阻塞的問題,導致了包堆積在本地快取中,不能成功發出去。那麼問題就可能產生在了客戶端,根據業務邏輯可以看看是不是客戶端傳送的TCP長連線數量過多。驗證辦法,嘗試減少客戶端和服務的長連線.檢視效果。

    • Recv-Q 和 Send-Q 這兩個值通常應該為0,如果不為0可能是有問題的。packets在兩個佇列裡都不應該有堆積狀態。可接受短暫的非0情況。

      • 在正常情況下, LISTEN 狀態中: Recv-Q 表示的當前等待服務端呼叫 accept 完成三次握手的 listen backlog 數值,也就是說,當客戶端通過 connect() 去連線正在 listen() 的服務端時,這些連線會一直處於Recv-Q這個queue 裡面直到被服務端 accept();Send-Q 表示的則是最大的 listen backlog 數值。

      • 其餘狀態: 非 LISTEN 狀態之前理解的沒有問題。Recv-Q 表示 receive queue 中的 bytes 數量;Send-Q 表示 send queue 中的 bytes 數值。

    • State:標識tcp連線狀態,比如TCP的狀態有:(圖片來自:https://www.cnblogs.com/qingergege/p/6603488.html

  • Active UNIX domain sockets 部分:

  • 欄位介紹:

    • Proto : 該連線所使用的協議

    • RefCnt:引用計數(即通過此套接字附加的程式),也就是連線到本套介面上的程式數量

    • Flags:"The flags displayed are SO_ACCEPTON (displayed as ACC), SO_WAITDATA (W) or SO_NOSPACE (N). SO_ACCECPTON is used on unconnected sockets if their corresponding processes are waiting for a connect request. The other flags are not of normal interest."  即:顯示的標誌有SO_ACCEPTON(顯示為ACC),SO_WAITDATA(W)或SO_NOSPACE(N)。 SO_ACCECPTON程式正在等待連線請求還未連線的套接字。

    • Type:套接字的型別

      • 有幾種型別的套接字訪問:
      • SOCK_DGRAM:資料包(無連線)模式。
      • SOCK_STREAM:流(連線)套接字。
      • SOCK_RAW:原始套接字。
      • SOCK_RDM:這個伺服器提供可靠傳遞的訊息。
      • SOCK_SEQPACKET:這是一個順序資料包套接字。
      • SOCK_PACKET:原始介面訪問套接字。
    • State:套接字當前的狀態

      • 該欄位將包含以下狀態:
      • FREE:未分配套接字。
      • LISTENING:套接字正在偵聽連線請求。如果指定--listening(-l)或--all(-a)選項,則此類套接字僅包含在輸出中。
      • CONNECTING:套接字即將建立連線。
      • CONNECTED:已連線套接字。
      • DISCONNECTING :套接字正在斷開連線。
      • (empty) :套接字未連線到另一個套接字
    • PID/Program name :使用該連線的程式id和name

    • I-Node:unix系統檔案系統中每個檔案都存在的inode

    • Path:This is the path name as which the corresponding processes attached to the socket.“ 即:代表附加到套接字的相應程式的路徑名

 

相關文章