Linux流量分析:tcpdump wireshark

前言

最近因為工作需要,研究了下如何使用tcpdump和wireshark分析業務流量。如果要使用tcpdump分析具體的HTTP請求耗時,需捕獲網絡數據包并分析時間戳信息,重點關注TCP連接的建立、HTTP請求發送到響應接收的全過程。
以下是具體步驟和技巧:

🛠 1. 基礎抓包命令

捕獲HTTP流量

sudo tcpdump -i eth0 port 80 -s 0 -w http.pcap
  • -i eth0:指定網卡(如any捕獲所有接口)。
  • port 80:過濾HTTP流量(HTTPS用port 443)。
  • -s 0:捕獲完整數據包(避免截斷)。
  • -w http.pcap:保存為文件供后續分析。

過濾特定請求

sudo tcpdump -i eth0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

使用BPF過濾捕獲HTTP方法(如GET/POST)。

示例:GET請求的十六進制值為0x47455420。

? 2. 關鍵耗時分析點

TCP三次握手耗時

  • 觀察點:SYN → SYN-ACK → ACK 的時間差。
  • 過濾命令:
tcpdump -r http.pcap 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

計算SYN到SYN-ACK的間隔,反映網絡延遲。

HTTP請求到響應耗時

  • 請求發送:捕獲GET/POST數據包的時間戳(T1)。
  • 響應接收:捕獲HTTP/1.1 200響應頭的時間戳(T2)。
  • 總耗時:T2 - T1 即HTTP請求處理時間。
  • 技巧:用-A以ASCII顯示內容,快速定位請求/響應邊界。

TCP傳輸耗時

分析ACK確認時間:若ACK延遲高,可能網絡擁塞或服務器處理慢。

過濾重傳包: tcpdump -r http.pcap 'tcp[tcpflags] & tcp-ack != 0',重傳多表明網絡不穩定。

🔍 3. 使用Wireshark深度分析

  1. 導入抓包文件:Wireshark http.pcap。
  2. 跟蹤TCP流:
  • 右鍵數據包 → Follow → TCP Stream,關聯請求/響應。
  • 查看時間軸(Time列),計算各階段耗時(握手、首字節、傳輸)。
  1. 統計工具:
  • Statistics → Flow Graph:可視化連接時序。
  • Statistics → TCP Stream Graph:分析往返時間(RTT)和吞吐量。

? 4. 命令行高級分析

計算請求響應時間差

tcpdump -r http.pcap -tttt 'port 80' | grep -E 'GET|HTTP/1.1 200'
  • -tttt:顯示完整時間戳(年-月-日 時:分:秒.微秒)。
  • 手動計算相鄰GET和200 OK的時間差。

自動化統計(示例)

tcpdump -i eth0 -l -tttt port 80 | awk '/GET/ { gsub(/[.:]/," "); start=$0 }/HTTP\/1.1 200/ { gsub(/[.:]/," "); end=$0; print "耗時:", end - start "秒" }
'

實時輸出每個請求的耗時(需調整時間格式解析)。

?? 5. 生產環境注意事項

  1. 性能影響:
  • 使用-c 1000限制包數量,避免磁盤溢出。
  • 過濾精確條件(如特定IP/端口),減少數據量。
  1. 安全與隱私:
  • 避免抓取敏感數據:-s 256只捕獲頭部。
  • 定期清理抓包文件:find /path -name "*.pcap" -mtime +1 -delete

💎 總結流程

  1. 精準抓包:指定接口、端口和過濾規則。
  2. 定位關鍵節點:握手、請求發送、響應接收的時間戳。
  3. 工具分析:
  • Wireshark:可視化時序和流量統計。
  • 命令行:結合grep/awk快速計算耗時。
  1. 優化策略:針對高延遲環節(如握手慢、重傳多)深入排查。

tcpdump實戰

🛠? 1. 捕獲特定請求的流量

sudo tcpdump -i wlan0 -s 0 -w target.pcap '((tcp port 80 or tcp port 443) and host 192.168.3.77)'

📊 2. 自動化分析腳本 (Python)

