抓包工具tcpdump詳細指南

目錄

1. 核心功能與特性

2. 關鍵參數速查表

3. 基礎命令

3.1 協議/端口過濾

3.2?IP 地址過濾

3.3 高級邏輯組合

3.4 控制輸出詳細度

3.5 解析包內容

3.6 特殊包過濾

3.7 限制抓包數量

3.8 過濾特定大小包

3.9 過濾提升性能

??????3.10?多網卡綁定

3.11 高級組合命令

4. 實戰案例匯總

4.1 案例 1:捕獲 TCP 三次握手

4.2 案例 2:監控特定主機流量

4.3 案例 3:抓取 HTTP GET 請求

4.4 案例 4:診斷 HTTP 500 錯誤

4.5 案例 5:定位 DNS 解析失敗

4.6 案例 6:分析 TCP 連接超時

4.7 案例 7:實時提取 HTTP POST 表單中的密碼字段

4.8 案例 8:HTTPS請求間歇性失敗(證書鏈不完整)?

4.9 案例 9:網絡帶寬異常占用(廣播風暴)?

5. 輸出關鍵字段解析

6. 注意事項

6.1 權限要求

6.2 過濾技巧

6.3 輸出優化


tcpdump 是一款開源的命令行網絡數據包捕獲與分析工具,廣泛應用于網絡故障診斷、性能優化和安全審計。

1. 核心功能與特性

  • 實時抓包
    基于 libpcap 庫直接監聽網卡流量,支持實時捕獲和解析網絡數據包,輸出可讀性強的文本信息。
  • 靈活過濾
    支持表達式語法,可按協議(如?tcp/udp)、IP 地址(src/dst)、端口(port)、協議標志位等精準過濾數據包。
  • 跨平臺兼容
    原生支持類 Unix 系統(Linux、BSD 等),Windows 可通過 WinDump(需 WinPcap 驅動)實現同等功能。
  • 數據導出與分析
    支持將抓包數據保存為?.pcap?格式文件,便于 Wireshark 等工具深度分析。

2. 關鍵參數速查表

