色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DBA抓包神器tshark測評

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-06-16 15:54 ? 次閱讀

作者:趙黎明

愛可生 MySQL DBA 團(tuán)隊(duì)成員,熟悉 Oracle、MySQL 等數(shù)據(jù)庫,擅長數(shù)據(jù)庫性能問題診斷、事務(wù)與鎖問題的分析等,負(fù)責(zé)處理客戶 MySQL 及我司自研 DMP 平臺日常運(yùn)維中的問題,對開源數(shù)據(jù)庫相關(guān)技術(shù)非常感興趣。

1常用抓包工具

tshark、tcpdump 和 Wireshark 都是網(wǎng)絡(luò)抓包工具,它們可以在網(wǎng)絡(luò)上捕獲和分析數(shù)據(jù)包。

tcpdump

一個開源的,基于命令行的網(wǎng)絡(luò)抓包工具。它可以捕獲和分析網(wǎng)絡(luò)數(shù)據(jù)包,運(yùn)行在幾乎所有的 Unix 和 Linux 系統(tǒng)上;可以抓取實(shí)時網(wǎng)絡(luò)通信中的數(shù)據(jù)包,然后通過過濾器及其他參數(shù),對數(shù)據(jù)包進(jìn)行解析和處理。

tshark

Wireshark 的命令行版本,也是一個開源的網(wǎng)絡(luò)分析工具。它可以在命令行下捕獲和分析網(wǎng)絡(luò)流量數(shù)據(jù),并使用 Wireshark 的過濾器來提取所需的數(shù)據(jù),還支持與各種腳本語言(如 Python 和 Perl)結(jié)合使用,以自動化分析過程。

Wireshark

是一個流行的網(wǎng)絡(luò)協(xié)議分析器,支持從在線網(wǎng)絡(luò)或本地文件中捕獲數(shù)據(jù)包,并提供了圖形化用戶界面來展示數(shù)據(jù)包內(nèi)容;可以解析并顯示各種網(wǎng)絡(luò)協(xié)議,并提供了強(qiáng)大的分析工具以及過濾器;與 tshark 和 tcpdump 相比,Wireshark 的優(yōu)勢在于它提供了友好的 GUI 界面,使用戶更輕松地進(jìn)行網(wǎng)絡(luò)協(xié)議的分析和調(diào)試。

小結(jié)

以上這些工具都可以直接捕獲和分析網(wǎng)絡(luò)數(shù)據(jù)包,但它們在使用方式和功能上略有不同;通常,我們會先用 tcpdump 或 tshark 在目標(biāo)服務(wù)器上抓包生成 pcap 文件,再將其拿到裝有 Wireshark 的主機(jī)上進(jìn)行分析,本文將會分享 tshark 和 Wireshark 的一些使用技巧。

2三次握手和四次揮手

TCP 協(xié)議中的三次握手和四次揮手是 TCP 連接建立和關(guān)閉的過程。

三次握手

客戶端向服務(wù)器發(fā)送 SYN 報(bào)文(請求建立連接)

服務(wù)器收到 SYN 報(bào)文后,回復(fù) SYN+ACK 報(bào)文(同意建立連接)

客戶端收到 SYN+ACK 報(bào)文后,再回復(fù) ACK 報(bào)文(確認(rèn)連接建立)

77fe5900-0c16-11ee-962d-dac502259ad0.png

四次揮手

客戶端向服務(wù)器發(fā)送 FIN 報(bào)文(請求斷開連接)

服務(wù)器收到 FIN 報(bào)文后,回復(fù) ACK 報(bào)文(確認(rèn)收到請求)

當(dāng)服務(wù)器確認(rèn)數(shù)據(jù)已經(jīng)全部發(fā)送完畢后,它會向客戶端發(fā)送 FIN 報(bào)文(關(guān)閉連接)

客戶端收到 FIN 報(bào)文后,回復(fù) ACK 報(bào)文(表示確認(rèn)收到關(guān)閉請求),至此,整個 TCP 連接就被徹底關(guān)閉了

781f498a-0c16-11ee-962d-dac502259ad0.png

三次握手用于建立連接,是雙方協(xié)商建立 TCP 連接的過程;四次揮手用于斷開連接,是雙方結(jié)束 TCP 連接的過程;不過,有時候四次揮手也會變成三次(如果沒有數(shù)據(jù)發(fā)送,2 個包會合并傳輸)。

784ff54e-0c16-11ee-962d-dac502259ad0.png

3三次握手和四次揮手的過程

我們可以通過 tshark 抓包來觀察 TCP 連接、斷開的具體過程。

--在服務(wù)端執(zhí)行tshark命令進(jìn)行抓包
dmp2(master)~#tshark-f'tcpport3332andhost10.186.61.83'
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'eth0'
==>等待捕獲TCP包直到有內(nèi)容輸出