#!/usr/bin/env python3
from scapy.all import rdpcap, TCP, IP
import sysdef analyze_pcap(pcap_file):packets = rdpcap(pcap_file)flows = {}total_rx = 0total_tx = 0for pkt in packets:if not (IP in pkt and TCP in pkt): continuesrc = pkt[IP].srcdst = pkt[IP].dstsport = pkt[TCP].sportdport = pkt[TCP].dport# 創建唯一連接標識 (忽略端口順序)flow_id = tuple(sorted([(src, sport), (dst, dport)]))# 流量統計is_tx = src == "192.168.3.77"  # 根據圖片的 IPflow = flows.setdefault(flow_id, {"src_ip": src,"dst_ip": dst,"ports": (sport, dport),"tx_bytes": 0,"rx_bytes": 0,"start": float(pkt.time),"end": float(pkt.time)})pkt_size = len(pkt)if is_tx:flow["tx_bytes"] += pkt_sizetotal_tx += pkt_sizeelse:flow["rx_bytes"] += pkt_sizetotal_rx += pkt_sizeflow["start"] = min(flow["start"], float(pkt.time))flow["end"] = max(flow["end"], float(pkt.time))# 輸出報表print(f"\n📊 總流量分析 (目標IP: 192.168.3.77)")print(f"  上傳流量: {total_tx/1024:.2f} KB")print(f"  下載流量: {total_rx/1024:.2f} KB")print("\n🔥 具體連接流量明細:")for flow_id, data in flows.items():duration = data["end"] - data["start"]print(f"\n? 連接: {data['src_ip']}:{data['ports'][0]} -> {data['dst_ip']}:{data['ports'][1]}")print(f"  持續時間: {duration:.3f} 秒")print(f"  上傳: {data['tx_bytes']} 字節")print(f"  下載: {data['rx_bytes']} 字節")print(f"  總流量: {data['tx_bytes'] + data['rx_bytes']} 字節")if duration > 0:print(f"  平均速率: {(data['tx_bytes'] + data['rx_bytes'])/duration/1024:.2f} KB/s")if __name__ == "__main__":if len(sys.argv) != 2:print("用法: python3 traffic_analyzer.py <PCAP_FILE>")sys.exit(1)analyze_pcap(sys.argv[1])

?? 3. 使用流程

  1. 捕獲流量:
# 運行捕獲程序 (Ctrl+C 停止)
sudo tcpdump -i wlan0 -s 0 -w my_request.pcap 'tcp and host 192.168.3.77'
  1. 執行分析:
python3 traffic_analyzer.py my_request.pcap

📝 4. 結果解讀示例

📊 總流量分析 (目標IP: 192.168.3.77)上傳流量: 32.15 KB下載流量: 125.48 KB🔥 具體連接流量明細:? 連接: 192.168.3.77:54562 -> 93.888.216.38:443持續時間: 1.253 秒上傳: 32876 字節下載: 128456 字節總流量: 161332 字節平均速率: 125.72 KB/s

?? 重要說明

  1. 安裝依賴:
pip install scapy
  1. 自定義過濾:

按需調整捕獲命令中的過濾條件:

指定域名
sudo tcpdump -i wlan0 'host example.com and tcp port 80'
指定端口范圍
sudo tcpdump -i wlan0 'tcp portrange 8000-9000'
  1. 流量方向說明:
  • TX (上傳): 從 192.168.3.77 發出的數據
  • RX (下載): 發送到 192.168.3.77 的數據

該方案通過精確流量捕獲和自動化分析,可幫助您定位具體請求的流量消耗和性能瓶頸。對于HTTPS流量,雖然無法解密內容,但仍可精確統計流量大小和時間特征。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88921.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習圖像分類數據集—角膜潰瘍識別分類

該數據集為圖像分類數據集&#xff0c;適用于ResNet、VGG等卷積神經網絡&#xff0c;SENet、CBAM等注意力機制相關算法&#xff0c;Vision Transformer等Transformer相關算法。 數據集信息介紹&#xff1a;角膜潰瘍識別分類&#xff1a;[dot, mix, slice] 訓練數據集總共有270張…

功能強、超好用【PDF轉換工具】的介紹下載與安裝教程

