溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解網(wǎng)絡(luò)數(shù)據(jù)包分析工具tcpdump

發(fā)布時(shí)間:2021-11-03 15:15:52 來源:億速云 閱讀:149 作者:柒染 欄目:MySQL數(shù)據(jù)庫

如何理解網(wǎng)絡(luò)數(shù)據(jù)包分析工具tcpdump,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

前言

       tcpdump是一個(gè)用于截取網(wǎng)絡(luò)分組,并輸出分組內(nèi)容的工具。憑借強(qiáng)大的功能和靈活的截取策略,使其成為類UNIX系統(tǒng)下用于網(wǎng)絡(luò)分析和問題排查的首選工具;tcpdump 可以支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息

tcpdump語法

Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
		[ -i interface ] [ -j tstamptype ] [ -M secret ]
		[ -Q|-P in|out|inout ]
		[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
		[ -W filecount ] [ -y datalinktype ] [ -z command ]
		[ -Z user ] [ expression ]

tcpdump語義

抓包選項(xiàng)

     -c:指定要抓取的包數(shù)量。
     -i interface:指定tcpdump需要監(jiān)聽的接口。默認(rèn)會(huì)抓取第一個(gè)網(wǎng)絡(luò)接口
     -n:對(duì)地址以數(shù)字方式顯式,否則顯式為主機(jī)名,也就是說-n選項(xiàng)不做主機(jī)名解析。
     -nn:除了-n的作用外,還把端口顯示為數(shù)值,否則顯示端口服務(wù)名。
     -P:指定要抓取的包是流入還是流出的包。可以給定的值為"in"、"out"和"inout",默認(rèn)為"inout"。
     -s len:設(shè)置tcpdump的數(shù)據(jù)包抓取長(zhǎng)度為len,如果不設(shè)置默認(rèn)將會(huì)是65535字節(jié)。對(duì)于要抓取的數(shù)據(jù)包較大時(shí),長(zhǎng)度設(shè)置不夠可能
             會(huì)產(chǎn)生包截?cái)?,若出現(xiàn)包截?cái)啵狠敵鲂兄袝?huì)出現(xiàn)"[|proto]"的標(biāo)志(proto實(shí)際會(huì)顯示為協(xié)議名)。但是抓取len越長(zhǎng),包
             的處理時(shí)間越長(zhǎng),并且會(huì)減少tcpdump可緩存的數(shù)據(jù)包的數(shù)量,:從而會(huì)導(dǎo)致數(shù)據(jù)包的丟失,所以在能抓取我們想要的包的前提下,抓取長(zhǎng)度越小越好。

輸出選項(xiàng)

     -e:輸出的每行中都將包括數(shù)據(jù)鏈路層頭部信息,例如源MAC和目標(biāo)MAC。
     -q:快速打印輸出。即打印很少的協(xié)議相關(guān)信息,從而輸出行都比較簡(jiǎn)短。
     -X:輸出包的頭部數(shù)據(jù),會(huì)以16進(jìn)制和ASCII兩種方式同時(shí)輸出。
     -XX:輸出包的頭部數(shù)據(jù),會(huì)以16進(jìn)制和ASCII兩種方式同時(shí)輸出,更詳細(xì)。
     -v:當(dāng)分析和打印的時(shí)候,產(chǎn)生詳細(xì)的輸出。
     -vv:產(chǎn)生比-v更詳細(xì)的輸出。
     -vvv:產(chǎn)生比-vv更詳細(xì)的輸出。

其它功能性選項(xiàng)

     -D:列出可用于抓包的接口。將會(huì)列出接口的數(shù)值編號(hào)和接口名,它們都可以用于"-i"后。
     -F:從文件中讀取抓包的表達(dá)式。若使用該選項(xiàng),則命令行中給定的其他表達(dá)式都將失效。
     -w:將抓包數(shù)據(jù)輸出到文件中而不是標(biāo)準(zhǔn)輸出??梢酝瑫r(shí)配合"-G
     time"選項(xiàng)使得輸出文件每time秒就自動(dòng)切換到另一個(gè)文件??赏ㄟ^"-r"選項(xiàng)載入這些文件以進(jìn)行分析和打印。
     -r:從給定的數(shù)據(jù)包文件中讀取數(shù)據(jù)。使用"-"表示從標(biāo)準(zhǔn)輸入中讀取。