#此處省略了-i,默認(rèn)會選擇第一個非loopback的網(wǎng)絡(luò)接口(可簡寫為lo),效果與指定-ieth0相同
#-f,指定捕獲過濾器的表達(dá)式,可指定需要捕獲的內(nèi)容,如:協(xié)議、端口、主機(jī)IP等

--通過MySQL客戶端遠(yuǎn)程連接到MySQL實(shí)例,等待片刻后再退出
{master}~#m3332-s(此處配置了alias,可省略具體的連接串)
mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.
mysql>exit

--觀察屏幕輸出

1、三次握手
從左到右的字段依次代表序號、時間戳(納秒)、源端IP、目標(biāo)端IP、協(xié)議、包的長度(字節(jié))、具體信息(包括源/目標(biāo)端口號或設(shè)備名、標(biāo)志位等內(nèi)容)
10.00000000010.186.61.83->10.186.60.68TCP7438858>mcs-mailsvr[SYN]Seq=0Win=29200Len=0MSS=1460SACK_PERM=1TSval=2369606050TSecr=0WS=128
20.00001836810.186.60.68->10.186.61.83TCP74mcs-mailsvr>38858[SYN,ACK]Seq=0Ack=1Win=28960Len=0MSS=1460SACK_PERM=1TSval=2369617045TSecr=2369606050WS=128
30.00023316110.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=1Ack=1Win=29312Len=0TSval=2369606050TSecr=2369617045
40.00059242010.186.60.68->10.186.61.83TCP148mcs-mailsvr>38858[PSH,ACK]Seq=1Ack=1Win=29056Len=82TSval=2369617045TSecr=2369606050
50.00082792010.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=1Ack=83Win=29312Len=0TSval=2369606051TSecr=2369617045
60.00083351210.186.61.83->10.186.60.68TCP10238858>mcs-mailsvr[PSH,ACK]Seq=1Ack=83Win=29312Len=36TSval=2369606051TSecr=2369617045
70.00083726310.186.60.68->10.186.61.83TCP66mcs-mailsvr>38858[ACK]Seq=83Ack=37Win=29056Len=0TSval=2369617045TSecr=2369606051
80.00199799810.186.61.83->10.186.60.68TCP26438858>mcs-mailsvr[PSH,ACK]Seq=37Ack=83Win=29312Len=198TSval=2369606052TSecr=2369617045
90.00202191610.186.60.68->10.186.61.83TCP66mcs-mailsvr>38858[ACK]Seq=83Ack=235Win=30080Len=0TSval=2369617047TSecr=2369606052
100.00697722310.186.60.68->10.186.61.83TCP2088mcs-mailsvr>38858[PSH,ACK]Seq=83Ack=235Win=30080Len=2022TSval=2369617052TSecr=2369606052
110.00722734010.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=235Ack=2105Win=33280Len=0TSval=2369606057TSecr=2369617052
120.00842644710.186.61.83->10.186.60.68TCP17138858>mcs-mailsvr[PSH,ACK]Seq=235Ack=2105Win=33280Len=105TSval=2369606058TSecr=2369617052
130.00881232410.186.60.68->10.186.61.83TCP308mcs-mailsvr>38858[PSH,ACK]Seq=2105Ack=340Win=30080Len=242TSval=2369617053TSecr=2369606058
140.00909971210.186.61.83->10.186.60.68TCP29138858>mcs-mailsvr[PSH,ACK]Seq=340Ack=2347Win=36224Len=225TSval=2369606059TSecr=2369617053
150.00918964410.186.60.68->10.186.61.83TCP106mcs-mailsvr>38858[PSH,ACK]Seq=2347Ack=565Win=31104Len=40TSval=2369617054TSecr=2369606059
160.00944393610.186.61.83->10.186.60.68TCP13238858>mcs-mailsvr[PSH,ACK]Seq=565Ack=2387Win=36224Len=66TSval=2369606059TSecr=2369617054
170.00965640510.186.60.68->10.186.61.83TCP187mcs-mailsvr>38858[PSH,ACK]Seq=2387Ack=631Win=31104Len=121TSval=2369617054TSecr=2369606059
180.04964153210.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=631Ack=2508Win=36224Len=0TSval=2369606100TSecr=2369617054

#序號1-3的包,即TCP三次握手的過程
#1)110.186.61.83->10.186.60.68TCP7438858>mcs-mailsvr[SYN]Seq=0
#2)210.186.60.68->10.186.61.83TCP74mcs-mailsvr>38858[SYN,ACK]Seq=0Ack=1
#3)310.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=1Ack=1

