這篇文章主要介紹“怎么對MySQL連接請求的tcpdump內(nèi)容進(jìn)行分析”,在日常操作中,相信很多人在怎么對Mysql連接請求的tcpdump內(nèi)容進(jìn)行分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么對Mysql連接請求的tcpdump內(nèi)容進(jìn)行分析”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比嘉黎網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式嘉黎網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋嘉黎地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
tcpdump是通過攔截發(fā)送和收到的網(wǎng)絡(luò)連接中的TCP/IP和其他數(shù)據(jù)包,通常在我們WEB開發(fā)中,我們提供http服務(wù)或者調(diào)用http服務(wù)的過程中經(jīng)常會遇到read time out/connect reset等網(wǎng)絡(luò)異常信息,通過tcpdump工具幫助我們分析三次握手或者四次揮手的數(shù)據(jù)包情況,就能很容易的幫助我們分析出網(wǎng)絡(luò)在哪一個步驟出的問題。
接下來我們通過分析Mysql的連接請求,來了解網(wǎng)絡(luò)的請求過程和協(xié)議的具體內(nèi)容。
0x0000: 4500 0039 3881 4000 4006 7fcf c0a8 00d7
0x0010: c0a8 0047 a034 0cea 860b e11e c2fc 7f64
0x0020: 8018 296a 2b0e 0000 0101 080a 2de4 786b
0x0030: 3a4f 5980 0100 0000 0e
這樣一份報文通常有3部分組成
逐行分析如下
45 - 4 為Version 5 為Header Length,那么這個協(xié)議頭的長度就是5字節(jié)
我們讀出接下來的5字節(jié) 00 0039 3881
00 Type Of Service標(biāo)識優(yōu)先級 延遲要求 吞吐量信息等
0039 Total Length 換算十進(jìn)制結(jié)果是 57 與我們獲取到的結(jié)果的字節(jié)數(shù)量一致
3881 IP報文頭的Identification
4000 - 為IP Flags和Fragment Offset
000 IP Flags
0 0100 0000 0000 Fragment :相對0原始報文頭的偏移量
4006 - 40 為TTL 一個協(xié)議訪問的生存周期 06 代表TCP協(xié)議
7fcf - Header Checksum 首部查錯
c0a8 00d7 - 源主機(jī)IP地址段 c0(192) a8(168) 00(0) d7 (215)
c0a8 0047 - 代表目標(biāo)主機(jī)的IP地址 (到這里IP協(xié)議部分就結(jié)束了,恰好是20字節(jié),接下來就要進(jìn)入TCP部分解析了)
a034 - 源端口號 轉(zhuǎn)換十進(jìn)制 41012
0cea - 目標(biāo)端口 轉(zhuǎn)換十進(jìn)制 3306
860b e11e - 序列號 2248925470
c2fc 7f64 - 確認(rèn)號 3271327588
80 - 8表示偏移 Offset 0 為保留位
18 - tcp的傳說狀態(tài) 1 Ack 8表示PUSH 這大概就是第一行 [P.]的由來把
296a - 滑動窗口的大小10602
2b0e - TCP部分的Checksum
0000 - TCP部分的緊急指針
0101 - NOP填錯沒有實(shí)際意義
080a - 代表開啟timestamp
2de4 786b - 對應(yīng)的具體時間戳的值769947755
3a4f 5980 - 還是時間戳的一部分 ecr值
0100 00 - 表示具體內(nèi)容長度1字節(jié)
00 - 表示seqid 遞增
0e - 通過查詢mysql語義,代表 COM_PING 測試聯(lián)通性
以下列舉了所有在客戶端請求部分16進(jìn)制數(shù)代表的mysql語義,通過不同的語義需要進(jìn)行不同的轉(zhuǎn)換才能獲得想要的內(nèi)容,這里就不列舉更多例子了
0x00 COM_SLEEP (內(nèi)部線程狀態(tài))
0x01 COM_QUIT 關(guān)閉連接
0x02 COM_INIT_DB 切換數(shù)據(jù)庫
0x03 COM_QUERY SQL查詢請求
0x04 COM_FIELD_LIST 獲取數(shù)據(jù)表字段信息
0x05 COM_CREATE_DB 創(chuàng)建數(shù)據(jù)庫
0x06 COM_DROP_DB 刪除數(shù)據(jù)庫
0x07 COM_REFRESH 清除緩存
0x08 COM_SHUTDOWN 停止服務(wù)器
0x09 COM_STATISTICS 獲取服務(wù)器統(tǒng)計信息
0x0A COM_PROCESS_INFO 獲取當(dāng)前連接的列表
0x0B COM_CONNECT (內(nèi)部線程狀態(tài))
0x0C COM_PROCESS_KILL 中斷某個連接
0x0D COM_DEBUG 保存服務(wù)器調(diào)試信息
0x0E COM_PING 測試連通性
0x0F COM_TIME (內(nèi)部線程狀態(tài))
0x10 COM_DELAYED_INSERT (內(nèi)部線程狀態(tài))
0x11 COM_CHANGE_USER 重新登陸(不斷連接)
0x12 COM_BINLOG_DUMP 獲取二進(jìn)制日志信息
0x13 COM_TABLE_DUMP 獲取數(shù)據(jù)表結(jié)構(gòu)信息
0x14 COM_CONNECT_OUT (內(nèi)部線程狀態(tài))
0x15 COM_REGISTER_SLAVE 從服務(wù)器向主服務(wù)器進(jìn)行注冊
0x16 COM_STMT_PREPARE 預(yù)處理SQL語句
0x17 COM_STMT_EXECUTE 執(zhí)行預(yù)處理語句
0x18 COM_STMT_SEND_LONG_DATA 發(fā)送BLOB類型的數(shù)據(jù)
0x19 COM_STMT_CLOSE 銷毀預(yù)處理語句
0x1A COM_STMT_RESET 清除預(yù)處理語句參數(shù)緩存
0x1B COM_SET_OPTION 設(shè)置語句選項
0x1C COM_STMT_FETCH 獲取預(yù)處理語句的執(zhí)行結(jié)果
在mysql請求過程中還有產(chǎn)生其他類型協(xié)議包數(shù)據(jù),故需要我們對mysql請求過程有基本的認(rèn)識。
1.建立tcp連接三次握手
2.與Mysql服務(wù)器建立連接
Server --> Client: Handshake(握手)
1字節(jié):協(xié)議版本號
NullTerminatedString:數(shù)據(jù)庫版本信息
4字節(jié):連接MySQL Server啟動的線程ID
8字節(jié):挑戰(zhàn)隨機(jī)數(shù),用于數(shù)據(jù)庫認(rèn)證
1字節(jié):填充值(0x00)
2字節(jié):用于與客戶端協(xié)商通訊方式
1字節(jié):數(shù)據(jù)庫的編碼
2字節(jié):服務(wù)器狀態(tài)
13字節(jié):預(yù)留字節(jié)
12字節(jié):挑戰(zhàn)隨機(jī)數(shù),用于數(shù)據(jù)庫認(rèn)證
1字節(jié):填充值(0x00)
Client --> Server: Authentication (認(rèn)證)
4字節(jié):用于與客戶端協(xié)商通訊方式
4字節(jié):客戶端發(fā)送請求報文時所支持的最大消息長度值
1字節(jié):標(biāo)識通訊過程中使用的字符編碼
23字節(jié):保留字節(jié)
NullTerminatedString:用戶名
LengthEncodedString:加密后的密碼
NullTerminatedString:數(shù)據(jù)庫名稱(可選)
Server --> Client: 返回認(rèn)證結(jié)果包
3.認(rèn)證通過以后,服務(wù)器端接收客戶端命令包,返回對應(yīng)的響應(yīng)包
到此,關(guān)于“怎么對Mysql連接請求的tcpdump內(nèi)容進(jìn)行分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!