tcpdump剖析:入门网络流量分析实战指南

“每一个优秀的工程师,都应该能在黑暗中(命令行下)仅凭字符跳动诊断问题。”

1 tcpdump简介

  • tcpdump是一个基于命令行的网络抓包工具,支持捕获和分析网络接口上的数据包。它可以捕获TCP、UDP、ICMP等多种协议的数据包,并以文本形式显示出来。
  • tcpdump是网络故障排查、协议分析和安全审计的重要工具。

2 tcpdump安装

yum install tcpdump -y[root@node3 ~]# yum install tcpdump -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> Running transaction check
---> Package tcpdump.x86_64 14:4.9.2-4.el7_7.1 will be installed
--> Finished Dependency ResolutionDependencies Resolved=================================================================================================================================================================================Package                                 Arch                                   Version                                              Repository                             Size
=================================================================================================================================================================================
Installing:tcpdump                                 x86_64                                 14:4.9.2-4.el7_7.1                                   local                                 422 kTransaction Summary
=================================================================================================================================================================================
Install  1 PackageTotal download size: 422 k
Installed size: 1.0 M
Downloading packages:
tcpdump-4.9.2-4.el7_7.1.x86_64.rpm                                                                                                                        | 422 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : 14:tcpdump-4.9.2-4.el7_7.1.x86_64                                                                                                                             1/1 Verifying  : 14:tcpdump-4.9.2-4.el7_7.1.x86_64                                                                                                                             1/1 Installed:tcpdump.x86_64 14:4.9.2-4.el7_7.1                                                                                                                                              Complete!
[root@node3 ~]# tcpdump --version
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips  26 Jan 2017
[root@node3 ~]# 

3 基础语法

3.1 命令格式

命令格式:
tcpdump [选项] [过滤表达式]

3.2 基本选项

选项

说明

-i

指定监听的网络接口(如eth0),使用-i any可以监听所有接口

-n

不解析主机名(直接显示IP地址)

-nn

不解析主机名和端口号(直接显示IP地址和端口号)

-s

设置捕获数据包的长度(默认 96 字节),使用-s 0捕获完整数据包

-c

捕获指定数量的数据包后退出

-w

将捕获的数据包写入文件(如-w test.cap)

-r

从文件中读取数据包(如-r test.cap)

-v

显示更详细的信息(如TTL、IP选项等)

-vv

显示更详细的信息(比-v更详细)

-vvv

显示最详细的信息

-q

安静模式,减少输出信息

-t

不显示时间戳

-tt

显示时间戳(自1970年1月1日以来的秒数)

-ttt

显示当前包与上一个包的时间间隔(单位:秒)

-tttt

显示完整的时间戳(包括日期和时间)

-X

以十六进制和ASCII格式显示数据包内容

-XX

以十六进制和ASCII格式显示数据包内容(包括链路层头部)

-A

以ASCII格式显示数据包内容

-e

显示链路层头部信息(如MAC地址)

-l

将输出行缓冲(适合将输出通过管道传递给其他命令)

-D

列出所有可用的网络接口

3.3 过滤选项

过滤表达式

说明

host

捕获与指定IP地址相关的流量(源或目标)

src

捕获源IP为指定地址的流量

dst

捕获目标IP为指定地址的流量

net

捕获与指定网络相关的流量(如192.168.10.0/24)

port

捕获与指定端口相关的流量

src port

捕获源端口为指定端口的流量

dst port

捕获目标端口为指定端口的流量

proto

捕获指定协议的流量(如tcp、udp、icmp)

tcp

捕获TCP流量

udp

捕获UDP流量

icmp

捕获ICMP流量

arp

捕获ARP流量

vlan

捕获指定VLAN ID的流量

less

捕获长度小于指定值的数据包

greater

捕获长度大于指定值的数据包

3.4 高级过滤举例

过滤表达式

说明

tcp[tcpflags] & (tcp-syn) != 0

捕获TCP SYN包

tcp[tcpflags] & (tcp-ack) != 0

捕获TCP ACK包

tcp[tcpflags] & (tcp-rst) != 0

捕获TCP RST包

tcp[tcpflags] & (tcp-fin) != 0

