tshark 和 tcpdump 的區別是什麼, 選擇哪個更好,各自適用範圍是什麼?

時間 2021-06-02 19:41:25

1樓:

我理解是快與詳細的區別。簡單來說,簡單排障以及要在指令碼中呼叫(比如說錄製一段資料)用tcpdump較好,要深入的協議分析排障用tshark

2樓:地球的外星人君

平時需要對資料報進行分析和統計,儘管使用python scapy庫來開發很方便,但若是熟悉tshark(wireshark的命令列),tcpdump 等工具,含editcap,mergecap 等,寫個簡單的shell分析指令碼,那會更加方便!tcpdump

man tcpdump

tshark

tshark 是一次性將整個資料報讀入記憶體的,分析好後再統一輸出,所以針對超大檔案的分析,需要注意!但是和wireshark相比,tshark能分析的檔案已經很大了,具體和系統配置有關!

同tshark一起的還有其他工具,是一套的,如 editcap, mergecap, capinfos

man tshark, man wireshark-filter, man editcap, man mergecap

乙個很棒的網頁,自己一直收藏著

This is a place for scripts and tools related to Wireshark / TShark that users may like to share, and for links to related NetworkTroubleshooting tools.

過濾出特定時間段的資料報

# 過濾出 src.pcap 中 2017-06-17 10:40:

00 到 2017-06-17 10:50:00 之間的資料報,其中 -F 引數表示檔案格式,即 the file format of the output capture file!

留意 pcapng 格式的資料報

editcap -A "2017-06-17 10:40:00" -B "2017-06-17 10:

50:00" src.pcap -F pcap dst.

pcap

統計重傳資料報的個數

# -n 不進行網域名稱解析, 其他引數的意思 man tshark

tshark -n -r src.pcap -Y "tcp.analysis.retransmission" -T fields -e tcp.stream | wc -l

echo -e "The number of retransmission packets"

# 通過 -z 引數

tshark -z io,stat,0,"tcp.analysis.retransmission" -n -q -r src.pcap

檢視抓包檔案的資訊

# -c 顯示檔案中資料報的個數

capinfos -c -M src.pcap

content=$(capinfos -c -M src.pcap)

total=$(echo $content | grep packet | cut -d : -f 3) # 獲取檔案中資料報的個數

以5秒為單位,統計不同方向上的資料報個數

tshark -z io,stat,5,"ip.addr==180.153.

15.118","ip.src==180.

153.15.118","ip.

dst==180.153.15.

118" -n -q -r 1030_1038_8300.pcap > five_second.csv

以5秒為單位,不同方向上的重傳資料報的個數, 含位元組數 (注意:,後不能有空格)

tshark -z io,stat,5,"ip.addr==180.153.15.118 && tcp.analysis.retransmission",\

"ip.src==180.153.15.118 && tcp.analysis.retransmission",\

"ip.dst==180.153.15.118 && tcp.analysis.retransmission" \

-n -q -r src.pcap > dst.csv

以5秒為單位,統計不同方向上的含SYN, FIN, RST等標記的資料報個數 (注意:,後不能有空格)

tshark -z io,stat,5,\

"FRAMES()ip.src==$ && tcp.flags.syn==1 && !(tcp.flags.ack==1)",\

"FRAMES()ip.dst==$ && tcp.flags.syn==1 && !(tcp.flags.ack==1)",\

"FRAMES()ip.src==$ && tcp.flags.fin==1",\

"FRAMES()ip.dst==$ && tcp.flags.fin==1",\

"FRAMES()ip.src==$ && tcp.flags.reset==1",\

"FRAMES()ip.dst==$ && tcp.flags.reset==1",\

"FRAMES()ip.src==$ && tcp.flags.

syn==1 && !(tcp.flags.

ack==1) && (!tcp.analysis.

retransmission)",\

"FRAMES()ip.dst==$ && tcp.flags.

syn==1 && !(tcp.flags.

ack==1) && (!tcp.analysis.

retransmission)",\

"FRAMES()ip.src==$ && tcp.flags.fin==1 && (!tcp.analysis.retransmission)",\

"FRAMES()ip.dst==$ && tcp.flags.fin==1 && (!tcp.analysis.retransmission)",\

"FRAMES()ip.src==$ && tcp.flags.reset==1 && (!tcp.analysis.retransmission)",\

"FRAMES()ip.dst==$ && tcp.flags.reset==1 && (!tcp.analysis.retransmission)" \

-n -q -r src.pcap > dst.csv

過濾速度最快,而且是實時輸出!

最簡單的--過濾出 src.pcap 中埠號為 22 的資料報

tcpdump -Z root -r src.pcap "tcp port 22" -w dst.pcap

過濾出埠為22, 且含有 FIN 標記的資料報

tcpdump -Z root -r src.pcap "tcp port 22 and (tcp[tcpflags] & tcp-fin != 0)" -w dst.pcap

根據應用層資料進行過濾,如HTTP GET的請求路徑, 注意tcp[xx:offset]中的偏移最多為4

## 示例: GET /bidimg/hello

# tcp[24:4]==0x2f626964 匹配 /bid; tcp[28:4]==696d67ef 匹配 img/ 字段; 至於GET欄位的匹配,可以自己去嘗試!

tcpdump -Z root -r src.pcap "((tcp[24:4]==0x2f626964 and tcp[28:

4]==696d67ef) and dst port 80)" -w dst.pcap

【超全整理】《Linux雲計算從入門到精通》linux學習入門教程系列實戰筆記全放送

為什麼使用tcpdump觀察三次握手的過程,最後一次握手後,ack變為1而不是y 1?

車小胖 網路協議解析軟體,有乙個宗旨,就是將枯燥乏味的0 1二進位製流解析成使用者友好的顯示,讓協議分析盡量簡單 直白。TCPDUMP第三個ACK顯示的偏移值 Offeset 即相對於初始序列號 原點 的偏移值,但需要明確的是,TCPDUMP捕獲的原始報文裡是絕對值 應該是長長的一串數字 只是顯示成...

Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什麼關係?

FRANK MapReduce是乙個計算模型,它的思想是從函式式程式設計裡借鑑的。MapRuduce就是把對於資料的操作轉換為對映和歸約。map和reduce兩個函式是用來操作集合的函式,因為Python寫起來非常彆扭,這裡用F 示範,map相當於為集合的每乙個元素應用函式f,map的定義是 let...

Vue和React和Angular的缺點是什麼?

張國鈺 Angular 太龐大了,三者中,整合度最高,引入了對框架來說很好的但是對前端不太友好的概念,容易勸退 React 太散了,整合度三者最低,如果從0搭建專案,得東拼西湊,不過現在好很多了,感謝社群 Vue挺好的,恩,是挺好的 AaronJin Vue用的不多,要說缺點的話,我覺得最大的問題是...