目录

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" : "…