tcpdump快速入门及实践手册
tcpdump快速入门及实践手册
1. 快速入门
[1]. 基本用法
基本用法: tcpdump [选项 参数] [过滤器 参数]
[root@kysrv1 pwe]# tcpdump -h
tcpdump version 4.9.3
libpcap version 1.9.1 (with TPACKET_V3)
OpenSSL 1.1.1f 31 Mar 2020
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ][ -Q in|out|inout ][ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ][ --immediate-mode ] [ -T type ] [ --version ] [ -V file ][ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ][ -Z user ] [ expression ]
[root@kysrv1 pwe]#
[2]. 参数及选项
- 【-A】:以
ASCII打印报文的数据内容,与参数-X冲突。 - 【-b】: 指定协议,包括
ip、arp、rarp、icmp等。 - 【-c】:数字,指定抓包数量。
- 【-C】:数字,保存文件的大小(单位为
MB) ,常配合-W使用,代表抓取的包构成多少个pcap文件,每个文件大小多少。 - 【-D】:列出所有可用网络接口。
- 【-e】:显示通信双方MAC地址。
- 【-i】 :指定监听网卡名称,
-i any表示监听所有网卡。 - 【-n】: 不解析主机名,直接用IP地址显示;默认用
hostname显示,不带该参数会导致回显比较慢,因为要处理域名翻译。 - 【-nn】: 不解析主机名和端口,直接用
Port显示; 默认显示Port对应的服务名。 - 【-P】:指定抓取的包是进入还是流出的,可选参数有in、out、inout,默认 inout。
- 【-p】: 关闭接口的混杂模式。
- 【-q】: 快速打印输出,只输出少量的协议相关信息。
- 【-r】:从抓包文件读取内容。
- 【-s】: 数字,设置要抓取的包长,默认
96字节;如果-s 0,会截取全部内容。 - 【-S】:以绝对值形式输出TCP序列号,缺省时以相对值形式输出。
- 【-t】:不打印时间戳。
- 【-tt】:显示时间戳。
- 【-ttt】:显示请求与响应的时间间隔而非绝对时间。
- 【-vv】:输出详细信息。
- 【-w】:输出到指定pcap文件;缺省时默认保存在系统的默认路径下;当指定输出文件时,就不会输出到屏幕了。
- 【-W】:数字,抓取多少个pcap文件,配合
-C使用。 - 【-x】:用16进制显示从
ip层及以上开始的帧内容。 - 【-X】:用16进制和
ascii显示ip层及以上的报文头。 - 【-xx】:同
-x,但是从数据链路层(即以太网头部)开始打印。 - 【-XX】:同
-X,但是从数据链路层(即以太网头部)开始打印。 - 【-Z】:用户名,以该用户权限来执行抓包。
- 【-G】:从缓存写入到文件的时间间隔(默认是 2 秒);如果想要
tcpdump立即将数据写入文件,可以使用-G参数。
[3]. 过滤器及参数
过滤器分类
- 协议(Proto): 可选有
ip,arp,rarp,tcp,udp,icmp,ether等,默认是所有协议的包。 - 方向(Dir): 可选有
src,dst,src or dst,src and dst,默认为src or dst。 - 类型(Type): 可选有
host,net,port,portrange(端口范围,比如 21-42),默认为 host。 - 组合逻辑运行符: 可选有
and、or、not和 括号 等。
括号:
()等特殊符号需要加转义符或者用单引号 ,如下示例:
tcpdump host 192.168.58.1 and \(192.168.58.151 or 192.168.58.131\)
tcpdump host 192.168.58.1 and '(192.168.58.151 or 192.168.58.131)'
上述表达式的含义为:抓取主机192.168.58.1 与(主机192.168.58.151 或 主机 192.168.58.131)之间的通信包。
2. 常用命令
[1]. 监听指定网卡
tcpdump -i ens33
[2]. 监听全部网卡
tcpdump -i any
[3]. 保存Wireshark识别文件格式
tcpdump -i ens33 -w output.pcap
[4]. 查看已有数据包
tcpdump -r output.pcap
[5]. 指定抓取数据包的个数
tcpdump -i ens33 -c 200
上述语句的含义是只抓取200个数据包,然后tcpdump就结束抓取报文。
[6]. 时间格式命名保存报文文件名称
tcpdump -i ens33 port 8080 -w /tmpgram//$(date +%Y%m%d_%H%M).pcap
[7]. 显示通信双方IP地址和端口
tcpdump -i ens33 -nn
[8]. 显示通信双方MAC地址
tcpdump -i ens33 -e
[9]. 显示通信双方MAC地址+IP地址.端口
tcpdump -i ens33 -nne
[10]. 显示通信双方相对时间
tcpdump -i ens33 -ttt
[11]. 抓取指定主机所有收发数据包
tcpdump host 10.16.21.61
[12]. 抓取主机指定网卡所有数据包
比如:抓取主机192.168.58.145 上,经过指定网卡ens33的所有数据包
tcpdump -i ens33 host 192.168.58.145
[13]. 抓取指定端口数据包
抓取指定端口收发报文
tcpdump -i ens33 port 512
抓取目标端口为512的数据包
tcpdump dst port 512
抓取源端口为512的数据包
tcpdump src port 512
[14]. 抓取某一范围端口数据包
抓取 1000 至 1200 UDP 端口数据
tcpdump udp and portrange 1000-1200
[15]. 抓取指定网段数据包
指定收发网段
tcpdump net 192.168.10
指定源网段
tcpdump src net 192.168.20
指定目标网段
tcpdump dst net 192.168.20
[16]. 抓取指定协议类型数据包
tcpdump -i ens33 ip
tcpdump -i ens33 tcp
tcpdump -i ens33 udp
3. 组合逻辑表达式命令
组合表达式
tcpdump -i ens33 -xx -c 5 '((udp) and (port 1281) and ((dst host 192.168.58.145) and (src host 192.168.58.1)))'
表达式含义: 抓取网络接口ens33上主机192.168.58.1向主机192.168.58.145发送的 UDP端口为1281 的数据包。
4. 案例讲解
[1]. 指定端口UDP抓包
表达式如下
tcpdump -i ens33 -e -xx -XX -vv -c 5 udp and dst port 1281
参数说明
-i: 指定网络接口名称,ens33为主机接口名称;
-e: 显示通信双方MAC地址;-xx -XX: 用十六进制显示以太网数据帧;-vv: 输出详细信息;-c: 指定抓包数量,本示例中抓取5个数据包就结束抓包;udp: 抓取UDP数据包;dst port: 抓取目标端口为1281的数据包。
测试数据