捕获TCP FIN包

tcp[tcpflags] & (tcp-syn-tcp-ack) != 0

捕获TCP SYN-ACK包

icmp[icmptype] == icmp-echo

捕获ICMP Echo请求(ping请求)

icmp[icmptype] == icmp-echoreply

捕获ICMP Echo响应(ping响应)

3.5 组合过滤

使用逻辑运算符组合多个过滤条件:
  • and(与):tcp and port 80
  • or(或):port 80 or port 443
  • not(非):not arp

4 BPF过滤器:网络分析的“SQL”语句

4.1 BPF过滤器简介

BPF是一种内核级别的数据包过滤机制,它允许用户定义过滤规则,内核会根据这些规则直接过滤数据包,从而减少用户空间和内核空间之间的数据传输,提高性能。
BPF过滤器的核心特点:
  • 高效:在内核层面过滤数据包,减少不必要的数据拷贝
  • 灵活:支持复杂的过滤规则,可以基于协议、端口、IP地址、MAC地址等条件进行过滤
  • 广泛应用:被 tcpdump、Wireshark等工具广泛使用
BPF过滤器语法:
  • 比较操作符:==、!=、>、<、>=、<=
  • 逻辑操作符:and(&&)、or(||)、not(!)
  • 协议字段:可以直接访问协议头部的字段(如 IP地址、端口号、协议类型等)

4.2 过滤三要素

4.2.1 类型(type)

类型:用于指定过滤的目标,常见的类型包括:
  • host:过滤特定IP地址
  • port:过滤特定端口
  • net:过滤特定网络段
# 抓取特定IP的流量
tcpdump host 192.168.10.30# 抓取端口范围1000-8080的流量
tcpdump portrange 1000-8080

4.2.2 方向(dir)

方向:用于指定流量的来源或目的地,常见的方向包括:
  • src:源地址或源端口
  • dst:目的地址或目的端口
# 抓取源地址在192.168.10.0/24网段的流量
tcpdump src net 192.168.10.0/24# 抓取目标地址为192.168.10.30端口为3306的流量
tcpdump dst 192.168.10.30 and port 3306# 协议proto:tcp/udp/icmp/arp
tcpdump udp port 53               # 抓DNS流量
tcpdump arp                       # 抓ARP广播

4.2.3 协议(proto)

协议:用于指定过滤的协议类型,常见的协议包括:
  • tcp:TCP协议
  • udp:UDP协议
  • icmp:ICMP协议
  • arp:ARP协议
# 抓取DNS流量(UDP端口53)
tcpdump udp port 53# 抓取ARP广播流量
tcpdump arp

 4.3 逻辑组合过滤

# 抓取特定主机的HTTP流量
tcpdump tcp port 80 and host 192.168.10.32# 抓取源地址在192.168.10.0/24网段的DNS查询
tcpdump src net 192.168.10.0/24 and udp port 53# 抓取目标端口为443流量
tcpdump dst port 443

5 高级用法

5.1 捕获、保存、读取流量

# 捕获并保存流量
tcpdump -i eth0 -w test.cap# 读取保存的流量文件
tcpdump -r capture.pcap

5.2 捕获指定长度数据包

tcpdump -i eth0 -s 1500

5.3 捕获特定时间段的流量

# 在10秒后停止捕获 
timeout 10 tcpdump -i eth0

5.4 过滤TCP重传数据包

tcpdump -i any -n -s 0 "tcp[tcpflags] & (tcp-rst|tcp-ack) != 0" -tttt

5.5 过滤TCP重复确认数据包

tcpdump -i any -n -s 0 "tcp[tcpflags] & tcp-ack != 0" -tttt

5.6 资源消耗控制

# 限制内存使用(避免OOM) 
tcpdump -i any -w trace.pcap -W 10 -C 100

6 总结

tcpdump的魅力在于它不仅仅是抓包工具,更是网络协议的显微镜,广泛用于捕获和分析网络流量。它能够捕获网络接口上的数据包,并以可读的格式显示出来,帮助网络管理员和开发人员诊断网络问题、分析协议行为以及排查安全事件!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MindGYM:一个用于增强视觉-语言模型推理能力的合成数据集框架,通过生成自挑战问题来提升模型的多跳推理能力。