2、四次揮手(在客戶端執(zhí)行exit命令后才會輸出)
1986.74417350110.186.61.83->10.186.60.68TCP10038858>mcs-mailsvr[PSH,ACK]Seq=631Ack=2508Win=36224Len=34TSval=2369692794TSecr=2369617054
2086.74419455110.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[FIN,ACK]Seq=665Ack=2508Win=36224Len=0TSval=2369692794TSecr=2369617054
2186.74438941710.186.60.68->10.186.61.83TCP66mcs-mailsvr>38858[FIN,ACK]Seq=2508Ack=666Win=31104Len=0TSval=2369703789TSecr=2369692794
2286.74463220310.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=666Ack=2509Win=36224Len=0TSval=2369692795TSecr=2369703789

#序號20-22的包,為四次揮手的過程,這里由于服務(wù)器并沒有數(shù)據(jù)要傳輸給客戶端,所以將FIN和ACK合并在一個TCP包中了,即所謂的四次揮手變成了三次
#1)201986.74417350110.186.61.83->10.186.60.68TCP10038858>mcs-mailsvr[PSH,ACK]Seq=631Ack=2508
#2)2110.186.60.68->10.186.61.83TCP66mcs-mailsvr>38858[FIN,ACK]Seq=2508Ack=666
#3)2210.186.61.83->10.186.60.68TCP6638858>mcs-mailsvr[ACK]Seq=666Ack=2509

4TCP 包標(biāo)志位的說明

TCP (傳輸控制協(xié)議)包頭部有 6 個標(biāo)志位(Flag),分別為 URG、ACK、PSH、RST、SYN、FIN,它們的十六進(jìn)制值分別為:0x20、0x10、0x08、0x04、0x02、0x01,其中每個標(biāo)志位的意義如下:

URG 標(biāo)志:緊急指針是否有效

ACK 標(biāo)志:確認(rèn)號是否有效

PSH 標(biāo)志:Push操作,盡可能快地將數(shù)據(jù)交給應(yīng)用層

RST 標(biāo)志:重置連接

SYN 標(biāo)志:發(fā)起一個新的連接

FIN 標(biāo)志:釋放連接

5tshark 常見用法示例

1. tshark 以自定義字段來展示信息

--服務(wù)端執(zhí)行抓包
dmp2(master)~#tshark-ieth0-dtcp.port==3332,mysql-f"host10.186.61.83andtcpport3332"-Tfields-eframe.time-eip.host-etcp.flags
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'eth0'

#-Tfields,可以指定需要輸出的字段,需配合-e一起使用,此處將分別打印獲取包的時間、主機(jī)IP及TCP的標(biāo)志位,這些字段會按照-e的順序進(jìn)行排列展示
#-e,支持多種協(xié)議下的字段展示,具體用法查詢路徑:Wireshark ->分析->顯示過濾器表達(dá)式

--通過 MySQL 客戶端連接實(shí)例,執(zhí)行一個查詢,再退出(共有 3 部分:連接、通信、斷連)
{master}~#m3332-s
mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.
mysql>select@@version;
@@version
5.7.36-log
mysql>exit

--觀察屏幕輸出
1、三次握手
"Jun6,20231442.839863403CST"10.186.61.83,10.186.60.680x00000002
"Jun6,20231442.839904347CST"10.186.60.68,10.186.61.830x00000012
"Jun6,20231442.840263352CST"10.186.61.83,10.186.60.680x00000010
"Jun6,20231442.840666158CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231442.841604106CST"10.186.61.83,10.186.60.680x00000010
"Jun6,20231442.841612112CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231442.841616568CST"10.186.60.68,10.186.61.830x00000010
"Jun6,20231442.842524996CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231442.842550796CST"10.186.60.68,10.186.61.830x00000010
"Jun6,20231442.848566815CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231442.848826004CST"10.186.61.83,10.186.60.680x00000010
"Jun6,20231442.850258537CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231442.850881377CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231442.851278991CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231442.851395808CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231442.851667278CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231442.851926804CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231442.892409030CST"10.186.61.83,10.186.60.680x00000010

#前三個包分別為:0x02 [SYN]、0x12 [SYN, ACK]、0x10[ACK],即三次握手的過程
#后面的幾個包:0x18 [PSH, ACK]、0x10[ACK],是數(shù)據(jù)傳輸?shù)倪^程

2、執(zhí)行一個查詢
"Jun6,20231419.967273148CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231419.967553321CST"10.186.60.68,10.186.61.830x00000018
"Jun6,20231419.967835719CST"10.186.61.83,10.186.60.680x00000010

#當(dāng)TCP連接完成后,在數(shù)據(jù)傳輸過程中獲取的包,其標(biāo)志位為0x18[PSH,ACK]或0x10[ACK]