Windows 電腦上一款簡單好用的PDF轉換工具&#xff0c;可以輕松地將其他文檔轉換為 PDF 格式&#xff0c;也可以將 PDF 文件轉換為其他格式&#xff0c;如常見的 Word、Excel、PPT 等。 此外軟件還支持 Office 文檔合并分割、旋轉頁面、拼接頁面、刪除文字、刪除頁面、添加水印…

c# 釘釘應用實現監聽審批事件以及獲取審批結果的流程

oa的操作已經測試了一遍 image.png如果是自建oa則代表發起的審批是跳轉網頁&#xff0c;否則釘釘打開后是一個表單界面&#xff0c;不需要調整自己搞得oa。 所以我感覺目前公司的需求更適合官方oa 表單來填寫,更靈活&#xff0c;還支持用戶配置。 但是用戶點了審批&#xff0c;…

Typecho架構深度剖析:輕量級博客系統的設計哲學與實現原理

文章目錄 深度解析Typecho:輕量級博客系統的架構設計與實現1. Typecho概述與技術背景1.1 發展歷程1.2 核心特性2. 系統架構設計分析2.1 核心架構圖2.2 核心組件3. 核心模塊實現分析3.1 路由系統實現3.2 數據庫抽象層4. 插件系統深度解析4.1 Hook機制實現4.2 插件開發示例5. 性…

LangChain 內存(Memory)

1. 為什么需要內存&#xff1f; 大型語言模型&#xff08;LLM&#xff09;本身是無狀態的。這意味著每次你向 LLM 發送一個請求&#xff08;Prompt&#xff09;&#xff0c;它都會獨立處理這個請求&#xff0c;完全不記得之前任何的交互。這在構建一次性問答應用時沒問題&#…

基于定制開發開源AI智能名片S2B2C商城小程序的社群游戲定制策略研究

摘要&#xff1a;本文聚焦社群游戲定制領域&#xff0c;深入探討以社群文化和用戶偏好為導向的定制策略。通過分析互動游戲活動、社群文化塑造等關鍵要素&#xff0c;結合定制開發開源AI智能名片S2B2C商城小程序的技術特性&#xff0c;提出針對性游戲定制方案。研究旨在提升社群…

自動駕駛決策與規劃

目錄 自動駕駛決策與規劃概述 決策與規劃體系結構 分層遞階式決策規劃 反應式體系結構 混合式體系結構 決策與規劃系統的關鍵環節 路徑規劃 軌跡規劃 行為決策 異常處理 自動駕駛的路徑規劃技術 維諾圖法 柵格法 Dijkstra算法 A*算法 自動駕駛的行為決策方法 …

C++編譯期計算:常量表達式(constexpr)全解析

在C性能優化領域&#xff0c;"將計算盡可能轉移到編譯期"是一條黃金法則。編譯期計算&#xff08;Compile-Time Computation&#xff09;能顯著減少程序運行時的開銷&#xff0c;提升執行效率&#xff0c;同時還能在編譯階段暴露潛在錯誤。C11引入的constexpr關鍵字及…

【micro:bit】從入門到放棄(一):在線、離線版本的使用

1、離線版 micro:bit 1)下載地址 https://makecode.microbit.org/offline-app 2)雙擊安裝包,makecode-microbit-setup-win64.exe,自動安裝,安裝成功后圖標如下圖所示 3)運行程序,查看版本信息 4)主界面如下 5)編程界面 點擊“新建項目”或者“導入”進入編程界…

Flink Forward Asia 2025 主旨演講精彩回顧

作為 Apache Flink 社區備受矚目的年度盛會之一&#xff0c;由阿里云承辦的 Flink Forward Asia 2025 于 7 月 3 日在新加坡正式拉開帷幕。From Real-Time Data Analytics to Real-Time AI&#xff0c;Flink 生態全面擁抱 AI本次大會上&#xff0c;Apache Flink 中文社區發起人…

車道偏離預警(LDW)功能介紹