2025-03-13&#xff0c;由中山大学和阿里巴巴集团的研究团队提出了MindGYM框架&#xff0c;通过合成自挑战问题来增强视觉-语言模型&#xff08;VLMs&#xff09;的推理能力。MindGYM框架通过生成多跳推理问题和结构化课程训练&#xff0c;显著提升了模型在推理深度和广度上的表…

论文阅读笔记——LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

LoRA 论文 传统全面微调&#xff0c;对每个任务学习的参数与原始模型相同&#xff1a; m a x Φ ∑ ( x , y ) ∈ Z ∑ t 1 ∣ y ∣ l o g ( P Φ ( y t ∣ x , y < t ) ) 式(1) max_{\Phi}\sum_{(x,y)\in Z}\sum^{|y|}_{t1}log(P_{\Phi}(y_t|x,y<t)) \qquad \text{式(…

Umi-OCR 全家桶

介绍&#xff1a; 下载 访问官网地址 https://github.com/hiroi-sora/umi-ocrhttps://github.com/hiroi-sora/umi-ocr 点击下载&#xff08;.exe 文件 安装即可&#xff09; 桌面使用 安装完毕后去安装路径下点击 Umi-OCR.exe &#xff08;默认不会生成桌面的快捷方式&…

oracle中OS BLOCK的含义

在Oracle数据库中&#xff0c;OS BLOCK&#xff08;操作系统数据块&#xff09;是指操作系统层面上的数据块&#xff0c;它与Oracle数据库内部的逻辑存储单元BLOCK&#xff08;数据块&#xff09;有所区别但密切相关。以下是对OS BLOCK的详细解释&#xff1a; 定义与概念 OS BL…

mac部署GPT-SoVITS,生成粤语踩坑点及使用记录

自己录音&#xff0c;普通话或者粤语 注意&#xff1a; 与在其他设备上训练的模型相比&#xff0c;在mac上使用gpu训练的模型的质量明显较低&#xff0c;因此我们暂时使用cpu代替。 Install Xcode command-line tools by running xcode-select --install.Install FFmpeg by …

STM32-SPI通信外设

目录 一&#xff1a;SPI外设简介 SPI框图​编辑 SPI逻辑 ​编辑 主模式全双工连续传输 ​编辑 非连续传输 二&#xff1a;硬件SPI读写W25Q64 1.接线&#xff1a; 2. 代码 SPI外设的初始化 生成时序 一&#xff1a;SPI外设简介 STM32内部集成了硬件SPI收发电路&#…

游戏引擎学习第158天

回顾和今天的计划 我们在这里会实时编码一个完整的游戏&#xff0c;没有使用引擎或库&#xff0c;一切都由我们自己做所有的编程工作&#xff0c;游戏中的每一部分&#xff0c;无论需要做什么&#xff0c;我们都亲自实现&#xff0c;并展示如何完成这些任务。今天&#xff0c;…

指令微调 (Instruction Tuning) 与 Prompt 工程

引言 预训练语言模型 (PLMs) 在通用语言能力方面展现出强大的潜力。然而&#xff0c;如何有效地引导 PLMs 遵循人类指令&#xff0c; 并输出符合人类意图的响应&#xff0c; 成为释放 PLMs 价值的关键挑战。 指令微调 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)

一、实验目的 Python 数据可视化&#xff1a; 1、学习使用 jieba、wordcloud 等类库生成词云图。 2、学习使用 Matplotlib 库进行数据可视化。 Python 聚类-K-means&#xff1a; 1、理解聚类非监督学习方法的基本原理。 2、掌握 Python、numpy、pandas、sklearn 实现聚类…

Linux--git

ok&#xff0c;我们今天来学习如何在Linux上建立链接git 版本控制器Git 不知道你⼯作或学习时&#xff0c;有没有遇到这样的情况&#xff1a;我们在编写各种⽂档时&#xff0c;为了防⽌⽂档丢失&#xff0c;更改 失误&#xff0c;失误后能恢复到原来的版本&#xff0c;不得不…

凸优化算法学习笔记:决策单调性与 wqs二分