3、四次揮手
"Jun6,20231406.157240404CST"10.186.61.83,10.186.60.680x00000018
"Jun6,20231406.157833986CST"10.186.61.83,10.186.60.680x00000011
"Jun6,20231406.166359966CST"10.186.61.83,10.186.60.680x00000011
"Jun6,20231406.166378115CST"10.186.60.68,10.186.61.830x00000010
"Jun6,20231406.166971169CST"10.186.60.68,10.186.61.830x00000011
"Jun6,20231406.167317550CST"10.186.61.83,10.186.60.680x00000010

#看最后4個包,0x11[FIN,ACK]、0x10[ACK]、0x11[FIN,ACK]、0x10[ACK],這是標(biāo)準(zhǔn)的四次揮手過程

2. tshark 抓取 MySQL 中執(zhí)行的 SQL

--在服務(wù)器上執(zhí)行抓包
dmp2(master)~#tshark-f'tcpport3332'-Y"mysql.query"-dtcp.port==3332,mysql-Tfields-eframe.time-eip.src-eip.dst-emysql.query
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'eth0'

#-Y,指定顯示過濾器表達(dá)式,在單次分析中可以代替-R選項(xiàng),此處表示僅顯示mysql.query相關(guān)的包
#-d,用于指定該抓包會話的協(xié)議詳細(xì)解析器模塊,可以執(zhí)行tshark-dhelp來查看可用的協(xié)議(執(zhí)行雖然會報(bào)錯,但會顯示所有支持的協(xié)議),此處表示將3332端口上的TCP包以MySQL協(xié)議進(jìn)行解析
#-Tfields-emysql.query,即可獲取符合MySQL協(xié)議的SQL語句
#-eip.src-eip.dst的寫法,也可以用-eip.host來替換

--先停止從庫復(fù)制后再啟動
zlm@10.186.60.74[(none)]>stopslave;
QueryOK,0rowsaffected(0.06sec)

zlm@10.186.60.74[(none)]>startslave;
QueryOK,0rowsaffected(0.05sec)

--觀察屏幕輸出
"Jun6,20231638.831359581CST"10.186.60.7410.186.60.68SELECTUNIX_TIMESTAMP()
"Jun6,20231638.832278722CST"10.186.60.7410.186.60.68SELECT@@GLOBAL.SERVER_ID
"Jun6,20231638.832613595CST"10.186.60.7410.186.60.68SET@master_heartbeat_period=1000000000
"Jun6,20231638.832861743CST"10.186.60.7410.186.60.68SET@master_binlog_checksum=@@global.binlog_checksum
"Jun6,20231638.833078690CST"10.186.60.7410.186.60.68SELECT@master_binlog_checksum
"Jun6,20231638.833278049CST"10.186.60.7410.186.60.68SELECT@@GLOBAL.GTID_MODE
"Jun6,20231638.833489342CST"10.186.60.7410.186.60.68SELECT@@GLOBAL.SERVER_UUID
"Jun6,20231638.833769721CST"10.186.60.7410.186.60.68SET@slave_uuid='90161133-88b1-11ed-bbcc-02000aba3c4a'

#通過指定MySQL協(xié)議解析模塊,此處捕獲到了MySQL從實(shí)例在啟動復(fù)制時會執(zhí)行的SQL語句
#如已用-d 選項(xiàng)指定了協(xié)議、端口等信息時,可省略-f(抓包過濾器表達(dá)式),除非還有其他的過濾需求,但不建議省略-Y(顯示過濾器表達(dá)式),否則會輸出非常多的信息,以下兩種寫法是等效的:
tshark-f'tcpport3332'-Y"mysql.query"-dtcp.port==3332,mysql-Tfields-eframe.time-eip.host-emysql.query
tshark-Y"mysql.query"-dtcp.port==3332,mysql-Tfields-eframe.time-eip.host-emysql.query

--獲取類型為Query的SQL
dmp2(master)~#tshark-ilo-dtcp.port==3332,mysql-Y"mysql.command==3"-Tfields-eip.host-emysql.query-eframe.time-c10
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
127.0.0.1,127.0.0.1STARTTRANSACTION"Jun7,20231729.194080437CST"
127.0.0.1,127.0.0.1insertignoreintouniverse.u_delay(source,real_timestamp,logic_timestamp)values('ustats',now(),0)"Jun7,20231729.194306733CST"
127.0.0.1,127.0.0.1updateuniverse.u_delaysetreal_timestamp=now(),logic_timestamp=logic_timestamp+1wheresource='ustats'"Jun7,20231729.194647464CST"
127.0.0.1,127.0.0.1COMMIT"Jun7,20231729.194953692CST"
4packetscaptured

#mysql.command=3,表示執(zhí)行的SQL類型為Query,共支持30多種預(yù)設(shè)值
#對于熟悉DMP的小伙伴,一看便知這是由平臺納管的一個實(shí)例,當(dāng)前正在做時間戳的寫入(判斷主從延時的依據(jù))

