您好,登錄后才能下訂單哦!
Linux之網(wǎng)絡(luò)管理(8)網(wǎng)絡(luò)監(jiān)控工具
linux中有很多查看網(wǎng)絡(luò)、進(jìn)程通信狀態(tài)的查看工具,而網(wǎng)絡(luò)之間建立通信是通過soket套接字進(jìn)行的,所謂套接字,就是相當(dāng)于插座,而一臺(tái)主機(jī)上會(huì)產(chǎn)生多種套接字,就是相當(dāng)于插頭向插座插入的過程,也就是主機(jī)中進(jìn)程通信。而在網(wǎng)絡(luò)中建立通信,就是雙方各種插入對(duì)方。當(dāng)然這些只是粗率的比喻,實(shí)際上,soket是用來將tcp/udp等協(xié)議發(fā)送的數(shù)據(jù)包進(jìn)行封裝:也就是相當(dāng)于食品包裝,把數(shù)據(jù)包加上port端口號(hào)、進(jìn)程號(hào)等然后發(fā)送給對(duì)方,然后對(duì)方根據(jù)數(shù)據(jù)的包裝袋來放回特定需要的數(shù)據(jù)。這樣網(wǎng)絡(luò)之間各種進(jìn)程直接通信之間互不干擾。就像送快遞和收快遞的一樣,誰的快遞,誰來收,路線就是到你家。
linux中提供的工具:
netstat 命令
man 文檔幫助的說明:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
打印網(wǎng)絡(luò)連接、路由表、接口統(tǒng)計(jì)、偽裝連接、多播連接等信息。
選項(xiàng)介紹:
netstat [option]...
-r : 顯示路由表
-t : 已經(jīng)建立的tcp協(xié)議相關(guān)
-u : 已經(jīng)建立的udp協(xié)議相關(guān)
-w : raw sokect (未包裝處理的)
-l : 處于監(jiān)聽狀態(tài)
-a : 所有狀態(tài)
-n : 及數(shù)字顯示IP和端口
-e : 擴(kuò)展方式詳細(xì)更多狀態(tài)信息
-p : 顯示相關(guān)進(jìn)程及PID
常用組合使用:
查明網(wǎng)絡(luò)連接:
netstat -tan 顯示所有tcp相關(guān)的連接狀態(tài)
netstat -uan 顯示所有udp相關(guān)的連接狀態(tài)
netstat -tnl 顯示所有監(jiān)聽狀態(tài)的tcp連接
netstat -unl 顯示所有監(jiān)聽狀態(tài)的udp連接
顯示路由表:
netstat -rn 不做反向解析顯示內(nèi)核路由表
顯示接口統(tǒng)計(jì)數(shù)據(jù):
netstat -i #顯示所有網(wǎng)絡(luò)接口信息狀態(tài)
netstat -I=FACE_NAME #顯示指定設(shè)備信息狀態(tài)
例子:netstat -I=eth0 #顯示eth0設(shè)備數(shù)據(jù)連接狀態(tài)信息
ss命令
ss - another utility to investigate sockets
這是另一種顯示套接字信息的工具,netstat命令通過遍歷proc 來獲取socket信息,以及是老舊的命令了,ss使用netlink與內(nèi)核tcp_diga模塊通信獲取socket信息,更加準(zhǔn)確。
格式及選項(xiàng)介紹:
ss[option] [FILTER]
option:
-t : tcp 協(xié)議相關(guān)
-u : udp協(xié)議相關(guān)
-w : 裸套接字符相關(guān)
-x : unix sock系統(tǒng)內(nèi)核相關(guān)
-l : listen監(jiān)聽狀態(tài)的連接
-a : 所有連接
-n : 數(shù)字格式
-p : 相關(guān)的程序及PID
-e : 擴(kuò)展的信息
-m : 內(nèi)存用量
-o : 計(jì)時(shí)器信息
FILTER : = [ state TCP-STATE ] [ EXPRESSION ]
TCP的標(biāo)準(zhǔn)狀態(tài):
LISTEN :監(jiān)聽
ESTABLISHED:已建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED關(guān)閉
EXPRESSION:
dport =#目標(biāo)端口
sport = #源端口
例子:’( dport = :ssh or sport = :ssh )’
常用組合:
ss -tan#所有tcp連接狀態(tài)
ss -tanl #所有監(jiān)聽的tcp狀態(tài)
ss -tanlp #所有監(jiān)聽tcp的并顯示進(jìn)程PID
ss -uan #所有udp狀態(tài)
額外用法:
ssh -A QUERY#查看對(duì)應(yīng)類型或協(xié)議的狀態(tài),QUERY參數(shù)為要指定的類型
QUERY:
all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream,
unix_seqpacket, packet_raw, packet_dgram.
TCP-STATE中可用的標(biāo)示符參數(shù):
所有TCP標(biāo)準(zhǔn)狀態(tài)參數(shù):
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed,
close-wait, last-ack, listen, closing.
復(fù)雜狀態(tài)參數(shù):
all 所有的狀態(tài)
connection 所有連接的(除了監(jiān)聽和關(guān)閉的)狀態(tài)
synchronized 所有同步的,除了syn-sent所有連接的狀態(tài)
bucket 所有維護(hù)scokect和 syn-recv的狀態(tài)
big 所有和bucket相反的狀態(tài)
案例展示:
顯示本地打開的所有端口 ss -l
[root@localhost www]# ss -l | tail -n 10
解析:udp是沒有狀態(tài)的,所以打開的連接會(huì)顯示兩個(gè)協(xié)議所有處于監(jiān)聽狀態(tài)連接
顯示每個(gè)進(jìn)程具體打開的 socket。
[root@localhost www]# ss -pl | tail -n 10
顯示所有tcp socket
[root@localhost www]# ss -t -a
顯示所有UDP Socekt
[root@localhost www]# ss -u -a
顯示所有已經(jīng)建立的SMTP連接
[root@localhost www]# ss -o state established '( dport = :smtp or sport = :smtp )'
顯示所有已經(jīng)建立的HTTP連接
[root@localhost www]# ss -o state established '( dport = :http or sport = :http )'
找出所有連接X服務(wù)器的進(jìn)程
[root@localhost www]# ss -x src /tmp/.X11-unix/*
列出當(dāng)前各協(xié)議的各套接字個(gè)數(shù)
[root@localhost www]# ss -s
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。