Linux netstat命令結果分析
一:獲取資料
-
使用命令
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.“ 即:代表附加到套接字的相應程式的路徑名
-
相關文章
- Linux netstat 命令詳解Linux
- Linux系統下ifconfig命令使用及結果分析Linux
- netstat命令
- Linux netstat命令作用是什麼?如何使用?Linux
- netstat命令詳解
- Linux基礎命令---netstat顯示網路狀態Linux
- Linux下 netstat ps kill 命令詳解及常用命令收集Linux
- linux netstat一點梳理Linux
- Linux命令總結--mkdir命令Linux
- linux命令總結Linux
- 慢動作輸出 Linux 命令結果並用彩色顯示Linux
- 壓測結果分析
- Linux 系統如何通過 netstat 命令檢視連線數判斷攻擊Linux
- Linux 系統如何透過 netstat 命令檢視連線數判斷攻擊Linux
- Linux命令大全總結Linux
- Linux命令總結大全Linux
- Linux shell命令總結Linux
- 使用netstat命令檢視埠的使用情況
- 分析結果,方法傳參
- Linux基礎命令小結Linux
- LInux 組合命令小結Linux
- Linux 命令總結之 topLinux
- linux 命令分析之 chroot 的原理Linux
- LoadRunner測試結果分析(1)
- Docker--docker ps 命令與結果解析Docker
- Linux下Jmeter+nmon+nmon analyser實現效能監控及結果分析LinuxJMeter
- cmd命令中輸入很多命令都沒有結果返回
- Linux常用命令總結Linux
- linux 新手必會命令總結Linux
- netstat -ntpl
- netstat -ano
- Java在Linux環境下執行MySQL命令無法獲取結果的問題JavaLinuxMySql
- linux總結及常用命令Linux
- 600 條最強 Linux 命令總結Linux
- shell前一個命令結果作為下一個命令引數
- SARIF:靜態分析結果交換格式
- Linux 目錄結構:/lib 分析Linux
- Linux 程式管理常用命令總結Linux