网络抓包神器:tcpdump 的常用技巧

在日常开发和运维中,我们经常会遇到一些疑难杂症🤯 :

  • 数据明明发出去了,对方却说没收到
  • 程序已经跑起来了,数据却不对

这时候,抓包就是排查问题的利器,你可能会说,可以用Wireshark

没错,而且我也写过一篇介绍的文章:

但是,在嵌入式环境下,我们往往用不了Wireshark ,此时 tcpdump 才是我们最得力的助手。

它是 Linux 下最轻量、最常用的抓包工具。

今天我们就来介绍下 tcpdump,掌握几个最常用的技巧,下次遇到网络问题时就不会一脸蒙圈了。🚀

✨ 基本用法

最常见的命令格式是:

tcpdump [选项] [过滤表达式]

👉 举个例子,抓取 eth0 网卡上的所有包:

tcpdump -i eth0

这里的 -i 就是指定网卡的意思。

⚡ 必备参数

平时使用时,以下几个参数可以说是“必带”的:

  • -nn 👉 不做名字解析,IP 和端口号直接显示数字(更快、更清晰)
  • -s 0 👉 抓完整包(默认可能只截取部分数据)
  • -vv 👉 输出更详细的信息(-v/-vvv 越多越详细)
  • -l 👉 立即刷新输出,不用傻等半天才看到结果

例如:

tcpdump -i eth0 -nn -vv -s 0 -l

这就是一条 “万能调试命令”,几乎所有场景都能用。😎

🔍 过滤表达式

tcpdump 的过滤能力非常强大,下面是一些常用的过滤方式:

1. 按主机过滤

tcpdump host 192.168.1.100
tcpdump src host 192.168.1.100
tcpdump dst host 192.168.1.200

2. 按端口过滤

tcpdump port 80
tcpdump src port 123
tcpdump dst port 22

3. 按协议过滤

tcpdump tcp
tcpdump udp

4. 组合条件

tcpdump src host 192.168.1.100 and dst port 80
tcpdump port 80 or port 443

📦 抓包结果的处理

有时候包太多,直接在终端里看会眼花。tcpdump 支持直接把数据保存到文件,再用 Wireshark 分析:

tcpdump -i eth0 -w out.pcap

如果要读取文件:

tcpdump -r out.pcap

👀 常见场景举例

  • 抓取指定端口的 UDP 包
tcpdump -i eth1 udp port 9500
  • 抓取 gPTP 报文(以太网协议号 0x88f7)
tcpdump -i eth0 ether proto 0x88f7

🚦 使用小贴士

  1. 实时观察时加 -l,避免长时间没输出,经常配合grep使用。
  2. 不确定流量在哪个端口时,先抓大范围(比如 udp),再缩小范围。
  3. 要做深度分析时,使用 -s 0 -w file.pcap保存数据,然后用 Wireshark 打开。

🎯 总结

tcpdump 就像一把锋利的小刀 ✂️,轻便却强大。记住几个常用选项(-nn -vv -s 0 -l),掌握常用的过滤表达式,你就能快速定位大多数网络问题。

下次再遇到网络相关的问题,直接 tcpdump 开干吧!💪

本文首发于微信公众号《Linux在秋名山》,欢迎大家关注~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux在秋名山

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值