參數作用示例
-i指定監聽網卡-i eth0(監聽 eth0 網卡)
-c限制抓包數量,達到后自動停止抓包-c 10(捕獲 10 個包后停止)
?-C?限制單個輸出文件大小(單位 MB)。文件達上限后會創建新文件。-C 100 -W 5 -w traffic.pcap
-w保存至文件-w traffic.pcap
-r讀取文件分析-r traffic.pcap
-s設置抓包長度(-s 0?捕獲完整數據包-s 64(只抓前 64 字節)
-n禁用域名解析,不禁用端口解析顯示原始 IP 而非域名
-nn禁用域名與端口解析顯示原始 IP 和端口號
-v?/?-vv?/?-vvv

控制輸出詳細層級(逐級增強)

  • -v:顯示 TTL、數據包長度等基礎信息。

  • -vv:增加協議解碼(如 NFS/SMB 細節)。

  • -vvv:最高冗余度(適用深度協議分析)。

-l

字母l,行緩沖輸出,便于實時管道處理

(如配合?grep

tcpdump -l | grep 'keyword'
-X以十六進制+ASCII 碼格式顯示報文內容(含應用層數據)分析 HTTP 請求內容時使用。
-e顯示數據鏈路層信息(如 MAC 地址、VLAN Tag)二層網絡問題排查(如 ARP 欺騙分析)。
-A以 ASCII 格式顯示數據(不顯示鏈路層頭部)快速查看文本協議(如 HTTP、FTP)。
--number為每個輸出行添加序號。
-Q捕獲特定方向流量:in(入站)、out(出站)或?inout(雙向)。
-q-q?強制使用數字端口號,確保輸出準確,而且便于?awkgrep?等工具處理

3. 基礎命令

# 抓取所有網卡流量(Ctrl+C 停止)
tcpdump -i any# 抓取特定網卡(eth0)流量
tcpdump -i eth0# 抓包保存到文件(-w 寫入,-r 讀取)
tcpdump -i eth0 -w capture.pcap# 讀取分析
tcpdump -r capture.pcap 

3.1 協議/端口過濾

tcpdump tcp                  # 只抓 TCP
tcpdump udp port 53          # DNS 流量
tcpdump icmp                 # Ping 包
tcpdump port 80              # HTTP 流量
tcpdump portrange 8000-8080  # 端口范圍

3.2?IP 地址過濾

tcpdump host 192.168.1.100    # 進出該 IP 的流量
tcpdump src 10.0.0.1          # 來源 IP
tcpdump dst 172.16.0.5        # 目標 IP
tcpdump net 192.168.1.0/24    # 整個子網

3.3 高級邏輯組合

tcpdump 'tcp port 80 and (src 192.168.1.5 or dst 192.168.1.5)'
tcpdump 'icmp and not src 10.0.0.1'  # 排除特定源

3.4 控制輸出詳細度

tcpdump -n    # 禁用主機名解析(只顯示 IP)
tcpdump -nn   # 禁用端口解析(顯示數字端口)
tcpdump -v    # 增加詳細度
tcpdump -vvv  # 最高詳細度(顯示 TTL、校驗和等)

3.5 解析包內容

tcpdump -A     # ASCII 格式顯示(HTTP 內容)
tcpdump -X     # HEX+ASCII 格式(二進制協議)
tcpdump -XX    # 更完整的 HEX 輸出

3.6 特殊包過濾

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'  # SYN/FIN 包
tcpdump 'tcp[13] & 4 != 0'  # RST 包
tcpdump 'ip[8] < 10'        # TTL < 10 的包(常用于 traceroute 檢測)

3.7 限制抓包數量

tcpdump -c 1000             # 抓1000個包后停止

3.8 過濾特定大小包

tcpdump greater 1000   # 抓大于1000字節的包
tcpdump less 128       # 抓小于128字節的包

3.9 過濾提升性能

tcpdump 'ip and not net 192.168.0.0/24'  # 排除內網流量

??????3.10?多網卡綁定

tcpdump -i eth0 -i eth1  # 同時抓兩個網卡

3.11 高級組合命令

# 組合技:詳細解析+不解析+大小限制+保存文件
tcpdump -i eth0 -vvv -nn -s0 -c 1000 -w mysql_traffic.pcap 'tcp port 3306'# 實時過濾 MySQL 查詢
tcpdump -i any -s0 -l -A 'tcp port 3306 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x03000000' | grep -B1 -i "SELECT\|UPDATE"# 實時過濾經過服務器443端口的所有流量
tcpdump -i any -nn -vv -X -s 0 port 443 -w  local_port_443.pcap

4. 實戰案例匯總

4.1 案例 1:捕獲 TCP 三次握手

場景:分析本地 HTTP 服務的連接建立過程。
命令

tcpdump -i lo -n tcp port 8080 and 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

輸出解析

12:30:01.234 IP 127.0.0.1.12345 > 127.0.0.1.8080: Flags [S]  # SYN 請求
12:30:01.235 IP 127.0.0.1.8080 > 127.0.0.1.12345: Flags [S.] # SYN-ACK 響應  
12:30:01.236 IP 127.0.0.1.12345 > 127.0.0.1.8080: Flags [.]  # ACK 確認

4.2 案例 2:監控特定主機流量

命令

tcpdump -i eth0 host 192.168.1.100 and not port 22  # 過濾非 SSH 流量

用途:檢查指定主機的網絡活動,排除干擾流量。

4.3 案例 3:抓取 HTTP GET 請求

命令

tcpdump -s0 -A -n 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'  # 匹配 "GET "

說明
通過檢測 TCP 載荷中的?GET?關鍵字捕獲 HTTP 請求內容,-A?參數以 ASCII 顯示載荷。

4.4 案例 4:診斷 HTTP 500 錯誤

tcpdump -i eth0 -s0 -A 'tcp port 80 and host 192.168.1.100'

分析要點

  • 檢查服務端是否返回?HTTP/1.1 500

  • 查看請求頭是否異常

  • 觀察 TCP 序列號確認請求/響應完整性

4.5 案例 5:定位 DNS 解析失敗

tcpdump -i any -nn -s0 'udp port 53'

關鍵檢查

  • 客戶端是否發出 DNS 查詢

  • DNS 服務器是否響應

  • 響應是否包含?NXDOMAIN(域名不存在)

4.6 案例 6:分析 TCP 連接超時

tcpdump -i eth0 'host 10.0.0.5 and tcp port 3306'

診斷步驟

  1. 確認 SYN 包是否發出

  2. 是否收到 SYN-ACK

  3. 檢查是否有重傳([S]?標志重復出現)

  4. 觀察窗口大小(win?值)是否過小

4.7 案例 7:實時提取 HTTP POST 表單中的密碼字段

場景:
調試 Web 登錄流程,確認密碼是否明文傳輸。

sudo tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"

輸出示例:

POST /wp-login.php HTTP/1.1
Host: dev.example.com
log=admin&pwd=secret123&wp-submit=Log+In

關鍵分析:

- `-A`:以 ASCII 格式顯示包內容。
- `-l`:行緩沖,保證實時輸出。
- `egrep` 過濾出關鍵字段。

4.8 案例 8:HTTPS請求間歇性失敗(證書鏈不完整)?

現象?:?
用戶反饋訪問https://lmzf.example.com時出現ERR_SSL_PROTOCOL_ERROR,但瀏覽器控制臺無明確錯誤信息。

??抓包分析?:?

# 僅捕獲SSL握手階段 
tcpdump -i eth0 -nn -s0 'port 443 and (tcp[20](@ref)& 0x17 = 0x02)' -w ssl_handshake.pcap

??關鍵發現?:?

  • 客戶端發送Client Hello后,服務端未返回Server Hello,直接斷開連接。
  • 使用Wireshark解析發現:服務端證書鏈缺少中間CA證書。

??根因定位??
服務端配置的SSL證書未包含完整的證書鏈(僅部署了葉子證書)。

解決方案??
重新生成證書文件,包含完整的證書鏈。

4.9 案例 9:網絡帶寬異常占用(廣播風暴)?

現象??
服務器出口帶寬突然飆升至95%,但業務流量無明顯增長。

??抓包分析??

# 按流量排序捕獲大包 
tcpdump -i eth0 -nn -q | head -1000 | awk '{print $3}' | sort | uniq -c | sort -nr

??關鍵發現??

  • 90%流量來自192.168.1.100ARP廣播請求(每秒6000+次)
  • 目標MAC為全零ff:ff:ff:ff:ff:ff

??根因定位??
網絡設備故障導致ARP表項丟失,觸發大量廣播請求。

??解決方案??

  • 修復交換機ARP表同步問題
  • 添加靜態ARP綁定:arp -s 192.168.1.100 00:11:22:33:44:55

5. 輸出關鍵字段解析

18:30:28.123456 IP 192.168.8.100.58218 > 10.0.0.8.80: Flags [S], seq 392665715, win 29200, options [mss 1460,sackOK,TS val 12345 ecr 0,nop,wscale 7], length 0
  • 時間戳18:30:28.123456(精確到微秒)

  • 方向>?表示流量方向

  • Flags[S]=SYN,[.]=ACK,[P]=PUSH,[F]=FIN

  • seq/ack:序列號/確認號(跟蹤數據流關鍵)

  • win:窗口大小(流量控制指標)

  • length:數據載荷長度

6. 注意事項

6.1 權限要求

需使用?sudo?或 root 權限執行(因需訪問網卡)。

6.2 過濾技巧

  • 組合條件:and/or(如?port 80 or port 443)。
  • 排除干擾:not(如?not arp)。

6.3 輸出優

  • 添加?-tttt?顯示完整時間戳。
  • 使用?-l?使輸出可實時管道傳輸(如?tcpdump -l | grep 'pattern')。

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

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

相關文章

三高架構雜談

我們的秒殺請求到了tomcat之后&#xff0c;我整個請求到了后端&#xff0c;我們怎么抗住高并發 也就是讓他1s抗住10w的訂單量&#xff0c;該怎么做 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…

后端通用基礎代碼

后端通用基礎代碼 通用基礎代碼是指&#xff1a;“無論在任何后端項目中&#xff0c;都可以復用的代碼。這種代碼一般 “一輩子只用寫一次” &#xff0c;了解作用之后復制粘貼即可&#xff0c;無需記憶。 目錄結構如下&#xff1a;1、自定義異常 自定義錯誤碼&#xff0c;對錯…

基于51單片機WIFI心率計脈搏體溫測量儀APP設計

1 系統功能介紹 本設計基于 STC89C52 單片機&#xff0c;結合 脈搏傳感器、溫度傳感器 DS18B20、LCD1602 液晶顯示器、WiFi 模塊 等外設&#xff0c;構建了一個 WiFi 心率計脈搏體溫測量儀 APP 系統。系統能夠實現對人體心率與體溫的實時采集、處理、顯示和遠程上傳&#xff0c…

從零到一構建企業級GraphRAG系統:GraphRag.Net深度技術解析

當RAG遇上知識圖譜&#xff0c;會碰撞出怎樣的火花&#xff1f;本文將帶你深入探索GraphRag.Net這個開源項目&#xff0c;看看如何用.NET技術棧打造一個企業級的圖譜增強檢索系統。 引言&#xff1a;為什么我們需要GraphRAG&#xff1f; 在AI大模型時代&#xff0c;RAG&#x…

前端Element-plus的選擇器 el-select 清空內容時,后端對應的更新方式,支持更新為null

1、所屬小類選擇器 el-select 清空內容時&#xff0c;前端通過事件設置為空字符串clear"handleSmallCategoryClear"【所屬小類選擇器】只能選擇&#xff0c;不能輸入信息<script setup lang"ts" name"QualityFileInfoDialog"> ...... // 所…

【筆記】和各大AI大語言模型合作寫項目—slirp.go

最近和各大AI大語言模型一起合作寫了個小項目&#xff0c;讓大家看看AI離取代人類還差多遠。 開發大家都在一個共享環境下&#xff0c;連docker都不能運行&#xff0c;rootless也沒有。不過好在linux環境&#xff0c;弄個proot能apt或者yum install自由&#xff0c;但是諸如pod…

國標:開展環境衛生滿意度調查

隨著社會的進步和人們生活水平的提高&#xff0c;&#xff08;滿意度調查&#xff09;&#xff08;問卷調查&#xff09;&#xff08;第三方市場咨詢公司&#xff09;對生活品質的追求以及對環境保護的重視已經成為了當下社會的主旋律。在這樣的背景下&#xff0c;環境衛生問題…

【辦公類-54-08】20250902 2025學年第一學期班級點名冊模版(雙休國定假涂成灰色、修改標題和頁眉,批量導出PDF)根據新Excel模版,標題增加園區、空姓名行填充灰色

背景需求: 之前做了優化過的點名冊 【辦公類-54-07】20250901 2025學年第一學期班級點名冊模版(雙休國定假涂成灰色、修改標題和頁眉,批量導出PDF)-CSDN博客文章瀏覽閱讀984次,點贊27次,收藏29次。【辦公類-54-07】20250901 202學年第一學期班級點名冊模版(雙休國定假…

【C++知識雜記1】智能指針及其分類

智能指針&#xff08;smart pointer&#xff09; 是 C11 引入的一類 模板類&#xff0c;用來封裝原始指針&#xff0c;自動管理堆內存的生命周期&#xff0c;避免出現 內存泄漏 和 懸空指針&#xff08;野指針&#xff09; 的問題。 當智能指針對象離開作用域時&#xff0c;它會…

vue從入門到精通:搭建第一個vue項目

目錄 Vue是什么 一、nodejs安裝 二、安裝Vue CLI 三、創建Vue項目 四、配置vue.config.js文件 五、創建第一個應用hello word Vue是什么 Vue是一款?用于構建用戶界面的 JavaScript 漸進式架構?既可作為庫(僅關注視圖層)也可擴展為框架,支持從靜態頁面到復雜單頁應用…

C# Queue源碼分析

Queue<T> 是 .NET 中實現隊列&#xff08;先進先出&#xff09;的一種泛型集合類。它基于數組實現&#xff0c;支持動態擴容、線程不安全&#xff0c;適用于大多數需要隊列結構的場景。一、類結構與字段說明 public class Queue<T> : IEnumerable<T>, IColle…

微服務之注冊中心與ShardingSphere關于分庫分表的那些事

小伙伴們&#xff0c;你們好呀&#xff01;我是老寇&#xff01;跟我一起學習注冊中心與ShardingSphere怎么一起使用 使用 nacos-shardingsphere例子&#xff0c;請點擊我 注意&#xff1a;需要自己提前創建數據庫和表 create database kcloud_platform_test;DROP TABLE IF…

python遇到異常流程

在 Python 中&#xff0c;程序遇到異常時的退出行為取決于是否對異常進行了捕獲和處理&#xff1a;未捕獲的異常&#xff1a; 如果異常發生后沒有被 try-except 語句捕獲&#xff0c;程序會立即終止&#xff0c;并返回一個非零的退出碼&#xff08;通常是 1&#xff09;&#x…

【開源大模型和閉源大模型分別有哪些?兩者的對比?部署私有化模型的必要性有哪些?】

以下是關于開源與閉源大模型的詳細對比及私有化部署必要性的分析&#xff0c;結合最新行業動態和技術趨勢&#xff1a;一、開源 vs 閉源大模型代表列表 1. 開源大模型&#xff08;2024年主流&#xff09;模型名稱參數量機構特點LLaMA-38B-70BMeta商業使用需授權&#xff0c;多語…

SpringBoot--JWT

一、JWT 的簡單了解1. 什么是 JWT&#xff1f;JWT&#xff08;JSON Web Token&#xff09;是一種開放標準&#xff08;RFC 7519&#xff09;&#xff0c;用于在 各方之間安全地傳輸信息。它基于 JSON 格式&#xff0c;信息通過 數字簽名 的方式保證不可篡改&#xff0c;常用于 …

OpenTelemetry、Jaeger 與 Zipkin:分布式鏈路追蹤方案對比與實踐

OpenTelemetry、Jaeger 與 Zipkin&#xff1a;分布式鏈路追蹤方案對比與實踐 問題背景介紹 隨著微服務架構的普及&#xff0c;服務之間調用鏈路變得異常復雜&#xff0c;單一服務故障或性能瓶頸往往牽一發動全身。分布式鏈路追蹤&#xff08;Distributed Tracing&#xff09;能…

云原生俱樂部-RH124知識點總結(1)

RH124內容不是很多&#xff0c;但是也不知道多少能夠寫完&#xff0c;細節性的東西不會太多&#xff0c;但是確保每個都能夠有印象能理解。本來是打算一篇文章寫完的&#xff0c;但最后還是決定寫一個系列。至于RH124和RH134的內容為什么放在了k8s系列的后面&#xff0c;那只是…

Redis面試精講 Day 25:Redis實現分布式Session與購物車

【Redis面試精講 Day 25】Redis實現分布式Session與購物車 在高并發、多節點的現代Web應用架構中&#xff0c;傳統的本地Session存儲方式已無法滿足分布式系統的需求。如何實現跨服務、高可用、低延遲的用戶狀態管理&#xff0c;成為后端開發和面試中的高頻考點。今天是“Redi…

本地文件上傳到gitee倉庫的詳細步驟

本地文件上傳到gitee倉庫的詳細步驟 &#x1f530; 一、前期準備 注冊 Gitee 賬號 訪問 Gitee 官網完成注冊并登錄。 網址&#xff1a;https://gitee.com/ 安裝 Git 下載 Git 官方客戶端并完成安裝。 下載網址&#xff1a;https://git-scm.com/downloads 配置 Git 全局信息&…

7 索引的監控

1. 查看索引的監控狀態 GET /_cat/indices/log2?v&formatjson[{"health" : "yellow","status" : "open","index" : "log2","uuid" : "1OnzbVbJRn2grc5k198LlA","pri" : "…