开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情
引言
纸上得来终觉浅要想加深对网络协议的理解通常还是需要能够直观的看到协议的运行以及能够对协议进行实践。本篇文章接下来会通过使用 Wireshark 观察两个实体之间交换消息的序列,深入协议操作的细节并执行一些协议的操作,然后对其运行过程和结果进行观察来对网络协议进行实战。
Packet sniffer
Wireshark 是用于观察执行协议实体之间交换的消息的数据包嗅探器(packet sniffer)。数据包嗅探器接收从计算机上执行的应用程序和协议发送/接收的数据包的副本,其结构如图所示:
虚线框则是 数据包探测器 packet sniffer由两部分组成:
-
packet capture library
接收从您的计算机发送或接收的每个链路层帧的副本。根据计算机网络的协议栈由更高层协议(如 HTTP、FTP、TCP、UDP、DNS 或 IP)交换的消息最终都封装在链路层帧中,这些帧通过以太网电缆等物理介质传输。因此,捕获所有链路层帧可以提供从计算机中执行的所有协议和应用程序发送/接收的所有消息。
-
packet analyzer
包解析器显示协议消息中所有字段的内容。为此,数据包解析器必须“理解”协议交换的所有消息的结构。数据包分析器了解以太网帧的格式,因此可以识别以太网帧中的 IP 数据报。它还了解 IP 数据报格式,以便它可以提取 IP 数据报中的 TCP 段。最后,它了解TCP段结构,因此它可以提取TCP段中包含的HTTP消息。
运行 Wireshark
下载地址
可以通过 Wireshark · Download 地址对 Wireshark 进行下载
启动 Wireshark
注意不同版本、不同操作系统的 Wireshark 拥有不同样式的启动界面,因此如果打开 Wiresharks 发现不一致是正常的。
捕获界面
当我们选中第一个 Wi-Fi:en0 的网络接口,就展示如下的界面,分为五部分:
- 菜单按钮模块,可以启动、停止、保存捕获的数据
- 数据包列表窗口,显示捕获的每个数据包的单行摘要包含端口、捕获时间、源地址、目的地址、协议等信息
- 数据包标头详细信息窗口,提供有关在数据包列表窗口中选择(突出显示)的数据包的详细信息。
- 数据包内容窗口,以 ASCII 和十六进制格式显示捕获帧的全部内容。
- 数据包显示过滤器,可以在其中输入协议名称或其他信息,以便过滤数据包列表窗口(以及数据包标头和数据包内容窗口)中显示的信息。