当前位置: 首页 > news >正文

TCPdump使用教程

一. 安装 TCPDump

在 CentOS 中安装 TCPDump 非常简单。

安装 TCPDump:

yum install tcpdump -y

安装完成后,你可以通过输入tcpdump来验证安装是否成功:

tcpdump --version

二. 常用参数

参数

描述

-a

尝试将网络和广播地址转换成名称。

-A

以 ASCII 码方式显示每一个数据包 (去除链路层头后),方便查看应用层的数据。

-b

在 ARPA Internet 协议上同时显示数据包匹配和数据链路层头。

-B

设置操作系统捕获缓冲区大小。

-c

收到指定的数据包数目后,TCPDump 就会停止。

-C

在保存数据包之前检查文件大小,如果超过指定大小则新建文件。

-d

将编译过的数据包匹配代码以人们能够理解的汇编格式输出。

-dd

以 C 语言形式输出数据包匹配代码。

-ddd

以十进制数形式输出数据包匹配代码。

-D

列出可用于抓包的接口。

-e

在输出行打印出数据链路层头部信息。

-E

指定解密 IPSEC 流量的方法。

-f

将外部的 Internet 地址以数字形式打印出来。

-F

使用文件作为过滤表达式的输入,忽略命令行上的表达式。

-G

如果文件名可以被时间戳替换,允许单个文件保存多个抓包结果。

-h

获取 TCPDump 的帮助信息。

-H

尝试检测 802.11s 草案网状网络。

-i

监听指定的网络接口。

-I

将网络接口置于无监控模式,用于 802.11 无线网络。

-j

设置抓包的时间戳类型为“jiffies”。

-J

列出支持的时间戳类型。

-k

显示数据包时强制显示时间戳。

-K

不验证 IP、TCP 或 UDP 校验和。

-L

列出网络接口的已知数据链路类型。

-m

从文件模块中加载 SMI MIB 模块定义。

-M

如果可能,使用指定的共享库或本地的办法来快速缓存会话密钥。

-n

不把网络地址转换成名字。

-N

不打印主机名的域名限定,如hostname.localdomain。

-O

不运行数据包匹配代码优化器,如果怀疑优化器有 bug 可以使用这个选项。

-p

不让网络接口进入混杂模式。

-q

快速输出,打印较少的协议信息,输出行会比较短。

-r

从指定的文件中读取数据包。

-R

设定 TCPDump 的默认历史数据包匹配行为为不匹配。

-s

设置数据包捕获长度。

-S

打印 TCP 的绝对序列号而不是相对序列号。

-t

在输出的每一行不打印时间戳。

-tt

在每一行中输出非格式化的时间戳。

-T

将指定的数据包强制解释为指定的类型。

-U

使-w选项产生的数据包数据文件以packet-buffered方式写入,类似于实时数据流。

-v

输出稍微详细的信息,例如显示 IP 数据包中的生存时间,标识,总长度。

-vv

输出更详细的信息。

-vvv

输出非常详细的信息。

-w

将捕获的数据包直接写入文件而不是显示出来。

-W

限制文件数量。

-x

以十六进制和 ASCII 码形式打印出每个数据包 (去掉链路层头部),但不包括连接层。

-X

以十六进制和 ASCII 码形式打印出每个数据包 (去掉链路层头部),也包括连接层。

-Y

使用数据链路层匹配代码,即使这可能导致不正确的分片。

-z

修改各种数据包和文件输出统计的计数器。

-Z

改变用户 ID 或组 ID 到指定的用户或组。

这些选项允许用户根据需要调整 TCPDump 的行为,从而进行更精确的网络数据包捕获和分析。请注意,使用某些选项可能需要特定的权限或系统配置,且不同版本的 TCPDump 可能支持的选项有所不同。

三. 过滤表达式

  1. 基于协议的过滤

    • tcp

      : 过滤 TCP 协议数据包。

    • udp

      : 过滤 UDP 协议数据包。

    • icmp

      : 过滤 ICMP 协议数据包。

    • arp

      : 过滤 ARP 协议数据包。

    • ip

      : 过滤 IP 协议数据包。

    • ether

      : 过滤以太网帧。

    • wlan

      : 过滤无线局域网数据包。

  2. 基于地址的过滤

    • host

      : 过滤特定主机的数据包。例如host 192.168.1.100

    • net

      : 过滤特定网络的数据包。例如net 192.168.1.0/24

    • port

      : 过滤特定端口的数据包。例如port 80

    • src和dst: 分别过滤源地址和目的地址的数据包。例如src 192.168.1.100dst 192.168.1.100
  3. 基于端口的过滤

    • tcp port

      : 过滤特定 TCP 端口的数据包。例如tcp port 80

    • udp port

      : 过滤特定 UDP 端口的数据包。例如udp port 53

  4. 逻辑操作符

    • and

      : 同时满足两个条件。例如host 192.168.1.100 and tcp port 80

    • or

      : 满足任一条件。例如host 192.168.1.100 or host 192.168.1.101

    • not或!: 排除满足条件的数据包。例如not host 192.168.1.100
  5. 基于数据包内容的过滤

    • contains

      : 检查数据包是否包含特定字符串。例如tcp[20:] contains "GET"

    • less

      ,greater: 比较数据包长度。例如less 1500

    • =,!=,>,<: 比较操作符,用于 IP 地址、端口号等。
  6. 基于时间戳的过滤

    • less,greater: 基于时间戳的比较。
  7. 基于MAC地址的过滤

    • ether host

      : 过滤特定 MAC 地址的数据包。例如ether host 00:11:22:33:44:55

  8. 基于VLAN的过滤

    • vlan

      : 过滤特定 VLAN 的数据包。例如vlan 10

  9. 基于TCP标志的过滤

    • tcp flags

      : 基于 TCP 标志位过滤。例如tcp[tcpflags] & tcp-syn != 0

  10. 基于IP选项的过滤

    • ip options

      : 基于 IP 选项过滤。