--獲取與show相關(guān)的SQL
dmp2(master)~#tshark-ilo-dtcp.port==3332,mysql-Y'mysql.querycontains"show"'-Tfields-eip.host-emysql.query-eframe.time-c10
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
127.0.0.1,127.0.0.1showslavestatus"Jun7,20231744.672060318CST"
127.0.0.1,127.0.0.1showglobalstatus"Jun7,20231744.672808866CST"
127.0.0.1,127.0.0.1showglobalvariables"Jun7,20231744.672845236CST"
127.0.0.1,127.0.0.1showglobalvariableswhereVariable_name='innodb_flush_log_at_trx_commit'orVariable_name='sync_binlog'"Jun7,20231744.673036197CST"
4packetscaptured

dmp2(master)~#tshark-ilo-dtcp.port==3332,mysql-Y'mysql.querymatches"^show"'-Tfields-eip.host-emysql.query-eframe.time-c10
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
127.0.0.1,127.0.0.1showglobalstatus"Jun7,20231702.671895630CST"
127.0.0.1,127.0.0.1showslavestatus"Jun7,20231702.671944388CST"
127.0.0.1,127.0.0.1showglobalvariables"Jun7,20231702.671998965CST"
127.0.0.1,127.0.0.1showmasterstatus"Jun7,20231702.672673795CST"
4packetscaptured

#contains使用字符串進(jìn)行匹配,只要在數(shù)據(jù)包中存在指定的字符串,就會匹配成功,不論該字符串出現(xiàn)在查詢的任何位置
#matches 支持使用正則表達(dá)式進(jìn)行匹配,匹配符合指定規(guī)則的數(shù)據(jù)包,如:^show
#用contains/maches進(jìn)行匹配查找時,關(guān)鍵詞需用雙引號包圍,此時外層建議使用單引號,因?yàn)閙aches進(jìn)行正則匹配時,外層使用雙引號會報(bào)錯,contains則不限制
#以上匹配方式類似模糊查詢,但會區(qū)分大小寫,如果指定Show或SHOW為關(guān)鍵詞,可能獲取不到SQL

3. tshark 抓取 OB 中執(zhí)行 SQL

與之前的方法類似,只需調(diào)整 IP 地址和端口號即可。

--抓取5個mysql.query協(xié)議的包
[root@10-186-65-73~]#tshark-ilo-Y"mysql.query"-dtcp.port==2881,mysql-Tfields-eframe.time-eip.host-emysql.query-c5
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
"Jun7,20231512.886615893CST"127.0.0.1,127.0.0.1select/*+MONITOR_AGENTREAD_CONSISTENCY(WEAK)*/__all_tenant.tenant_id,tenant_name,mem_used,access_count,hit_countfromv$plan_cache_statjoin__all_tenantonv$plan_cache_stat.tenant_id=__all_tenant.tenant_id
"Jun7,20231512.889500546CST"127.0.0.1,127.0.0.1select/*+MONITOR_AGENTREAD_CONSISTENCY(WEAK)*/tenant_name,tenant_id,casewhenevent_id=10000then'INTERNAL'whenevent_id=13000then'SYNC_RPC'whenevent_id=14003then'ROW_LOCK_WAIT'when(event_id>=10001andevent_id<=?11006)?or?(event_id?>=11008andevent_id<=?11011)?then?'IO'?when?event?like?'latch:%'?then?'LATCH'?else?'OTHER'?END?event_group,?sum(total_waits)?as?total_waits,?sum(time_waited_micro?/?1000000)?as?time_waited?from?v$system_event?join?__all_tenant?on?v$system_event.con_id?=?__all_tenant.tenant_id?where?v$system_event.wait_class?<>'IDLE'and(con_id>1000orcon_id=1)groupbytenant_name,event_group
2packetscaptured

#執(zhí)行抓包命令的服務(wù)器是OBServer集群內(nèi)的一個節(jié)點(diǎn),2881是OB的對外服務(wù)的端口號
#-c,指定抓取5個包,實(shí)際上只抓到了2個符合過濾條件的包
#從獲取的SQL語句來看,猜測是由ocp_monagent監(jiān)控組件發(fā)起的信息收集相關(guān)的SQL

--抓包時過濾包含“__all_”視圖的SQL
[root@10-186-65-73~]#tshark-ilo-Y'mysql.querycontains"__all_"'-dtcp.port==2881,mysql-Tfields-eframe.time-eip.host-emysql.query-c5
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
"Jun7,20231838.895171334CST"127.0.0.1,127.0.0.1select/*+MONITOR_AGENTREAD_CONSISTENCY(WEAK)*/tenant_name,tenant_id,stat_id,valuefromv$sysstat,__all_tenantwherestat_idIN(10000,10001,10002,10003,10004,10005,10006,140002,140003,140005,140006,40030,60019,60020,60024,80040,80041,130000,130001,130002,130004,20000,20001,20002,30000,30001,30002,30005,30006,30007,30008,30009,30010,30011,30012,30013,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40018,40019,50000,50001,50002,50004,50005,50008,50009,50010,50011,50037,50038,60000,60001,60002,60003,60004,60005,60019,60020,60021,60022,60023,60024,80057,120000,120001,120009,120008)and(con_id>1000orcon_id=1)and__all_tenant.tenant_id=v$sysstat.con_idandclass'IDLE'groupbytenant_name
2packetscaptured