expression表達(dá)式

   ==一個(gè)基本的表達(dá)式單元格式為"proto dir type ID"==
   對(duì)于表達(dá)式語法,參考 pcap-filter 【pcap-filter - packet filter syntax】
   類型 type
   host, net, port, portrange
   例如:host 192.168.201.128 , net 128.3, port 20, portrange 6000-6008'
   目標(biāo) dir
   src, dst, src or dst, src and dst
   協(xié)議 proto
   tcp, udp , icmp,若未給定協(xié)議類型,則匹配所有可能的類型
   ==表達(dá)式單元之間可以使用操作符" and / && / or / || / not / ! "進(jìn)行連接,從而組成復(fù)雜的條件表達(dá)式==。
   如"host foo and not port ftp and not port ftp-data",這表示篩選的數(shù)據(jù)包要滿足"主機(jī)為foo且端口不是
   ftp(端口21)和ftp-data(端口20)的包",常用端口和名字的對(duì)應(yīng)關(guān)系可在linux系統(tǒng)中的/etc/service文件中找到。
   另外,同樣的修飾符可省略,如"tcp dst port ftp or ftp-data or domain"與"tcp dst port ftp or tcp 
   dst port ftp-data or tcp dst port domain"意義相同,都表示包的協(xié)議為tcp且目的端口為ftp或ftp-data
   或domain(端口53)。
   使用括號(hào)"()"可以改變表達(dá)式的優(yōu)先級(jí),但需要注意的是括號(hào)會(huì)被shell解釋,所以應(yīng)該使用反斜線""轉(zhuǎn)義為"()",
   在需要的時(shí)候,還需要包圍在引號(hào)中。

tcpdump示例

監(jiān)控指定網(wǎng)絡(luò)接口的數(shù)據(jù)包

tcpdump -i eth0

監(jiān)控指定主機(jī)的數(shù)據(jù)包

tcpdump -i eth0 host 10.0.0.13

監(jiān)控2個(gè)主機(jī)的數(shù)據(jù)包

tcpdump -i eth0 host 10.0.0.11 and host 10.0.0.13

監(jiān)控1個(gè)主機(jī)與非1個(gè)主機(jī)之間的數(shù)據(jù)包

tcpdump -i eth0 host 10.0.0.11 and not host 10.0.0.13

監(jiān)控某主個(gè)主機(jī)發(fā)送的數(shù)據(jù)包

tcpdump -i eth0 src host 10.0.0.11

監(jiān)控發(fā)送到某個(gè)主機(jī)的數(shù)據(jù)包

tcpdump -i eth0 dst host 10.0.0.11

監(jiān)控指定主機(jī)和端口的數(shù)據(jù)包

tcpdump -i eth0 host 10.0.0.11 and port 3306

監(jiān)控指定網(wǎng)段的數(shù)據(jù)包,并且只抓取10個(gè)數(shù)據(jù)包

tcpdump -i eth0 -c 10 net 10.0

監(jiān)控通過網(wǎng)關(guān)snup的ftp協(xié)議類型的數(shù)據(jù)包

tcudump 'gateway snup and (port ftp or ftp-data)'

監(jiān)控ping協(xié)議數(shù)據(jù)包

tcpdump -c 5 -nn -i eth0

監(jiān)控指定主機(jī)的ping協(xié)議數(shù)據(jù)包

tcpdump -c 5 -nn -i eth0 icmp and src 10.0.0.11

監(jiān)控到本機(jī)3306端口的數(shù)據(jù)包

tcpdump -c 10 -nn -i eth0 tcp dst port 3306

監(jiān)控完整詳細(xì)的數(shù)據(jù)包

tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 3306

tcpdump與mysql

tcpdump命令
tcpdump host 10.92.143.15 -tttt -S -nn
主機(jī)上登陸mysql
mysql -u root -h 10.92.143.15 -p
執(zhí)行exit退出mysql客戶端

# 三次握手,其中S代表Syn,.代表Ack,S.代表Syn, Ack

