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

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

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

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

相关文章

【Linux我做主】基础命令完全指南上篇

Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…

学习单片机需要多长时间才能进行简单的项目开发?

之前有老铁问我&#xff0c;学单片机到底要多久&#xff0c;才能进行简单的项目开发&#xff1f;是三个月速成&#xff0c;还是三年磨一剑&#xff1f; 今天咱们就来聊聊这个话题&#xff0c;我不是什么高高在上的专家&#xff0c;就是个踩过无数坑、烧过几块板子的“技术老友”…

微软开源神器OmniParser V2.0 介绍

微软开源的OmniParser V2.0是一款基于纯视觉技术的GUI智能体解析工具&#xff0c;旨在将用户界面&#xff08;UI&#xff09;截图转换为结构化数据&#xff0c;从而实现对计算机屏幕上的可交互元素的高效识别和操控。这一工具通过结合先进的视觉解析技术和大型语言模型&#xf…

在线 SQL 转 Flask-SQLAlchemy

在线 SQL 转 Flask-SQLAlchemy 工具&#xff0c;自动解析 SQL 语句并生成标准的 Flask ORM 代码。支持数据库表结构快速映射&#xff0c;简化 Flask 后端开发&#xff0c;减少手写 SQLAlchemy 代码。适用于 API 开发、数据建模和数据库管理&#xff0c;让 Flask 项目的 ORM 处理…

探索可变参数提升不变学习以增强分布外泛化能力

探索可变参数提升不变学习以增强分布外泛化能力 https://arxiv.org/abs/2310.16391 论文核心原理解析 核心问题:如何在存在分布噪声的情况下,学习对分布变化鲁棒的模型? 1. 关键挑战 分布外(OOD)泛化:模型需适应未见过的分布,但传统方法易受分布特异性特征干扰。彩票…

对最近的刷题做一个小总结(关于动态规划和贪心)

文章目录 1. 小总结2. 两道算法题2.1 数组中两个字符串的最小距离2.2 孩子们的游戏 1. 小总结 最近刷了很多算法题&#xff0c;真正了解到的算法应是dfs&#xff0c;多元dfs&#xff0c;以及动态规划和贪心。 dfs和多元dfs目前并没有真正深入研究过&#xff0c;不过熟悉套路之…

C语言的机器学习

C语言的机器学习 前言 机器学习&#xff0c;是人工智能领域的一个重要分支&#xff0c;它使计算机能够通过经验自动改进性能。在过去的几十年里&#xff0c;机器学习技术得到了广泛的应用&#xff0c;从自然语言处理到计算机视觉&#xff0c;再到推荐系统等&#xff0c;几乎无…

AI驱动的三维创作革命:Claude与Blender深度融合的架构解析与实践路径

一、技术范式创新&#xff1a;从自然语言到三维空间的语义映射 Claude-MCP框架通过多模态语义解析引擎实现了自然语言到三维操作的精准转换&#xff0c;其核心技术突破体现在三个维度&#xff1a; ​抽象概念量化模型 系统内置风格语义向量库&#xff0c;可将"复古风格&q…