1、1实 验 4: 利 用 Wireshark 进 行 协 议 分 析1、 实 验 目 的熟 悉 并 掌 握 Wireshark 的 基 本 操 作 , 了 解 网 络 协 议 实 体 间 进 行 交 互 以及 报 文 交 换 的情 况 。2、 实 验 环 境Windows 9x/NT/2000/XP/2003与因特网连接的计算机网络系统分组分析器 Wireshark:要深入理解网络协议,需要仔细观察协议实体之间交换的报文序列。为探究协议操作细节,可使协议实体执行某些动作,观察这些动作及其影响。这些任务可以在仿真环境下或在如因特网这样的真实网络环境中完成。观察在正在运行协议实体间交换报文的基本工具
2、被称为分组嗅探器(packet sniffer) 。顾名思义,一个分组嗅探器俘获(嗅探)计算机发送和接收的报文。一般情况下,分组嗅探器将存储和显示出被俘获报文的各协议头部字段的内容。图 4-1 为一个分组嗅探器的结构。图 4-1 右边是计算机上正常运行的协议(在这里是因特网协议)和应用程序(如:web 浏览器和 ftp 客户端) 。分组嗅探器(虚线框中的部分)是附加计算机普通软件上的,主要有两部分组成。分组俘获库(packetcapture library)接收计算机发送和接收的每一个链路层帧的拷贝。高层协议(如:HTTP、FTP、TCP 、UDP、DNS、IP 等)交换的报文都被封装在链路层
3、帧中,并沿着物理媒体(如以太网的电缆)传输。图 1 假设所使用的物理媒体是以太网,上层协议的报文最终封装在以太网帧中。分组嗅探器的第二个组成部分是分析器。分析器用来显示协议报文所有字段的内容。为此,分析器必须能够理解协议所交换的所有报文的结构。例如:我们要显示图 4-1 中 HTTP 协议所交换的报文的各个字段。分组分析器理解以太网帧格式,能够识别包含在帧中的 IP 数据报。分组分析器也要理解 IP 数据报的格式,并能从 IP 数据报中提取出 TCP 报文段。然后,它需要理解 TCP 报文段,并能够从中提取出 HTTP 消息。最后,它需要理解 HTTP 消息。图 4-1 分组嗅探器的结构2Wi
4、reshark 是一种可以运行在 Windows, UNIX, Linux 等操作系统上的 分 组 分 析 器 。 运行 Wireshark 程序时,其图形用户界面如图 4-2 所示。最初,各窗口中并无数据显示。在用户选择接口,点击开始抓包按钮之后,Wireshark 的用户界面会变成如图 4-3 所示。此时 Wireshark 的用户界面主要有 5 部分组成,如图 4-3 所示。 命令菜单(command menus):命令菜单位于窗口的最顶部,是标准的下拉式菜单。最常用菜单命令有两个:File、Capture。File 菜单允许你保存俘获的分组数据或打开一个已被保存的俘获分组数据文件或退出
5、 Wireshark 程序。Capture 菜单允许你开始俘获分组。 俘获分组列表( listing of captured packets):按行显示已被俘获的分组内容,其中图 4-2 Wireshark 初始用户界面图 4-3 Wireshark 的用户界面3包括:Wireshark 赋予的分组序号、俘获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。单击某一列的列名,可以使分组按指定列进行排序。在该列表中,所显示的协议类型是 发 送 或 接 收 分 组 的 最 高 层 协 议 的 类 型 。 分组头部明细( details of selected packet hea
6、der):显示俘获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的 IP 数据报有关的信息。单击以太网帧或 IP 数据报所在行左边的向右或向下的箭头可以展开或最小化相关信息。另外,如果利用 TCP 或 UDP 承载分组, Wireshark 也会显示 TCP 或 UDP 协议头部信息。最后,分组最高层协议的头部字段也会显示在此窗口中。 分组内容窗口( packet content):以 ASCII 码和十六进制两种格式显示被俘获帧的完整内容。 显示筛选规则( display filter specification):在该字段中,可以填写协议的名称或其他信
7、息,根据此内容可以对分组列表窗口中的分组进行过滤。3、 实 验 过 程1) 学 习 Wireshark 的 使 用 启动主机上的 web 浏览器。 启动 Wireshark。你会看到如图 4-2 所示的窗口,只是窗口中没有任何分组列表。 开始分组俘获:选择 “capture”下拉菜单中的“Capture Options”命令,会出现如图 4-3 所示的“Wireshark: Capture Options”窗口,可以设置分组俘获的选项。4 在实验中,可以使用窗口中显示的默认值。在“Wireshark: CaptureOptions”窗口(如图 4-4 所示)的最上面有一个“Interface
8、List”下拉菜单,其中显示计算机所具有的网络接口(即网卡) 。当计算机具有多个活动网卡时,需要选择其中一个用来发送或接收分组的网络接口(如某个有线接口) 。随后,单击“Start”开始进行分组俘获,所有由选定网卡发送和接收的分组都将被俘获。 开始分组俘获后,会出现如图 4-5 所示的窗口。该窗口统计显示各类已俘获数据包。在该窗口的工具栏中有一个“stop”按钮,可以停止分组的俘获。但此时你最好不要停止俘获分组。 在运行分组俘获的同时,在浏览器地址栏中输入某网页的 URL,如 : http:/ 。 为 显 示 该 网 页 , 浏 览 器 需 要 连 接 的服务器,并与之交换 HTTP 消息,
9、以下载该网页。包含这些 HTTP 报文的以太网帧将被 Wireshark 俘获。 当完整的页面下载完成后,单击 Wireshark 菜单栏中的 stop 按钮,停止分组俘获。Wireshark 主窗口显示已俘获的你的计算机与其他网络实体交换的所有协议报文,其中一部分就是与 服务器交换的 HTTP 报文。此时主窗口与图 4-3 相似。 在显示筛选规则中输入 “http”,单击“回车”,分组列表窗口将只显示 HTTP 协议报文。 选择分组列表窗口中的第一条 http 报文。它应该是你的计算机发向 服务器的 HTTP GET 报文。当你选择该报文后,以太网帧、IP 数据报、TCP 报文图 4-4
10、 Wireshark 的 Capture Option图 4-5 Wireshark 的抓包界面5段、以及 HTTP 报文首部信息都将显示在分组首部子窗口中。单击分组首部详细信息子窗口中向右和向下箭头,可以最小化帧、以太网、IP、TCP 信息显示量,可以最大化 HTTP 协议相关信息的显示量。2) 利 用 Wireshark 分 析 HTTP 协 议( 1) HTTP GET/response 交 互 启动 Web browser,然后启动 Wireshark 分组嗅探器。在窗口的显示过滤说明处输入“http”,分组列表子窗口中将只显示所俘获到的 HTTP 报文。 开始 Wireshark 分
11、组俘获。 在打开的浏览器窗口中输入以下地址:http:/ 停 止 分 组 俘 获 。根 据 俘 获 窗 口 内 容 , 思 考 以 下 问 题 : 你 的 浏 览 器 运 行 的 是 HTTP1.0, 还 是 HTTP1.1? 你 所 访 问 的 服 务器 所 运 行 HTTP 协 议 的 版 本 号 是 多 少 ? 你 的 浏 览 器 向 服 务 器 指 出 它 能 接 收 何 种 语 言 版 本 的 对 象 ? 你 的 计 算 机 的 IP 地 址 是 多 少 ? 服 务 器 http:/ IP 地 址 是 多 少 ? 从 服 务 器 向 你 的 浏 览 器 返 回 的 状 态 代 码 是
12、 多 少 ?( 2) HTTP 条 件 GET/response 交 互 启 动 浏 览 器 , 清 空 浏 览 器 的 缓 存 ( 在 浏 览 器 中 , 选 择 “工 具 ”菜 单中 的 “Internet 选 项 ”命 令 , 在 出 现 的 对 话 框 中 , 选 择 “删 除 文 件 ”) 。 启 动 Wireshark 分 组 俘 获 器 。 开 始 Wireshark 分 组 俘 获 。 在 浏 览 器 的 地 址 栏 中 输 入 以 下 URL: http:/ 的 浏 览 器 中 重 新 输 入 相 同 的 URL 或 单 击 浏 览 器 中 的 “刷 新 ”按钮 。 停 止
13、Wireshark 分 组 俘 获 , 在 显 示 过 滤 筛 选 说 明 处 输 入 “http”,分 组列 表 子 窗 口 中 将 只 显 示 所 俘 获 到 的 HTTP 报 文 。根 据 俘 获 窗 口 内 容 , 思 考 以 下 问 题 : 分 析 你 的 浏 览 器 向 服 务 器 发 出 的 第 一 个 HTTP GET 请 求 的 内 容 ,在 该 请 求 报 文 中 , 是 否 有 一 行 是 : IF-MODIFIED-SINCE? 分 析 服 务 器 响 应 报 文 的 内 容 , 服 务 器 是 否 明 确 返 回 了 文 件 的 内容 ? 如 何 获 知 ? 分 析
14、你 的 浏 览 器 向 服 务 器 发 出 的 较 晚 的 “HTTP GET”请 求 , 在 该 请6求 报 文 中 是 否 有 一 行 是 : IF-MODIFIED-SINCE? 如 果 有 , 在 该 首部 行 后 面 跟 着 的 信 息 是 什 么 ? 服 务 器 对 较 晚 的 HTTP GET 请 求 的 响 应 中 的 HTTP 状 态 代 码 是 多少 ? 服 务 器 是 否 明 确 返 回 了 文 件 的 内 容 ? 请 解 释 。3) 利 用 Wireshark 分 析 TCP 协 议注 : 访 问 以 下 网 址 需 要 设 置 代 理 服 务 器 。 如 无 法 访
15、问 可 与 实 验 TA 联 系 , 下载 tcp-Wireshark-trace 文 件 , 利 用 该 文 件 进 行 TCP 协 议 分 析 。( 1) 俘 获 大 量 的 由 本 地 主 机 到 远 程 服 务 器 的 TCP 分 组A.启 动 浏 览 器 , 打 开 http:/gaia.cs.umass.edu/Wireshark-labs/alice.txt 网 页 , 得 到ALICES ADVENTURES IN WONDERLAND 文 本 , 将 该 文 件 保 存 到 你 的 主 机 上 。B.打 开 http:/gaia.cs.umass.edu/Wireshark-
16、labs/TCP-Wireshark-file1.html, 如 图 4-6所 示 , 窗 口 如 下 图 所 示 。 在 Browse 按 钮 旁 的 文 本 框 中 输 入 保 存 在 你 的 主 机上 的 文 件 ALICES ADVENTURES INWONDERLAND 的 全 名 ( 含 路 径 ) , 此 时 不 要 按“Upload alice.txt file”按 钮 。C. 启 动 Wireshark, 开 始 分 组 俘 获 。D. 在 浏 览 器 中 , 单 击 “Upload alice.txt file”按 钮 , 将 文 件 上 传 到 gaia.cs.umass
17、.edu 服 务 器 , 一 旦 文 件 上 传 完 毕 , 一 个 简 短 的 贺 词 信 息 将 显 示 在 你 的 浏览 器 窗 口 中 。E. 停 止 俘 获 。( 2) 浏 览 追 踪 信 息在显示筛选 规 则 中 输 入 “tcp”,可以看到在本地主机和服务器之间传 输 的一 系 列 tcp 和 http 报 文 , 你 应 该 能 看 到 包 含 SYN 报 文 的 三 次 握 手 。 也可以看到有 主 机 向 服 务 器 发 送 的 一 个 HTTP POST 报 文 和 一 系 列 的 “http continuation”报 文 。根 据 操 作 思 考 以 下 问 题 :
18、图 4-6 Wireshark-labs 网页截图7 向 gaia.cs.umass.edu 服 务 器 传 送 文 件 的 客 户 端 主 机 的 IP 地 址 和 TCP 端口 号 是 多 少 ? Gaia.cs.umass.edu 服 务 器 的 IP 地 址 是 多 少 ? 对 这 一 连 接 , 它 用 来 发 送 和接 收 TCP 报 文 的 端 口 号 是 多 少 ?( 3) TCP 基 础根 据 操 作 思 考 以 下 问 题 : 客 户 服 务 器 之 间 用 于 初 始 化 TCP 连 接 的 TCP SYN 报 文 段 的 序 号 ( sequence number) 是
19、 多 少 ? 在 该 报 文 段 中 , 是 用 什 么 来 标 示 该 报 文 段 是 SYN 报 文段 的 ? 服 务 器 向 客 户 端 发 送 的 SYNACK 报 文 段 序 号 是 多 少 ? 该 报 文 段 中 , Acknowledgement 字 段 的 值 是 多 少 ? Gaia.cs.umass.edu 服 务 器 是 如 何 决 定 此 值的 ? 在 该 报 文 段 中 , 是 用 什 么 来 标 示 该 报 文 段 是 SYNACK 报 文 段 的 ? 你 能 从 捕 获 的 数 据 包 中 分 析 出 tcp 三 次 握 手 过 程 吗 ? 包 含 HTTP PO
20、ST 命 令 的 TCP 报 文 段 的 序 号 是 多 少 ? 如 果 将 包 含 HTTP POST 命 令 的 TCP 报 文 段 看 作 是 TCP 连 接 上 的 第 一 个报 文 段 , 那 么 该 TCP 连 接 上 的 第 六 个 报 文 段 的 序 号 是 多 少 ? 是 何 时 发 送的 ? 该 报 文 段 所 对 应 的 ACK 是 何 时 接 收 的 ? 前 六 个 TCP 报 文 段 的 长 度 各 是 多 少 ? 在 整 个 跟 踪 过 程 中 , 接 收 端 公 示 的 最 小 的 可 用 缓 存 空 间 是 多 少 ? 限 制 发送 端 的 传 输 以 后 ,
21、接 收 端 的 缓 存 是 否 仍 然 不 够 用 ? 在 跟 踪 文 件 中 是 否 有 重 传 的 报 文 段 ? 进 行 判 断 的 依 据 是 什 么 ? TCP 连 接 的 throughput (bytes transferred per unit time)是 多 少 ? 请 写 出 你的 计 算 过 程 。4) 利 用 Wireshark 分 析 IP 协 议通 过 分 析 执 行 traceroute 程 序 发 送 和 接 收 到 的 IP 数 据 包 , 我 们 将 研 究 IP 数 据 包 的 各 个 字 段 , 并 详 细 研 究 IP 分 片 。( 1) 通 过 执
22、 行 traceroute 执 行 捕 获 数 据 包为 了 产 生 一 系 列 IP 数 据 报 , 我 们 利 用 traceroute 程 序 发 送 具 有 不 同 大 小的 数 据 包 给 目 的 主 机 X。 回 顾 之 前 ICMP 实 验 中 使 用 的 traceroute 程 序 , 源主 机 发 送 的 第 一 个 数 据 包 的 TTL 设 位 1, 第 二 个 为 2, 第 三 个 为 3, 等 等 。 每当 路 由 器 收 到 一 个 包 , 都 会 将 其 TTL 值 减 1。 这 样 , 当 第 n 个 数 据 包 到8达 了 第 n 个 路 由 器 时 , 第
23、 n 个 路 由 器 发 现 该 数 据 包 的 TTL 已 经 过 期 了 。 根据 IP 协 议 的 规 则 , 路 由 器 将 该 数 据 包 丢 弃 并 将 一 个 ICMP 警 告 消 息 送 回源 主 机 。在 Windows 自 带 的 tracert 命 令 不 允 许 用 户 改 变 由 tracert 命 令 发 送 的 ICMP echo 请 求 消 息 ( ping 消 息 ) 的 大 小 。 一 个 更 优 秀 的 traceroute 程 序 是 pingplotter, 下 载 并 安 装 pingplotter。 ICMP echo 请 求 消 息 的 大 小
24、可 以 通 过 下 面方 法 在 pingplotter 中 进 行 设 置 。 Edit-Options-Packet, 然 后 填 写 Packet Size(in bytes, default=56)域 。 实 验 步 骤 :A. 启 动 Wireshark 并 开 始 数 据 包 捕 获B. 启 动 pingplotter 并 “Address to Trace Window”域 中 输 入 目 的 地 址 。在 “# of times to Trace”域 中 输 入 “3”, 这 样 就 不 过 采 集 过 多 的 数 据 。 Edit-Options-Packet, 将 Pack
25、et Size(in bytes,default=56)域 设 为 56, 这 样 将 发送 一 系 列 大 小 为 56 字 节 的 包 。 然 后 按 下 “Trace”按 钮 。 得 到 的 pingplotter窗 口 如 图 4-7 所 示 。A. Edit-Options-Packet, 然 后 将 Packet Size(in bytes,default=56)域 改 为2000, 这 样 将 发 送 一 系 列 大 小 为 2000 字 节 的 包 。 然 后 按 下 “Resume”按钮 。图 4-7 pingplotter 窗口9B. 最 后 , 将 Packet Size
26、(in bytes,default=56)域 改 为 3500, 发 送 一 系 列 大 小为 3500 字 节 的 包 。 然 后 按 下 “Resume”按 钮 。C. 停 止 Wireshark 的 分 组 捕 获 。( 2) 对 捕 获 的 数 据 包 进 行 分 析A.在 你 的 捕 获 窗 口 中 , 应 该 能 看 到 由 你 的 主 机 发 出 的 一 系 列 ICMP Echo Request 包 和中 间 路 由 器 返 回 的 一 系 列 ICMP TTL-exceeded 消 息 。 选 择 第 一 个 你 的 主 机 发 出 的ICMP Echo Request 消
27、息 , 在 packet details 窗 口 展 开 数 据 包 的 Internet Protocol 部 分 ,如 图 4-8 所 示 。思 考 下 列 问 题 : 你 主 机 的 IP 地址是什么? 在 IP 数 据 包 头 中 , 上 层 协 议 ( upper layer) 字 段 的 值 是 什 么 ? IP 头 有 多 少 字 节 ? 该 IP 数 据 包 的 净 载 为 多 少 字 节 ? 并 解 释 你 是 怎 样 确 定 该 IP 数 据 包 的 净 载 大 小 的 ? 该 IP 数 据 包 分 片 了 吗 ? 解 释 你 是 如 何 确 定 该 P 数 据 包 是 否
28、 进 行 了 分 片B.单 击 Source 列 按 钮 , 这 样 将 对 捕 获 的 数 据 包 按 源 IP 地 址 排 序 。 选 择 第 一 个 你 的 主机 发 出 的 ICMP Echo Request 消 息 , 在 packet details 窗 口 展 开 数 据 包 的Internet Protocol 部 分 。 在 “listing of captured packets”窗 口 , 你 会 看 到 许 多 后 续 的 ICMP消 息 ( 或 许 还 有 你 主 机 上 运 行 的 其 他 协 议 的 数 据 包 )思 考 下 列 问 题 :图 4-8 Wriesh
29、ark 窗口10 你 主 机 发 出 的 一 系 列 ICMP 消 息 中 IP 数 据 报 中 哪 些 字 段 总 是 发 生 改 变 ? 哪 些 字 段 必 须 保 持 常 量 ? 哪 些 字 段 必 须 改 变 ? 为 什 么 ? 描 述 你 看 到 的 IP 数 据 包 Identification 字 段 值 的 形 式 。C. 找 到 由 最 近 的 路 由 器 ( 第 一 跳 ) 返 回 给 你 主 机 的 ICMP Time-to-live exceeded 消 息 。思 考 下 列 问 题 : Identification 字 段 和 TTL 字 段 的 值 是 什 么 ?
30、最 近 的 路 由 器 ( 第 一 跳 ) 返 回 给 你 主 机 的 ICMP Time-to-liveexceeded 消息 中 这 些 值 是 否 保 持 不 变 ? 为 什 么 ?D.单 击 Time 列 按 钮 , 这 样 将 对 捕 获 的 数 据 包 按 时 间 排 序 。 找 到 在 将 包 大 小 改为 2000 字 节 后 你 的 主 机 发 送 的 第 一 个 ICMP Echo Request 消 息 。思 考 下 列 问 题 : 该 消 息 是 否 被 分 解 成 不 止 一 个 IP 数 据 报 ? 观 察 第 一 个 IP 分 片 , IP 头 部 的 哪 些 信
31、 息 表 明 数 据 包 被 进 行 了 分 片 ? IP 头部 的 哪 些 信 息 表 明 数 据 包 是 第 一 个 而 不 是 最 后 一 个 分 片 ? 该 分 片 的 长 度 是 多 少C. 找 到 在 将 包 大 小 改 为 3500 字 节 后 你 的 主 机 发 送 的 第 一 个 ICMPEcho Request 消 息 。思 考 下 列 问 题 : 原 始 数 据 包 被 分 成 了 多 少 片 ? 这 些 分 片 中 IP 数 据 报 头 部 哪 些 字 段 发 生 了 变 化 ?4、 实 验 过 程1) 学 习 Wireshark 的 使 用112) 利 用 Wires
32、hark 分 析 HTTP 协 议1.HTTP GET/response 交互:IP 为 172.17.150.171,服务器 IP 为 219.217.227.106TCP 头部:12HTTP 报文:HTTP1.1,zh-CN 表明接受中文而服务器的报文中,源 IP 与目的 IP 与客户端恰好相反:服务器的协议版本为 HTTP1.1,,返回状态代码为 200 OK2.HTTP 条件 GET/response 交互第一个 HTTP-GET 请求的内容中,并没有 IF-MODIFIED-SINCE13第一次回复报文,服务器返回文件内容:第二次发请求时,出现了 IF-MODIFIED-SINCE第
33、二次回复报文时,服务器告知浏览器可在缓存中查找文件:143) 利 用 Wireshark 分 析 TCP 协 议三次握手,可知,客户端主机的 IP 地址为 128.119.245.12,TCP 端口号为 60;服务器的 IP地址是 172.17.150.171,用来发送和接受 TCP 报文的 TCP 端口号为 1514:Seq=0,通过设置 TCP 头部的 flags 字段的 SYN 标志位来标示:15SYN ACK 报文段序号是 0,Acknowledgment 字段的值是 1(服务器收到客户端发来的 SYN报文,此报文消耗 1 个序列号,因此服务器回复下 一个期望得到的序列号为 1) 。通
34、过标记 TCP 头的 flags 字段的 SYN 标志位来标示的:16三次握手过程:含 POST 的 TCP 报文段的序号:接 受 端 公 示 的 最 小 可 用 缓 存 空 间 大 小 为 :17由 于 窗 口 大 小 一 直 增 加 , 所 以 缓 存 够 用 。TCP 链 接 的 throughput 为 :可 知 头 部 为 54B, 共 106 个 包 , 故 106*54B=5724B由 上 图 可 知 , 总 传 送 数 据 为 : 152935B+5724B=158659B初 始 时 间 与 结 束 时 间 间 隔 约 为 1.673847s故 : 158659B/1.673847s=94787B/s 94.8KBps4) 利 用 Wireshark 分 析 IP 协 议主 机 的 IP 地 址 为 : 172.17.150.171上 层 协 议 的 字 段 值 为 : 0118