Wireshark 简介
Wireshark 是一个免费开源的网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据。
使用目的
- 网络管理员使用 Wireshark 来检测网络问题
- 网络安全工程师使用 Wireshark 来检查信息安全相关问题
- 开发者使用 Wireshark 来为新的通信协议调试
- 普通用户使用 Wireshark 来学习网络协议的相关知识
软件界面
建立计算机与网络的连接后,可以看到下图所示界面,主要分为四部分内容:显示过滤器、封包列表、封包详细信息、16 进制数据。
封包列表中各栏所显示的内容含义如下图所示。
可以发现,一些行文字的底色不同。不同报文采用不同的颜色来区分。
在封包相详细信息中,我们可以看到:
- Frame:「物理层」数据帧情况。
- Ethernet:「数据链路层」以太网头部信息。
- Internet Protocol Version 4:「网络层」数据包头部信息。
- Transmission Control Protocol:「传输层」数据段头部信息。
- Hypertext Transfer Protocol:「应用层」信息。
下面主要讲解使用 Wireshark 对网络层以及传输层的数据分析方法。
数据分析
网络层
地址解析协议 ARP
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
其简易原理如下图所示。
输入ARP进行筛选,得到一组数据包:
Who has 10.171.32.1? Tell 10.171.34.11
10.171.32.1 is at 28:6e:d4:44:20:4f
ARP 请求
ARP 响应
互联网协议 IPv4
以 www.baidu.com 为例,打开命令行 Ping 百度。
在 Wireshark 中,我们可以看到一共抓取了 8 个数据包,与命令行显示的数量一致,分别为双方的请求与应答。
其详细内容如下图所示。
传输层
以浙大校论坛 CC98为例。打开浏览器,输入网址:www.cc98.org。
TCP 包的具体内容
TCP 的三次握手
10.10.98.98 为 CC98 的 IP 地址,222.205.87.180 为本地 IP 地址。
第一次握手
客户端发送一个 TCP,标志位为 SYN,序列号为 0,客户端请求建立连接。
第二次握手
服务器发回确认包,标志位为 SYN,ACK,将确认序号设置为客户的 ISN 加 1。
第三次握手
客户端再次发送确认包,SYN 标志位为 0,ACK 标志位为 1,将服务器发来的 ACK 序号字段加 1,放在确定字段中发送给对方。
报文分析
设置过滤条件:
http and ip.addr==10.10.98.98 and tcp.port==80
得到两个数据包,分别为 HTTP 请求和 HTTP 响应。
打开追踪 TCP 流的详细信息界面。
请求报文分析:
响应报文分析:
TCP 链接释放
总结
Wireshark 作为一款网络分析工具,功能很强大,当然也有一些不法分子利用这一类的网络分析工具获取接入同一网络的用户的个人信息,入侵你的通信设备。我接触到这个工具是源于本学期上的一门专业选修课程「数据通信与计算机网络」的实验。通过 Wireshark,我对网络通信的知识有了深入的理解,因此我认为 Wireshark 是一个学习计算机网络通信原理的利器。