文章目录 前言决策单调性单调矩阵&#xff0c;完全单调矩阵&#xff0c;蒙日阵决策单调性优化 d p dp dp线性 d p dp dp分治&#xff08;离线&#xff09;二分队列&#xff08;在线&#xff09;SMAWK 区间 d p dp dp 练习题LOJ6039 w q s wqs wqs 二分&#xff08;蒙日阵最短…

基于YOLOv8深度学习的PCB缺陷检测识别系统【python源码+GUI界面+数据集+训练代码】

目录 一、界面功能展示 二、前言摘要 三、GUI界面演示 &#xff08;一&#xff09;用户加载自定义模型 &#xff08;二&#xff09;单张图像检测 &#xff08;三&#xff09;检测图像文件夹 &#xff08;四&#xff09;检测视频 &#xff08;五&#xff09;保存 四、模…

Matlab 多项式拟合点法线(二维)

文章目录 一、简介二、实现代码三、实现效果一、简介 这个思路其实很简单,假设我们有一组曲线点,我们可以对其拟合曲线并计算其导数来获取每个点的法向量,当然这一思路也可以扩展至三维。具体过程如下所示: 二、实现代码 %% *********

Cesium 入门教程(基于 vue3)

目录 Cesium 介绍&#xff1a; 下载 Cesium&#xff0c;2种路径: 下载成功后&#xff0c;创建 vue3 项目&#xff1a; 编写内容 一个“纯”地球 添加图层 坐标系及其数值转换 相机位置及动态交互 添加物体和3维建筑物 Cesium 介绍&#xff1a; Cesium 是一个开源的 JavaScript …

力扣——合并K个排序链表

题目链接&#xff1a; 链接 题目描述&#xff1a; 思路&#xff1a; 同步合并 已知顺序排列&#xff0c;每个链表的node比较再加进结果&#xff0c;用优先队列方便比较node&#xff0c;可以先把每个链表的头结点加进队列&#xff0c;然后队列头出&#xff0c;出来的头还有n…

可复用表格组件设计与实现:分页、排序、筛选全功能解析

文章目录 一、组件设计思路1.1 功能需求分析1.2 技术选型 二、组件架构设计2.1 组件结构2.2 数据流设计 三、核心代码实现3.1 基础表格组件3.2 状态管理 四、功能模块实现4.1 分页组件4.2 排序控制4.3 筛选控制 五、性能优化方案5.1 虚拟滚动5.2 防抖筛选 六、完整测试方案6.1 …

Unity屏幕适配——立项时设置

项目类型&#xff1a;2D游戏、竖屏、URP 其他类型&#xff0c;部分原理类似。 1、确定设计分辨率&#xff1a;750*1334 为什么是它&#xff1f; 因为它是 iphone8 的尺寸&#xff0c;宽高比适中。 方便后续适配到真机的 “更长屏” 或 “更宽屏” 2、在场景…

PawSQL for TDSQL:腾讯云TDSQL数据库性能优化全攻略

TDSQL 作为腾讯云推出的分布式数据库&#xff0c;凭借其高扩展性、高可用性和高性能等优势&#xff0c;广泛应用于金融、互联网、政务等领域。随着业务的不断增长和数据量的爆炸式增长&#xff0c;如何优化 TDSQL 数据库的性能&#xff0c;成为众多企业和开发者面临的挑战。本文…

机器学习(七)

一&#xff0c;监督学习和无监督学习聚类的数据集比较&#xff1a; 监督学习&#xff1a; 数据集包括输入的数据和与之对应的标签 无监督学习&#xff1a; 数据集仅含有输入的数据&#xff0c;要求算法自己通过所给的数据集来确定决策边界 二&#xff0c;聚类(Clustering): 聚…

海鲜水产行业wordpress外贸主题

模板采用清新的海洋风格设计&#xff0c;完美契合水产和海鲜行业的特点&#xff0c;让您的网站在众多竞争者中脱颖而出。 高质量的图片展示区域&#xff0c;让您可以展示新鲜捕捞的海鲜产品&#xff0c;吸引客户的注意力。 多功能性&#xff0c;满足业务需求&#xff1a; 模…