抓取效果

[2]. UDP以太网帧分析
以太网帧

0x0000: 000c 2972 87e0 0050 56c0 0008 0800 4500 ..)r...PV.....E.
0x0010: 0053 b360 0000 8011 9156 c0a8 3a01 c0a8 .S.`.....V..:...
0x0020: 3a91 c351 0501 003f 0715 90eb 0303 0004 :..Q...?........
0x0030: a700 b461 a001 0126 0001 0000 1f00 0120 ...a...&........
0x0040: 1010 1700 0000 0003 00a7 000e 0003 0001 ................
0x0050: 0300 0400 ff16 00ff 1700 ff99 760a f0ff ............v...
0x0060: dd
以太网帧分析
14个字节以太网帧首部 + 20个字节IP帧首部 + 8个字节UDP帧首部。
#14字节以太网首部
000c 2972 87e0 0050 56c0 0008 0800
#20字节IP首部
4500 0053 b360 0000 8011 9156 c0a8 3a01 c0a8 3a91
#8字节UDP首部
c351 0501 003f 0715
#用户数据
90eb 0303 0004 a700 b461 a001 0126 0001 0000 1f00 0120 1010 1700 0000 0003 00a7 000e 0003 0001 0300 0400 ff16 00ff 1700 ff99 760a f0ff dd
[3]. TCP三次握手
测试工具
在Linux主机上,使用**nc** 工具监听10086端口。
nc -l 10086
测试数据
使用ComMax工具发送TCP连接请求。

抓包表达式
tcpdump -i ens33 -nn tcp and port 10086
参数说明
-i: 指定网络接口名称,ens33为主机接口名称;
-nn: 不解析主机名和端口,直接用Port显示; 默认显示Port对应的服务名;tcp: 抓取TCP数据包;port: 抓取收发端口为10086的数据包。
三次握手

10:17:43.577371 IP 192.168.58.1.59225 > 192.168.58.145.10086: Flags [S], seq 4126457226, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
10:17:43.577404 IP 192.168.58.145.10086 > 192.168.58.1.59225: Flags [S.], seq 2886975696, ack 4126457227, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
10:17:43.579825 IP 192.168.58.1.59225 > 192.168.58.145.10086: Flags [.], ack 1, win 513, length 0
Flags 含义:
- [S] : 表示
Start开始握手; - [S.] : 表示
Start+Ack握手并确认; - [ . ] : 表示
Ack握手确认; - [P.] : 表示
Push+Ack数据发送和确认; - [F.] : 表示
Finish+Ack挥手并确认;
数据传输及挥手

[4]. TCP以太网帧分析
TCP测试数据

抓包表达式
tcpdump -i ens33 -xx -nn tcp and port 10086
以太网帧

10:34:54.669979 IP 192.168.58.1.55673 > 192.168.58.145.10086: Flags [P.], seq 1:13, ack 1, win 513, length 120x0000: 000c 2972 87e0 0050 56c0 0008 0800 45000x0010: 0034 b3b3 4000 8006 512d c0a8 3a01 c0a80x0020: 3a91 d979 2766 b6e0 0611 9ced 82b6 50180x0030: 0201 d852 0000 0100 0000 0006 0103 00010x0040: 000a
以太网帧分析
14个字节以太网帧首部 + 20个字节IP帧首部 + 20个字节TCP帧首部。
#14字节以太网首部
000c 2972 87e0 0050 56c0 0008 0800
#20字节IP首部
4500 0034 b3b3 4000 8006 512d c0a8 3a01 c0a8 3a91
#20字节TCP首部
d979 2766 b6e0 0611 9ced 82b6 5018 0201 d852 0000
#用户数据
0100 0000 0006 0103 0001 000a
[5]. 抓包并保存到文件
抓包并保存到文件,同时控制文件大小和文件个数。
表达式
tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -w /var/gram/ats.pcap -C 2 -W 3 -Z root
参数说明
-i: 指定网络接口名称,ens33为主机接口名称;
-s 0: 抓取全部报文内容;-xx: 用十六进制显示以太网数据帧;-nn: 不解析主机名和端口;udp port 1281: 捕获UDP类型,端口为1281的数据。-w: 报文保存路径,指定为/var/gram/ats.pcap;-C 2: 保存文件的大小(单位为MB)为2MB ;-W 3: 抓取3个pcap文件,依次命名为ats.pcap0、ats.pcap1和ats.pcap2。-Z: 以root用户权限执行保存报文。
测试数据

表达式验证
先验证表达式是否正确,然后再保存报文。
tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -Z root

执行保存报文
tcpdump -i ens33 -s 0 -xx -nn udp port 1281 -w /var/gram/ats.pcap -C 2 -W 3 -Z root
开始保存报文,创建第一个文件 ats.pcap0 。

当第一个文件的大小到达2MB 时,开始创建第二个文件 ats.pcap1 。

当三个文件都存满的时候,tcpdump将以覆盖的方式存储。

循环覆盖中

[6]. 读取存盘文件
如果用tcpdump读取已经保存的文件,则用tcpdump -r file.pcap 命令。
表达式如下:
tcpdump -r ats.pcap0 -xx -nn -c 3
-c 3表示只读取3条帧。

相关文章:
tcpdump快速入门及实践手册
tcpdump快速入门及实践手册 1. 快速入门 [1]. 基本用法 基本用法: tcpdump [选项 参数] [过滤器 参数] [rootkysrv1 pwe]# tcpdump -h tcpdump version 4.9.3 libpcap version 1.9.1 (with TPACKET_V3) OpenSSL 1.1.1f 31 Mar 2020 Usage: tcpdump [-aAbdDefhH…...
javascript双判断语句
JavaScript的if双判断语句和java相似 if(条件表达式) { 执行语句 } else { 执行语句 } 比如说要判断一个年份是否是闰年,代码如下 html><head><meta charset"UTF-8"><title></title></hea…...
C# 中的多态
多态的定义: 通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。 C#中的多态可以分为两种类型: 编译时多态(静态多态)&…...
高性能内存对象缓存Memcached原理与部署
目录 一:Memcached 1:Memcached的概述 2:数据存储方式与数据过期方式 (1)数据存储方式:Slab Allocation (2)数据过期方式:LRU、Laxzy Expiration 3.Memcached 缓存机制 4.Memcached 分布式 5.Memcac…...
【C++进阶】map与set的封装实践
文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码: set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见,map和set是通过红…...
可视化编程-七巧低代码入门02
1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中(IDE)编写代码的编程方式,这种编程方式要求开发人员具备深入的编程知识,开发效率相对较低,代码维护难度较大,容易出现错误,也需要…...
算法:魔法字典
1️⃣要求: 设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。 实现 MagicDictionary 类…...
html+css 实现hover 翻转按钮
前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 一、效果二、原理解析1.这是一个,hover翻转按钮的效果。这其实是用==一个元素==实现的。…...
ETL程序员如何平衡日常编码工作与提升式学习
在快速发展的科技行业中,程序员面临着不断更新的技术和工具,尤其是数据领域的从业者,如ETL(抽取、转换、加载)工程师。如何在日常繁重的编码工作中找到时间进行提升式学习,成为了许多ETL工程师的共同挑战。…...
被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理
35岁,本应是事业发展的高峰期。更多听到的却是35岁职场天花板,特别是IT从业者,35岁就好像是一道迈不过的坎:多年的工作经验,在35岁的生理年龄面前,一文不值。 IT从业者若想安然度过“35岁危机”࿰…...
跟李沐学AI:目标检测、锚框
边缘框 用于表示物体的位置,一个边缘框通过四个数字定义:(坐上x, 左上y, 右下x, 右下y)或(左上x, 左上y, 宽, 高) 通常物体检测或目标检测的数据集比图片分类的数据集小很多,因为物体检测数据集标注成本高很多。 目…...
【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)
学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件,为开发者提供页面加载、页面交互、页面调…...
机器学习深度学习中的Warmup技术是什么?
机器学习&深度学习中的Warmup技术是什么? 在机器学习&深度学习模型的训练过程中,优化器的学习率调整策略对模型的性能和收敛性至关重要。Warmup是优化器学习率调整的一种技术,旨在改善训练的稳定性,特别是在训练的初期阶…...
ECMAScript6中的模块:export导出、import导入
1、模块概述 早期的 JavaScript 程序很小,通常被用来执行独立的脚本任务,在 Web 页面中需要的地方提供一定的交互。随着 Web 应用程序变得越来越复杂,有必要考虑提供一种将 JavaScript 程序拆分为可按需导入的单独模块的机制,这就…...
mysql写个分区表
因为表量已经达到1个亿了。现在想做个优化,先按照 create_time 时间进行分区吧。 create_time 是varchar类型。 CREATE TABLE orders (id varchar(40) NOT NULL ,order_no VARCHAR(20) NOT NULL,create_time VARCHAR(20) NOT NULL,amount DECIMAL(10,2) NOT NULL,…...
Hystrix——服务容错保护库
熔断机制是解决微服务架构中因等待出现故障的依赖方响应而形成任务挤压,最终导致自身服务瘫痪的一种机制,它的功能类似电路的保险丝,其目的是为了阻断故障,从而保护系统稳定性。Hystrix作为Spring Cloud中实现了熔断机制的组件&am…...
【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例
区域性股权市场是我国资本市场的重要组成部分,是多层次资本市场体系的基石。河北股权交易所(简称:河交所) 作为河北省唯一一家区域性股权市场运营机构,打造河北股权交易所综合金融服务平台,将区块链技术与区…...
[图解]需要≠需求-《分析模式》漫谈
1 00:00:00,760 --> 00:00:02,910 今天的《分析模式》漫谈 2 00:00:02,920 --> 00:00:04,180 我们来说一下 3 00:00:04,490 --> 00:00:06,490 需要不等于需求 4 00:00:10,490 --> 00:00:11,760 还是第一章 5 00:00:13,120 --> 00:00:15,020 这里 6 00:00:1…...
刷到好听的音频怎么办
在短视频平台上,我们常常会刷到那些好听得让人陶醉的视频,可却无法直接下载保存其中的音频,是不是感觉很遗憾? 比如刷到林俊杰这首前奏超好听的《江南》,却禁止下载无法直接下载保存。 别担心,下面就为您揭…...
怎么在网络攻击中屹立不倒
在当今蓬勃发展的网络游戏产业中,服务器安全无疑是企业生存与发展的基石。面对互联网环境中无处不在的DDoS(分布式拒绝服务)与CC(挑战碰撞)攻击威胁,游戏服务器的防御能力与高效处理能力显得尤为重要。相较…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