这些过滤方式可以组合使用,以实现更复杂的过滤逻辑。

例如,tcpdumphost 192.168.1.100 and tcp port 80将捕获来自或发往192.168.1.100且端口为 80 的 TCP 数据包。通过灵活运用这些过滤表达式,可以有效地捕获和分析网络中的特定流量。

四、实例

1. 捕获特定主机的所有流量

tcpdump host 192.168.1.100

这个命令将捕获所有源或目的地址为192.168.1.100的数据包。

2. 捕获特定端口的流量

tcpdump port 80

这个命令将捕获所有端口为 80(通常是 HTTP 服务)的数据包。

3. 捕获特定协议的流量

tcpdump tcp

这个命令将捕获所有 TCP 协议的数据包。

4. 捕获特定网络的流量

tcpdump net 192.168.1.0/24

这个命令将捕获所有源或目的地址在192.168.1.0/24网络范围内的数据包。

5. 捕获源地址或目的地址为特定主机的流量

tcpdump src or dst host 192.168.1.100

这个命令将捕获源或目的地址为192.168.1.100的数据包

6. 捕获特定端口和主机的流量

tcpdump src host 192.168.1.100 and port 80

这个命令将捕获源地址为192.168.1.100且端口为 80 的数据包。

7. 捕获特定 MAC 地址的流量

tcpdump ether host 00:11:22:33:44:55

这个命令将捕获源或目的 MAC 地址为00:11:22:33:44:55的数据包

8. 捕获特定 VLAN 的流量

tcpdump vlan 10

这个命令将捕获 VLAN ID 为 10 的数据包

9. 捕获特定 TCP 标志位的流量

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

这个命令将捕获带有 SYN 或 ACK 标志位的 TCP 数据包

10. 捕获 HTTP GET 请求

tcpdump -nn -vv -X 'tcp[20:] matches "^GET |^Host: "

这个命令将捕获包含 "GET " 或 "Host: " 字符串的 HTTP 请求数据包,并以十六进制和 ASCII 码形式显示数据包内容

11. 捕获并保存数据包到文件

tcpdump -w capture.pcap

这个命令将捕获所有数据包并保存到名为capture.pcap的文件中,以便后续分析。

12. 从保存的文件中读取数据包

tcpdump -r capture.pcap

这个命令将从capture.pcap文件中读取并显示数据包。

13. 捕获特定时间范围内的数据包

tcpdump -G 3600 -W 1 -w capture -C 200

这个命令将每小时创建一个新的数据包文件,每个文件大小不超过 200MB,最多保留一个文件。

14. 捕获特定 TCP 端口的 SYN 数据包

tcpdump 'tcp[tcpflags] & tcp-syn != 0 and tcp port 80'

这个命令将捕获端口 80 上的 TCP SYN 数据包。

OSI层核心功能TCP/IP对应层
应用层用户接口(HTTP/FTP)应用层
表示层数据加密/压缩(整合至应用层)
会话层会话管理(整合至应用层)
传输层端到端传输(TCP/UDP)传输层
网络层路由寻址(IP)网络层
数据链路层帧传输(Ethernet)网络接口层
物理层比特流传输网络接口层
http://www.jsqmd.com/news/463494/

相关文章:

  • 常见的视频接口
  • 逆向工程
  • Redis主从复制(面试版 - 说人话)
  • verl微调策略实战:特定领域知识注入部署方法
  • Miniconda-Python3.9故障排查:常见错误日志解读与修复
  • CosyVoice2-0.5B二次开发:WebUI定制修改入门教程
  • 2.使用ChatGPT辅助竞品分析与市场调研
  • 2025年度总结——一直在路上
  • mqtt接入事件回调测试
  • 公共安全预警系统:异常声音(哭声/尖叫)实时检测方案
  • Android8 Didn‘t find class “com.android.settings.SettingsApplication“ on path: DexPathList
  • sqlilabs靶场搭建与sql语句
  • 我的思维模型 - 9. 个人篇
  • 一站式基建集成——SFTP 服务器管理工具
  • 麦橘超然参数详解:提示词、种子、步数优化实战指南
  • 豆包 力扣 761. 特殊的二进制字符串 public String makeLargestSpecial(String s)
  • 人工智能|大模型—— 开发 ——Agent Skills设计详解
  • 从 0 到 1 安装 TRAE:国内 / 国际版双流程指南
  • webpack 学习
  • 文本处理的 CI/CD:用 NLP 静态分析解决查重飘红与 Format Error
  • 弦音墨影效果实测:Qwen2.5-VL在弱光、逆光、雾天监控视频中的鲁棒性
  • OFA视觉问答模型镜像优势:永久禁用MODELSCOPE_AUTO_INSTALL_DEPENDENCY机制解析
  • FreeRtos学习中疑惑
  • 电子游戏与人类“存续与复制”的近端机制
  • Makefile相关
  • 为什么选择科哥构建版?IndexTTS2定制镜像优势全面解析
  • C语言数据结构系列:链表详解与代码示例
  • 【2026 最新 !】分享一套优质的 SpringBoot+Vue 高校就业招聘系统的设计与实现(万字文档+源码+视频文档讲解)
  • 线程同步与互斥
  • webase部署智能合约失败报错:合约部署错误,请检查合约的构造函数入参或检查链状态...如何解决?