2018-08-19 22:52:42.768100 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [S], seq 864854527, win 14600, options [mss 1460,sackOK,TS val 2246810963 ecr 0,nop,wscale 8], length 0
2018-08-19 22:52:42.810055 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [S.], seq 4288771247, ack 864854528, win 14480, options [mss 1460,sackOK,TS val 2062159250 ecr 2246810963,nop,wscale 8], length 0
2018-08-19 22:52:42.810065 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771248, win 58, options [nop,nop,TS val 2246811005 ecr 2062159250], length 0

# 登錄校驗(yàn),傳輸用戶名和密碼驗(yàn)證階段,其中P代表Push,傳輸數(shù)據(jù)需要。這里包含登錄驗(yàn)證和版本信息等元數(shù)據(jù)的交換

2018-08-19 22:52:42.852102 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771248:4288771308, ack 864854528, win 57, options [nop,nop,TS val 2062159292 ecr 2246811005], length 60
2018-08-19 22:52:42.852118 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771308, win 58, options [nop,nop,TS val 2246811047 ecr 2062159292], length 0
2018-08-19 22:52:42.853251 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854528:864854590, ack 4288771308, win 58, options [nop,nop,TS val 2246811048 ecr 2062159292], length 62
2018-08-19 22:52:42.895198 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854590, win 57, options [nop,nop,TS val 2062159335 ecr 2246811048], length 0
2018-08-19 22:52:42.895256 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771308:4288771319, ack 864854590, win 57, options [nop,nop,TS val 2062159335 ecr 2246811048], length 11
2018-08-19 22:52:42.895264 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771319, win 58, options [nop,nop,TS val 2246811090 ecr 2062159335], length 0
2018-08-19 22:52:42.895312 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854590:864854627, ack 4288771319, win 58, options [nop,nop,TS val 2246811090 ecr 2062159335], length 37
2018-08-19 22:52:42.937268 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854627, win 57, options [nop,nop,TS val 2062159377 ecr 2246811090], length 0
2018-08-19 22:52:42.937405 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771319:4288771409, ack 864854627, win 57, options [nop,nop,TS val 2062159377 ecr 2246811090], length 90
2018-08-19 22:52:42.937414 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771409, win 58, options [nop,nop,TS val 2246811132 ecr 2062159377], length 0

# 發(fā)送exit;正好5個(gè)字符

2018-08-19 22:52:44.366633 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854627:864854632, ack 4288771409, win 58, options [nop,nop,TS val 2246812561 ecr 2062159377], length 5
# 四次揮手,其中F代表FIN,完成數(shù)據(jù)發(fā)送
2018-08-19 22:52:44.366649 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [F.], seq 864854632, ack 4288771409, win 58, options [nop,nop,TS val 2246812561 ecr 2062159377], length 0

## 這個(gè)是exit的答復(fù)

2018-08-19 22:52:44.408575 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854632, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 0
2018-08-19 22:52:44.408618 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854633, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 0
2018-08-19 22:52:44.408652 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [F.], seq 4288771409, ack 864854633, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 0
2018-08-19 22:52:44.408657 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771410, win 58, options [nop,nop,TS val 2246812603 ecr 2062160848], length 0

上述數(shù)據(jù)包交互的圖例

如何理解網(wǎng)絡(luò)數(shù)據(jù)包分析工具tcpdump

  • 通過tcpdump可以精準(zhǔn)分析mysql客戶端與mysql服務(wù)器端的通訊交互詳細(xì)過程

  • tcp建立連接時(shí)為3個(gè)握手

  • 斷開tcp連接時(shí)為4個(gè)握手

  • 這個(gè)握手是指mysql客戶端與mysql服務(wù)器端之間的單向請(qǐng)求或回復(fù)

  • mysql客戶端登陸mysql服務(wù)器端分為3個(gè)階段:tcp 3次握手建立tcp連接,基于tcp連接的數(shù)據(jù)傳輸,斷開tcp連接的4次握手

  • 通過tcpdump可以結(jié)合netstat的state去深入分析某些mysql客戶端無法連接mysql服務(wù)器端的復(fù)雜問題

關(guān)于如何理解網(wǎng)絡(luò)數(shù)據(jù)包分析工具tcpdump問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(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)容。

AI