任务描述
本关任务:在 Wireshark 下抓取 Ethernet 包。
相关知识
为了完成本关任务,你需要掌握:
以太帧类型
以太帧有很多种类型。不同类型的帧具有不同的格式和 MTU 值。但在同种物理媒体上都可同时存在。
Ethernet帧格式
以太网中大多数的数据帧使用的是 Ethernet II 格式:
Ethernet II 类型以太网帧的最小长度为 64 字节(6+6+2+46+4),最大长度为 1518 字节(6+6+2+1500+4)。其中: (1)前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址; (2)接下来的 2 个字节标识出以太网帧所携带的上层数据类型,如 16 进制数0x0800
代表 IP 协议数据,16 进制数0x86dd
代表 IPv6 协议数据,16 进制数0x809B
代表 AppleTalk 协议数据,16 进制数0x8138
代表 Novell 类型协议数据等; (3)在不定长的数据字段(Data):其长度是 46 至 1500 字节; (4)4 个字节的帧校验序列(Frame. Check Sequence,FCS),采用 32 位 CRC 循环冗余校验对从“目标 MAC 地址”字段到“数据”字段的数据进行校验。
IEEE 802.3 帧格式:
各字段说明如下: (1)D-MAC && S-Mac:分别表示标识目标地址和源地址。它们均为 6 个字节长。如果传输出去的目标地址第一位是 0,则表示这是一个普通地址;如果是 1, 则表示这是一个组地址。 (2)Length / Type :通常这个字段用于指定报文头后所接的数据类型。通常使用的值包括:IPv4(0x0800
), IPv6(0x86DD
), ARP(0x0806
)。 而值0x8100
代表一个 Q-tagged 帧(802.1q)。通常一个基础的以太网帧长为 1518 字节,但是更多的新标准把这个值扩展为 2000 字节。 (3)MAC Client Data: 数据主体,由 LLC、SNAP 及 Data 构成。最小长度为 48 字节(加上帧头 12 字节,CRC4 字节刚好 64 字节), 当数据主体小于 48 字节时,会添加 pad 字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为 1502 字节。
IEEE 802.2 LLC的头构成: (a)DSAP 目的服务访问字段,1 字节长,指明帧的目的上层协议类型; (b) ASAP 源服务访问字段,1 字节长,指明帧的源上层协议类型; (c) control 控制 1 字节或者 2 字节,长度要看被封装的 LLC 数据类型,是 LLC 数据报(类型1)1 字节,LLC 对话的一部分(类型2)2 字节。
类型1 表明是无连接的,不可靠的 LLC 数据报,控制字段用0x03
指明;类型 2 表明是面向连接可靠的 LLC 会话。 (4)FCS(Frame Check Sequence):也叫 CRC(Cyclic Redundancy Check),CRC 是差错检测码,用来确定接收到的帧比特是否正确。
IEEE 802.3 SNAP
虽然 IEEE 802.3 是标准,但没有被业界采用。以太网 II 已成事实标准。于是 IEEE 802.3 扩展产生 IEEE 802.3 SNAP 来兼容以太网网头部协议,在 IEEE 802.2 LLC 头部后插入了 SNAP 头部。 SNAP 头部字段构成: (1)组织代码 3 字节长,指明维护接下来 2 字节意义的组织,对 IP 和 ARP,该字段被设置为0x00-00-00
。 (2)以太网类型 如果组织代码为0x00-00-00
,接下来 2 字节就是以太网类型 IP (0x0800
)ARP(0x0806
)。 因为增加了 LLC 头部的 3 字节和 SNAP 头部的 5 字节所以有效载荷比以太网 II 少 8 个字节。
捕获以太帧
确保浏览器的缓存为空(清除浏览器缓存:请选择工具—>清除最近历史记录),然后启动 Wireshark 数据包嗅探器。 打开 URL http://gaia.cs.umass.edu
,停止 Wireshark 数据包捕获,找到您向gaia.cs.umass.edu
的 HTTP GET 消息的数据包编号以及gaia.cs.umass.edu
相应您的 HTTP回应。抓包结果截图如下:
帧类型
本实验是关于以太网和 ARP,不需要高层协议,所以我们更改 Wireshark 的“捕获数据包列表”窗口,以便它仅显示有关 IP 以下协议的信息。请选择 Analyze-> Enabled Protocols(分析-启用的协议)。 然后取消选中 IP 框并选择确定。结果的截图如下:
使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面空白处点击鼠标右键,点击“在此打开终端”,通过代码cd /data/workspace/myshixun/
,进入到实训代码仓库;
执行 git 命令:
git pull --unshallow origin master
git add .
git commit -m "Fisrt commit"
git push origin master
“Fisrt commit”相当于备注,可以是其它内容。这里需要输入 educoder 的用户名和密码,用户名输入 educoder 平台的登录用户名、手机号或者邮箱,密码输入 educoder 平台的登录密码,按照提示输入即可。
注意:密码输入过程中 Shell 窗口并不会显示输入的字符,正常输入后回车即可,注意不能使用退格键。
操作要求
双击打开桌面上的工作区文件夹workspace
,再打开实训文件夹myshixun
,并打开其中的文件message-1.txt
,将查询的信息保存到文件message-1.txt
。具体要求如下: (1)打开 Wireshark,加载实训文件夹中的ethernet-ethereal-trace-1
文件,进行分析; (2)根据包含 HTTP GET 消息的以太网帧进行分析:以太网帧中 48 位目的地址是什么?填写到文件中; (3)打开左上角的terminal emulator
窗口,通过ping gaia.cs.umass.edu
命令查看gaia.cs.umass.edu
的IP地址,在终端命令中输入查看arp命令:arp
查看是否有gaia.cs.umass.edu
的MAC地址,如果有,将其MAC地址填写到文件中,如果没有,填写“否”到文件中; (4)Ethernet II 两字节的帧类型字段的十六进制值,填写到文件中; (5)保存文件并使用 git 将文件 message-1.txt
推送到远程仓库,此步骤不影响评测。
第2关:Ethernet包分析
任务描述
相关知识
为了完成本关任务,你需要掌握:
Ethernrt 包
Ethernet II 类型以太网的帧结构: 报头
: 8 个字节,前 7 个 0,1 交替的字节(10101010
)用来同步接收站,一个1010101011
字节指出帧的开始位置。报头提供接收器同步和帧定界服务。 目标地址
: 6 个字节,单播、多播或者广播。单播地址也叫个人、物理、硬件或 MAC 地址。广播地址全为 1 , 0xFF FF FF FF。 源地址
: 6 个字节。指出发送节点的单点广播地址。 以太类型
: 2 个字节,用来指出以太网帧内所含的上层协议。即帧格式的协议标识符。对于 IP 报文来说,该字段值是0x0800
。对于 ARP 信息来说,以太类型字段的值是0x0806
。 有效负载
:由一个上层协议的协议数据单元 PDU 构成。可以发送的最大有效负载是 1500 字节。由于以太网的冲突检测特性,有效负载至少是 46 个字节。如果上层协议数据单元长度少于 46 个字节,必须增补到 46 个字节。 帧检验序列
:4 个字节。验证比特完整性。
展开数据包的详细信息
点击 Protocol Version 4 可以观察 Protocol Version 4 的内容,我们可以看到 IP 的源地址和目的地址,以及 IP 的版本是 4,并且其头的长度为 20 个字节。 User Datagram Protocol 可以观察 User Datagram Protocol 的内容,显示了源端口号,还有目的端口号,以及 UDP 协议的长度,和包头检验和的结果(checksum)。 Data 可以观察 Data 的内容,可以看出 Data 的长度为 49: 计算字节: 例如计算从以太帧的开始,一直到“GET”中的 ASCII G
出现在以太网帧中为止,有 55 Byte(此时第一个字节为 1)。图中每两个十六进制字符代表一个字节(8 比特),FF = 11111111(2) = 8 Bit = 1 Byte
。
使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面空白处点击鼠标右键,点击“在此打开终端”,通过代码cd /data/workspace/myshixun/
,进入到实训代码仓库;
执行 git 命令:
git add .
git commit -m "Fisrt commit"
git push origin master
“Fisrt commit”相当于备注,可以是其它内容。这里需要输入 educoder 的用户名和密码,用户名输入 educoder 平台的登录用户名、手机号或者邮箱,密码输入 educoder 平台的登录密码,按照提示输入即可。
注意:密码输入过程中 Shell 窗口并不会显示输入的字符,正常输入后回车即可,注意不能使用退格键。
操作要求
双击打开桌面上的工作区文件夹workspace
,再打开实训文件夹myshixun
中的项目文件夹,并打开其中的文件message-2.txt
,将查询的信息保存到文件message-2.txt
。具体要求如下: (1)打开 Wireshark,加载实训文件夹中的ethernet-ethereal-trace-1
文件,进行分析; (2)根据包含 HTTP GET 消息的以太网帧进行分析,回答以太网 48 位源地址是什么?是 gaia.cs.umass.edu
服务器的地址吗?填写到文件中; (3) 找到包含 HTTP响应消息的第一个字节的以太网帧的内容; (4) 从此以太网帧的开始,一直到“OK”中的 ASCII O
出现在以太网帧中为止,有多少字节?填写到文件中; (5) 此以太网帧的源地址的值是多少?填写到文件中; (6) 此以太网帧以太网帧中的目的地址是什么?这是您的计算机的以太网地址吗(填“是”或“否)?填写到文件中; (7)保存文件并使用 git 将文件 message-2.txt
推送到远程仓库,此步骤不影响评测。
第3关:抓取ARP命令的包
任务描述
本关任务:抓取 ARP 命令的包。
相关知识
为了完成本关任务,你需要掌握:
由于 ARP 命令和 ARP 协议具有相同的名称,因此很容易混淆它们。但它们是不同的:ARP 命令用于查看和操作 ARP 缓存内容,而 ARP 协议定义了发送和接收的消息的格式和含义,并定义了对消息传输和接收所采取的操作。
ARP缓存
为了观察您的计算机发送和接收 ARP 消息,我们需要清除 ARP 缓存,否则您的计算机很可能在其缓存中找到所需的 IP-Ethernet 地址转换关系,因此不会发送 ARP 消息。执行删除命令后,再查看缓存内容,如下图所示。
抓取ARP消息
清除 ARP 表的缓存,清除浏览器的缓存,启动 Wireshark 捕捉封包。打开 URL:www.educoder.net
。如任务一,同样设置不显示 IP 和更高层协(选择Analyze-> Enabled Protocols)。 然后取消选中 IP 框,之后窗口内容应该如下:
使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面空白处点击鼠标右键,点击“在此打开终端”,通过代码cd /data/workspace/myshixun/
,进入到实训代码仓库;
执行 git 命令:
git add .
git commit -m "Fisrt commit"
git push origin master
“Fisrt commit”相当于备注,可以是其它内容。这里需要输入 educoder 的用户名和密码,用户名输入 educoder 平台的登录用户名、手机号或者邮箱,密码输入 educoder 平台的登录密码,按照提示输入即可。
注意:密码输入过程中 Shell 窗口并不会显示输入的字符,正常输入后回车即可,注意不能使用退格键。
操作要求
双击打开桌面上的工作区文件夹workspace
,再打开实训文件夹myshixun
,并打开其中的文件message-3.txt
,将查询的信息保存到文件message-3.txt
。具体要求如下: (1)在桌面空白处右击,打开终端,输入arp
命令; (2)查看计算机 ARP 缓存的内容,每个列值的含义是什么?(用分号”;”隔开)写入文件中; (3)保存文件并使用 git 将文件 message-3.txt
推送到远程仓库,此步骤不影响评测。
第4关:ARP协议分析
任务描述
本关任务:对 ARP 协议进行分析。
相关知识
为了完成本关任务,你需要掌握:
ARP报文
抓取APR命令的包
在任务三的基础上,清除你的 ARP 缓存,接下来,确保浏览器的缓存是空的。打开URL:http://gaia.cs.umass.edu/wireshark-labs/HTTP-ethereal-lab-file3.html
。同样设置不显示 IP 和更高层协议,您现在 Wireshark 窗口应该如下所示:
简单的ARP协议分析
在 ARP 中发送了 2 种不同的报文,分别是,从源到目的地和从目的地到源。发送方是发送报文,目标方是接收报文。发送方和目标方的身份对每个报文都不一样,根据具体的情况而定:
对发送方来说: 请求
:发送方是源,目标方是目的地 回答
:发送方是目的地,目标方是源 发送方硬件地址
:ARP 报文中发送方的第 2 层地址 发送方协议地址
:ARP 报文中发送方的第 3 层地址
对目标方来说: 请求
:目标方是源,发送方是目的地 回答
:目标方是目的地,发送方是源 目标方的硬件地址
:ARP 报文中目标方的第 2 层地址 目标方的协议地址
:ARP 报文中目标方的第 3 层地址
展开 Etnernet 的头部,我们可以看到包含 ARP 请求消息的以太网帧中源地址和目标地址的十六进制: 太网帧上层协议: 找到 ARP 的操作码(Opcode)我们可以看到操作码字段的值是 1,也可计算出 ARP 操作码字段开始从以太网帧的最开始有15+6=21个字节
:
使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面空白处点击鼠标右键,点击“在此打开终端”,通过代码cd /data/workspace/myshixun/
,进入到实训代码仓库;
执行 git 命令:
git add .
git commit -m "Fisrt commit"
git push origin master
“Fisrt commit”相当于备注,可以是其它内容。这里需要输入 educoder 的用户名和密码,用户名输入 educoder 平台的登录用户名、手机号或者邮箱,密码输入 educoder 平台的登录密码,按照提示输入即可。
注意:密码输入过程中 Shell 窗口并不会显示输入的字符,正常输入后回车即可,注意不能使用退格键。
操作要求
双击打开桌面上的工作区文件夹workspace
,再打开实训文件夹myshixun
,并打开其中的文件message-4.txt
,将查询的信息保存到文件message-4.txt
。然后进行如下操作: (1)打开 Wireshark ,加载实训文件夹中的ethernet-ethereal-trace-1
文件,进行分析; (2)筛选 ARP 数据报,并找到 request(请求)消息; (3)查看包含 ARP 请求消息的以太网帧中源地址和目标地址的十六进制值是什么?填写到文件中; (4)请问在进行 ARP 请求的以太网帧的 ARP 负载部分中,操作码字段的值是多少?从操作码段开始以太网帧的最开始有多少字节?填写到文件中; (5)ARP 消息是否包含发送方的 IP 地址?(填写”是/否”),填写到文件中; (6)筛选 ARP 数据报,并找到 reply(回复)消息; (7)包含 ARP 回复消息的以太网帧中的源地址和目标地址的十六进制值是多少?填写到文件中; (8) 保存文件并使用 git 将文件 message-4.txt
推送到远程仓库,此步骤不影响评测。