5. 数据包分析

网络数据包分析领域非常广泛,可以成为整套课程和书籍的主题。本课程将介绍基础知识。数据包分析涉及捕获和检查在网络上传输的数据。它是网络故障排除、性能调整和安全分析的基本技能。通过检查单个数据包,您可以深入了解网络底层正在发生的事情。

流行的数据包分析工具

有两种非常流行的数据包分析工具:Wireshark 和 tcpdump。它们都是强大的数据包分析应用程序,可以扫描您的网络接口、捕获数据包活动并解析数据以供检查。它们使我们能够深入研究网络分析的细节。我们将使用 tcpdump 追求其命令行简洁性,但如果您打算深入研究网络数据包分析,强烈建议探索 Wireshark 的图形用户界面。

安装 tcpdump

在基于 Debian 的系统(如 Ubuntu)上,您可以使用以下命令安装 tcpdump:

sudo apt install tcpdump

捕获实时数据包数据

要开始在特定接口上捕获数据,请使用 -i 标志,后跟接口名称。

pete@icebox:~$ sudo tcpdump -i wlan0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:28:23.958840 IP icebox.lan > nuq04s29-in-f4.1e100.net: ICMP echo request, id 1901, seq 2, length 64
11:28:23.970928 IP nuq04s29-in-f4.1e100.net > icebox.lan: ICMP echo reply, id 1901, seq 2, length 64
11:28:24.960464 IP icebox.lan > nuq04s29-in-f4.1e100.net: ICMP echo request, id 1901, seq 3, length 64
11:28:24.979299 IP nuq04s29-in-f4.1e100.net > icebox.lan: ICMP echo reply, id 1901, seq 3, length 64
11:28:25.961869 IP icebox.lan > nuq04s29-in-f4.1e100.net: ICMP echo request, id 1901, seq 4, length 64
11:28:25.976176 IP nuq04s29-in-f4.1e100.net > icebox.lan: ICMP echo reply, id 1901, seq 4, length 64
11:28:26.963667 IP icebox.lan > nuq04s29-in-f4.1e100.net: ICMP echo request, id 1901, seq 5, length 64
11:28:26.976137 IP nuq04s29-in-f4.1e100.net > icebox.lan: ICMP echo reply, id 1901, seq 5, length 64
11:28:30.674953 ARP, Request who-has 172.254.1.0 tell ThePickleParty.lan, length 28
11:28:31.190665 IP ThePickleParty.lan.51056 > 192.168.86.255.rfe: UDP, length 306

当您运行数据包捕获时,您会注意到很多活动,这对于持续的后台网络流量来说是正常的。上面的示例显示了在 ping www.google.com 时捕获的片段。

解读 tcpdump 输出

让我们分解一下捕获中的一行:

11:28:23.958840 IP icebox.lan > nuq04s29-in-f4.1e100.net: ICMP echo request, id 1901, seq 2, length 64
  • 时间戳:第一个字段(11:28:23.958840)显示捕获数据包的时间。
  • 协议IP 表示网络层协议。
  • 源和目标icebox.lan > nuq04s29-in-f4.1e100.net 显示数据包的来源和目标。
  • 特定于协议的信息:该行的其余部分包含特定于协议的详细信息。对于此 ICMP 数据包:
    • seq:数据包的序列号。
    • length:数据包的长度(以字节为单位)。

正如您所见,我们的机器发送了一个 ICMP 回显请求并收到了一个 ICMP 回显应答。不同的协议将显示不同的信息,因此请参阅手册页以获取更多详细信息。

保存捕获以供日后分析

您可以不查看实时流量,而是使用 -w 标志将捕获内容保存到文件中。这对于更深入的离线数据包分析非常有用。

sudo tcpdump -w /some/file.pcap

我们才刚刚开始接触数据包分析。还有很多内容有待探索,包括高级过滤以及以十六进制和 ASCII 格式检查数据包内容。无数的在线资源可以帮助您掌握网络数据包分析工具,我们鼓励您继续学习之旅。

登录以保存您的学习进度

登录

练习

为了巩固您对数据包分析的理解,请尝试此上机实验。熟能生巧!

  1. 在 Linux 中使用 tcpdump 分析以太网帧 - 练习使用 tcpdump 捕获和检查以太网帧、生成流量以及分析帧头和 MAC 地址。

此实验将帮助您在现实场景中应用数据包分析的概念,并增强网络故障排除的信心。

测验

用于捕获特定接口的 tcpdump 标志是什么?请仅使用所需的英文标志回答。答案区分大小写。