車道偏離預警&#xff08;LDW&#xff09;功能介紹 LDW功能 通過攝像頭監測前方車道線&#xff0c;當車輛偏離車道線時&#xff0c;系統發出報警提醒。 系統框圖報警條件 最早報警線最遲報警線報警臨界線 設置在 最早/最遲報警線 之間接口定義 輸入/輸出系統算法 橫向偏離速度模…

軟考(軟件設計師)計算機網絡-網絡層

obsidian做markdown筆記太爽了&#xff0c;康奈爾模板筆記看起來舒服&#xff0c;CSDN試了幾種方式&#xff0c;不支持&#xff0c;只能貼圖了&#xff0c;將就看吧&#x1f60f;&#xff08;狗頭保命&#xff09;工作原理圖解 #mermaid-svg-e5Tgpt26jUftujKn {font-family:&qu…

nginx反向代理實現跨域請求

記錄一個項目中遇到的跨域請求問題&#xff0c;解決跨域問題無非幾種辦法&#xff1a;1、后端解決&#xff0c;推薦的做法&#xff0c;可以看我之前寫的文章&#xff0c;fastadmin的后臺配置跨域&#xff1b;2、前端配置proxy代理&#xff08;開發環境用&#xff09;&#xff1…

利用Wisdom SSH高效搭建CI/CD工作流

在軟件開發流程中&#xff0c;CI/CD工作流對于提升效率與確保質量起著關鍵作用。Wisdom SSH作為一款強大工具&#xff0c;其官網為ssh.wisdomheart.cn&#xff0c;借助AI助手能大幅簡化CI/CD工作流的搭建過程。假設服務器已完成基礎配置&#xff0c;下面為您介紹如何利用Wisdom…

深度學習-循環神經網絡RNN

文章目錄序列模型循環神經網絡案例詞的表示輸出的表示矩陣運算表示交叉熵損失時間反向傳播算法BPTT梯度消失與梯度爆炸GRULSTM總結序列模型 循環神經網絡 st是上一個隱層的輸出&#xff0c;體現序列數據之間有很強的關聯性。 案例 > S0是初始輸入&#xff0c;一般是0&#…

【Linux網絡編程】Socket - TCP

目錄 V1版本 - Echo Server 初始化服務器 啟動服務器 客戶端 一些BUG與問題 解決服務器無法一次處理多個請求的問題 多進程版本 多線程版本 線程池版本 V2版本 - 多線程遠程執行命令 V1版本 - Echo Server 初始化服務器 TCP大部分內容與UDP是相同的&#xff0c;我們…

知識圖譜構建簡單分享

最近系統性地學習了知識圖譜構建的關鍵技術&#xff0c;并結合醫療領域知識&#xff0c;完成了一個醫療知識圖譜項目的實踐。以下是整理的項目架構&#xff0c;歡迎交流指正。說明&#xff1a;當前項目實際實現主要應用了數據預處理、模型設計與預訓練、模型優化與測試等核心技…

MCU中的系統控制器(System Controller)是什么?

MCU中的系統控制器&#xff08;System Controller&#xff09;是什么&#xff1f; 在微控制器&#xff08;MCU&#xff09;中&#xff0c;系統控制器&#xff08;System Controller&#xff09;是一個關鍵模塊&#xff0c;負責管理和協調MCU內部的核心功能&#xff0c;確保系統…

【Datawhale夏令營】用AI做帶貨視頻評論分析

文本分類、文本聚類 基礎庫&#xff1a; pandas, sklearn功能&#xff1a; 商品識別、情感分析、評論聚類商品識別&#xff1a; 視頻文本信息&#xff0c;預測推廣商品名稱 & 情感分析&#xff1a;四個維度&#xff08;情感傾向、用戶場景、用戶疑問、用戶建議&#xff09…

[Meetily后端框架] AI摘要結構化 | `SummaryResponse`模型 | Pydantic庫 | vs marshmallow庫

第3章&#xff1a;摘要數據結構&#xff08;Pydantic庫&#xff09; 歡迎回來&#xff01; 在之前的第2章&#xff1a;API文檔中&#xff0c;我們知道API網關提供了端點 而API文檔準確告訴我們如何與這些端點通信&#xff0c;包括需要發送的數據格式和期望接收的數據格式。 …