详解tcpdump

tcpdump 是一个强大的命令行网络分析工具,用于抓取和分析网络流量。下面是 tcpdump 的常用参数及其详细说明,包含抓取所有网络接口的方法和 -S 参数的作用。

基础参数

  1. -i <interface>

    指定要监听的网络接口。如果你希望抓取所有接口的流量,可以使用 -i any

    复制代码
    sudo tcpdump -i any
    • any 表示抓取所有可用接口的流量。

    • 示例 :监控特定接口 eth0

      复制代码
      sudo tcpdump -i eth0
  2. -c <count>

    指定抓取的数据包数量,达到指定数量后自动停止抓取。

    复制代码
    sudo tcpdump -c 10
    • 示例 :只抓取 5 个数据包:

      复制代码
      sudo tcpdump -i eth0 -c 5
  3. -w <file>

    将抓取到的数据包保存到指定文件中,通常为 .pcap 格式,便于后续分析。

    复制代码
    sudo tcpdump -i eth0 -w capture.pcap
    • 示例 :保存数据包到 capture.pcap 文件中:

      复制代码
      sudo tcpdump -i eth0 -c 100 -w capture.pcap
  4. -r <file>

    从已保存的 .pcap 文件读取数据包并显示其内容。

    复制代码
    tcpdump -r capture.pcap
  5. -v, -vv, -vvv

    增加输出的详细程度。使用 -v 会提供更多的信息,-vv-vvv 进一步增加输出的详细程度。

    复制代码
    sudo tcpdump -i eth0 -v
  6. -n

    禁止将 IP 地址解析为域名,直接显示 IP 地址,以减少 DNS 解析带来的延迟。

    复制代码
    sudo tcpdump -i eth0 -n
  7. -nn

    禁止将 IP 地址解析为域名和将端口解析为服务名,所有信息均以数字形式显示。

    复制代码
    sudo tcpdump -i eth0 -nn
  8. -A

    以 ASCII 格式显示数据包的内容,适合查看基于文本协议(如 HTTP)的流量。

    复制代码
    sudo tcpdump -i eth0 -A
  9. -X

    以十六进制和 ASCII 格式显示数据包的内容,适合深入分析数据包。

    复制代码
    sudo tcpdump -i eth0 -X
  10. -s <snaplen>

    指定抓取数据包的长度。默认长度为 68 字节,使用 -s 0 可以捕获完整数据包。

    复制代码
    sudo tcpdump -s 0
  11. -S

    显示绝对序列号,而不是相对序列号。这在分析 TCP 流量时非常有用,因为可以更清楚地看到数据流的绝对序列号。

    复制代码
    sudo tcpdump -i eth0 -S

高级过滤器

  1. 指定协议

    过滤特定协议的数据包。

    • 抓取 TCP 数据包

      复制代码
      sudo tcpdump -i eth0 tcp
    • 抓取 UDP 数据包

      复制代码
      sudo tcpdump -i eth0 udp
  2. 指定端口

    使用端口号过滤数据包。

    • 抓取 HTTP 流量(80 端口)

      复制代码
      sudo tcpdump -i eth0 port 80
    • 抓取多个端口(如 80 和 443)的数据包

      复制代码
      sudo tcpdump -i eth0 port 80 or port 443
  3. 指定 IP 地址

    使用 hostsrcdst 过滤基于 IP 地址的数据包。

    • 抓取特定 IP 地址的数据包

      复制代码
      sudo tcpdump -i eth0 host 192.168.1.100
    • 抓取源 IP 为 192.168.1.100 的数据包

      复制代码
      sudo tcpdump -i eth0 src 192.168.1.100
    • 抓取目标 IP 为 192.168.1.100 的数据包

      复制代码
      sudo tcpdump -i eth0 dst 192.168.1.100
  4. 逻辑运算符

    结合多个过滤条件使用 andornot 进行复杂过滤。

    • 抓取 TCP 协议并且源 IP 为 192.168.1.100 的数据包

      复制代码
      sudo tcpdump -i eth0 tcp and src 192.168.1.100
    • 抓取源 IP 不是 192.168.1.100 的数据包

      复制代码
      sudo tcpdump -i eth0 not src 192.168.1.100

抓取 HTTPS 流量

如果想抓取 HTTPS 流量(通常基于 TCP 443 端口),可以使用以下命令:

复制代码
sudo tcpdump -i eth0 port 443

注意:HTTPS 流量是加密的,无法直接查看内容。

示例

  1. 抓取所有接口的流量

    复制代码
    sudo tcpdump -i any
  2. 抓取所有来自 192.168.1.100 的 TCP 数据包

    复制代码
    sudo tcpdump -i eth0 tcp and src 192.168.1.100
  3. 抓取特定端口(如 80 和 443)的流量

    复制代码
    sudo tcpdump -i eth0 port 80 or port 443
  4. 使用 tcpdump 实时分析 HTTP 请求

    复制代码
    sudo tcpdump -i eth0 -A port 80

总结

tcpdump 是一个功能强大的网络抓包工具,提供了丰富的参数和选项,使得网络流量分析变得灵活高效。了解并熟练使用这些参数可以帮助你有效地抓包和分析网络流量,特别是在调试网络问题和性能瓶颈时。

相关推荐
qq_433502185 分钟前
Codex cli 飞书文档创建进阶实用命令 + Skill 创建&使用 小白完整教程
java·前端·飞书
IT_陈寒11 分钟前
为什么我的Vite热更新老是重新加载整个页面?
前端·人工智能·后端
还在忙碌的吴小二29 分钟前
Harness 最佳实践:Java Spring Boot 项目落地 OpenSpec + Claude Code
java·开发语言·spring boot·后端·spring
liliangcsdn29 分钟前
mstsc不在“C:\Windows\System32“下在C:\windows\WinSxS\anmd64xxx“问题分析
开发语言·windows
一袋米扛几楼9829 分钟前
【网络安全】SIEM -Security Information and Event Management 工具是什么?
前端·安全·web安全
小陈工41 分钟前
2026年4月7日技术资讯洞察:下一代数据库融合、AI基础设施竞赛与异步编程实战
开发语言·前端·数据库·人工智能·python
KAU的云实验台43 分钟前
【算法精解】AIR期刊算法IAGWO:引入速度概念与逆多元二次权重,可应对高维/工程问题(附Matlab源码)
开发语言·算法·matlab
Cobyte1 小时前
3.响应式系统基础:从发布订阅模式的角度理解 Vue2 的数据响应式原理
前端·javascript·vue.js
会编程的土豆1 小时前
【数据结构与算法】再次全面了解LCS底层
开发语言·数据结构·c++·算法