[root@10-186-65-73~]#tshark-ilo-Y'mysql.querycontains"__all_"'-dtcp.port==2881,mysql-Tfields-eframe.time-eip.host-emysql.query>/tmp/monit_ob.txt
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'Loopback'
124^C
Youhavemailin/var/spool/mail/root
[root@10-186-65-73~]#cat/tmp/monit_ob.txt|grep-iselect|wc-l

#可用此方法來獲取一些常用的“__all_”視圖相關(guān)的監(jiān)控SQL
#將捕獲的SQL重定向到文本文件,再用awk處理一下就能獲取完整的SQL

[root@10-186-65-73~]#awk-F""'{for(i=7;i<=NF;i++)printf("%s?",?$i);print?""}'?/tmp/monit_ob.txt|cat?-n|head?-5
?????1??select?/*+?MONITOR_AGENT?READ_CONSISTENCY(WEAK)?*/?zone,?name,?value,?time_to_usec(now())?as?current?from?__all_zone
?????2??select?/*+?MONITOR_AGENT?READ_CONSISTENCY(WEAK)?*/?__all_tenant.tenant_id,?tenant_name,?cache_name,?cache_size?from?__all_virtual_kvcache_info,?__all_tenant?where?__all_tenant.tenant_id?=?__all_virtual_kvcache_info.tenant_id?and?svr_ip?=?'10.186.65.73'?and?svr_port?=?2882
?????3??select?/*+?MONITOR_AGENT?READ_CONSISTENCY(WEAK)?*/?case?when?cnt?is?null?then?0?else?cnt?end?as?cnt,?tenant_name,?tenant_id?from?(select?__all_tenant.tenant_name,?__all_tenant.tenant_id,?cnt?from?__all_tenant?left?join?(select?count(1)?as?cnt,?tenant?as?tenant_name?from?__all_virtual_processlist?where?svr_ip?=?'10.186.65.73'?and?svr_port?=?2882?group?by?tenant)?t1?on?__all_tenant.tenant_name?=?t1.tenant_name)?t2
?????4??select?/*+?MONITOR_AGENT?READ_CONSISTENCY(WEAK)?*/?case?when?cnt?is?null?then?0?else?cnt?end?as?cnt,?tenant_name,?tenant_id?from?(select?__all_tenant.tenant_name,?__all_tenant.tenant_id,?cnt?from?__all_tenant?left?join?(select?count(`state`='ACTIVE'?OR?NULL)?as?cnt,?tenant?as?tenant_name?from?__all_virtual_processlist?where?svr_ip?=?'10.186.65.73'?and?svr_port?=?2882?group?by?tenant)?t1?on?__all_tenant.tenant_name?=?t1.tenant_name)?t2
?????5??select?/*+?MONITOR_AGENT?READ_CONSISTENCY(WEAK)?*/?__all_tenant.tenant_id,?tenant_name,?mem_used,?access_count,?hit_count?from?v$plan_cache_stat?join?__all_tenant?on?v$plan_cache_stat.tenant_id?=?__all_tenant.tenant_id?

4. tshark 抓包后用 Wireshark 解析

tshark 也可以像 tcpdump 一樣,先在服務(wù)器上抓包,再拿到 Wireshark 的圖形窗口中做進(jìn)一步分析。

--抓取50個包并生成pcap文件
dmp2(master)~#tshark-dtcp.port==3332,mysql-f'tcpport3332andhost10.186.61.83'-c50-w/tmp/61_83.pcap
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingon'eth0'

#注意,-w 指定的文件無需提前創(chuàng)建,但抓包會話必須對該目錄有寫入權(quán)限,否則會報(bào)權(quán)限不足的錯誤。

以下截圖為三次握手和四次揮手的過程。

7872b7c8-0c16-11ee-962d-dac502259ad0.png ? 7898cb16-0c16-11ee-962d-dac502259ad0.png

同樣地,也可以在 Wireshark 中將 mysql.query 字段展示出來:Wireshark -> 編輯 -> 首選項(xiàng) -> 外觀 -> 列

78c6d7a4-0c16-11ee-962d-dac502259ad0.png

以下顯示過濾器表達(dá)式中的內(nèi)容表示:將包中 TCP 端口為 3332,源端 IP 地址為 10.186.60.74,協(xié)議類型為 MySQL 的內(nèi)容過濾并展示,效果如圖:

78f30356-0c16-11ee-962d-dac502259ad0.png

6結(jié)語

tshark 作為 Wireshark 的命令行工具,與我們比較熟悉的 tcpdump 相比,有其不少優(yōu)點(diǎn):

1. 更多的過濾條件

具有比 tcpdump 更多的過濾條件,可以更加精確地過濾所需的數(shù)據(jù)包,tshark 支持 Wireshark 過濾器語法的全部特性,并提供了更高級的功能。

2. 更加靈活的輸出格式

可以以不同的文件格式和標(biāo)準(zhǔn)輸出打印輸出捕獲數(shù)據(jù),而 tcpdump 的輸出格式非常有限。

3. 更好的可讀性和易用性

輸出會更加易于閱讀,因?yàn)樗鼤Ψ纸M進(jìn)行解析并顯示其中包含的各種數(shù)據(jù),比如協(xié)議、參數(shù)和錯誤信息等。這些信息對數(shù)據(jù)包分析非常有幫助。

4. 更加輕量級

相比于 tcpdump,占用的系統(tǒng)資源較少,并且不需要將所有數(shù)據(jù)存儲在內(nèi)存中,從而能夠處理更大的數(shù)據(jù)流。

5. 更多的網(wǎng)絡(luò)協(xié)議

支持更多的網(wǎng)絡(luò)協(xié)議,包括 IPv6、IS-IS、IPX 等,而 tcpdump 支持的協(xié)議種類相對較少。

綜上,在一些較為復(fù)雜的數(shù)據(jù)包分析和網(wǎng)絡(luò)問題診斷場景中,推薦使用 tshark,而對于只需快速捕捉網(wǎng)絡(luò)流量的簡單應(yīng)用場景,tcpdump 可能會更適合一些。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3794

    瀏覽量

    64362
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3309

    瀏覽量

    42471
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    804

    瀏覽量

    26531
  • DBA
    DBA
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    7882
  • Wireshark
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    6513

