网络数据包分析领域非常广泛,可以成为整套课程和书籍的主题。本课程将介绍基础知识。数据包分析涉及捕获和检查在网络上传输的数据。它是网络故障排除、性能调整和安全分析的基本技能。通过检查单个数据包,您可以深入了解网络底层正在发生的事情。
流行的数据包分析工具
有两种非常流行的数据包分析工具: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 格式检查数据包内容。无数的在线资源可以帮助您掌握网络数据包分析工具,我们鼓励您继续学习之旅。