原文標(biāo)題:DBA抓包神器tshark測評

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    經(jīng)典藍(lán)牙解析說明

    在無線通信協(xié)議的開發(fā)過程中,器是工程師們不可或缺的工具。掌握器的使用,就如同擁有了能夠洞察無線電波的“火眼金睛”。這不僅使我們能夠驗(yàn)證發(fā)出的數(shù)據(jù)
    的頭像 發(fā)表于 07-24 09:04 ?1938次閱讀
    經(jīng)典藍(lán)牙<b class='flag-5'>抓</b><b class='flag-5'>包</b>解析說明

    CC2640 使用BTool怎么用?

    CC2640使用BTool怎么用?我一直用simpleBLEPeripheral改寫的程序,燒寫simpleBLEPeripheral,使用BTool,出現(xiàn)[/url]。使用p
    發(fā)表于 03-16 11:27

    WIZnet芯片通訊時怎么?

    `Q:WIZnet芯片進(jìn)行公網(wǎng)通訊或者芯片間通訊的話怎么?A:芯片和PC通訊的話可以直接通過Wireshark,如果芯片和公網(wǎng)直接通訊或者通訊是發(fā)生在芯片之間,則沒有辦法直接
    發(fā)表于 03-13 11:32

    加密后分析的問題?

    請問一下,我的zigbee設(shè)備全部都開啟了加密, 使用軟件的時候,數(shù)據(jù)都是加密的,我應(yīng)該怎么解密分析這些數(shù)據(jù)呢,謝謝了
    發(fā)表于 06-01 14:22

    請問BLE-Dongle是否支持協(xié)議分析?請問怎么進(jìn)行協(xié)議分析?

    如題,請問貴司的BLE-Dongle是否支持協(xié)議分析?請問怎么進(jìn)行協(xié)議分析?
    發(fā)表于 09-07 07:12

    http神器(http analyzer )下載

    HTTP Analyzer Full V7是一款完全漢化免費(fèi)的綠色版HTTP協(xié)議捕捉分析工具,這款http analyzer 綠色版可以進(jìn)行網(wǎng)絡(luò)等功能,馬上下載這款http analyzer
    發(fā)表于 12-14 08:35 ?0次下載

    Wireshark數(shù)據(jù)網(wǎng)絡(luò)協(xié)議的分析

    Wireshark 是目前最受歡迎的包工具。它可以運(yùn)行在 Windows、Linux 及 MAC OS X 操作系統(tǒng)中,并提供了友好的圖形界面。同時,Wireshark 提供功能強(qiáng)大的數(shù)據(jù)功能
    發(fā)表于 10-12 08:00 ?1次下載
    Wireshark數(shù)據(jù)<b class='flag-5'>抓</b><b class='flag-5'>包</b>網(wǎng)絡(luò)協(xié)議的分析

    USB數(shù)據(jù)軟件程序下載

    USB數(shù)據(jù)軟件程序下載
    發(fā)表于 09-09 16:01 ?9次下載

    MCU_Wireshark USB 過濾(特定端口地址)

    啟動WiresharkUSB的過程如下,這里點(diǎn)擊“開始”就可以進(jìn)入界面了。不過,Wireshark啟動USB
    發(fā)表于 12-08 16:36 ?14次下載
    MCU_Wireshark USB <b class='flag-5'>抓</b><b class='flag-5'>包</b>過濾(<b class='flag-5'>抓</b>特定端口地址)

    為什么不到baidu的數(shù)據(jù)

    從上面的結(jié)果可以知道請求baidu.com時會去訪問39.156.66.10。于是用下面的tcpdump命令進(jìn)行,大概的意思是eth0網(wǎng)卡且ip為39.156.66.10的網(wǎng)絡(luò)
    的頭像 發(fā)表于 01-05 10:43 ?1039次閱讀

    滲透測試過程中所使用的方法

    本篇只是簡單分享平常筆者滲透測試過程中所使用的方法,后面會繼續(xù)更新其他以及安卓端的方法,比較適合沒理解過這方面的新手作參考。
    的頭像 發(fā)表于 02-01 15:41 ?1579次閱讀

    Linux之tshark包工具安裝和使用

    tshark是一個網(wǎng)絡(luò)協(xié)議分析器。它允許您從實(shí)時網(wǎng)絡(luò)捕獲數(shù)據(jù)數(shù)據(jù),或者從以前保存的捕獲文件讀取數(shù)據(jù),或者將這些數(shù)據(jù)的解碼形式打印到標(biāo)準(zhǔn)輸出,或者將數(shù)據(jù)
    的頭像 發(fā)表于 05-22 14:33 ?2241次閱讀

    如何抓取app數(shù)據(jù) 網(wǎng)絡(luò)原理及實(shí)現(xiàn)

    要實(shí)現(xiàn)對App的網(wǎng)絡(luò)數(shù)據(jù),需要監(jiān)控App與服務(wù)器交互之間的網(wǎng)絡(luò)節(jié)點(diǎn),監(jiān)控其中任意一個網(wǎng)絡(luò)節(jié)點(diǎn)(網(wǎng)卡),獲取所有經(jīng)過網(wǎng)卡中的數(shù)據(jù),對這些數(shù)據(jù)按照網(wǎng)絡(luò)協(xié)議進(jìn)行解析,這就是的基本原理
    發(fā)表于 08-11 09:30 ?3213次閱讀
    如何抓取app數(shù)據(jù)<b class='flag-5'>包</b> 網(wǎng)絡(luò)<b class='flag-5'>抓</b><b class='flag-5'>包</b>原理及實(shí)現(xiàn)

    如何利用eNSP進(jìn)行實(shí)驗(yàn)?

    使用Wireshark工具進(jìn)行ping,并分析報(bào)文
    的頭像 發(fā)表于 09-12 09:32 ?4249次閱讀
    如何利用eNSP進(jìn)行<b class='flag-5'>抓</b><b class='flag-5'>包</b>實(shí)驗(yàn)?

    CentOS中使用tcpdump

    CentOS中使用tcpdump
    的頭像 發(fā)表于 10-28 14:48 ?233次閱讀
    主站蜘蛛池模板: 99无人区码一码二码三| yin荡体育课羞耻play双性 | 99久久国内精品成人免费| 国产精品久久久久秋霞影视| 美国色吧影院| 亚洲精品人成电影网| 成人性视频全过程| 榴莲黄版无限刷| 亚洲免费一区| 国产精品亚洲专一区二区三区 | 国产视频精品免费| 欧美高清xxx| 自拍视频亚洲综合在线精品| 国产真实女人一级毛片| 秋霞午夜一级理论片久久| 18禁止看的免费污网站| 黄子佼81岁父亲现状曝光| 色情内射少妇兽交| music radio在线收听| 毛片无码免费无码播放| 一本久道久久综合婷婷五月| 国产亚洲999精品AA片在线爽| 少妇无码太爽了视频在线播放| chinese黑人第一次| 免费人成网站永久| 在线伦理电影网| 久久99r66热这里有精品| 亚洲国产日韩欧美视频二区| 国产精品福利片| 受被攻做到腿发颤高h文| 成人伦理影院| 热久久伊大人香蕉网老师| 97人人看碰人免费公开视频 | 亚洲AV国产精品无码精| 国产高清在线露脸一区| 色戒西瓜视频| 成人免费网址在线| 日本人xxxⅹ18hd19hd| 成人麻豆日韩在无码视频| 秋霞午夜理论理论福利无码| ppypp午夜限制不卡影院私人|