一、实验准备
1.在 Ethernet and ARP 上下载实验指导书。
2.使用Wireshark捕获游览器访问Historical Documents:THE BILL OF RIGHTS时的捕获包。
①首先,确保浏览器的缓存为空(清除浏览器缓存),对于Edge浏览器,如下图所示:
②打开wireshark,选择当前的网络接口进行数据包捕获。
③通过游览器访问Historical Documents:THE BILL OF RIGHTS。
④停止数据包捕获,开始分析。
3.如果无法在电脑上获取数据包,可以到 wireshark-traces 上下载实验室收集的捕获包。
二、实验过程
第一部分-捕获和分析以太网帧
由于本实验是关于以太网和 ARP的,我们对 IP或更高层协议不感兴趣。 因此,让我们更改 Wireshark的“捕获数据包列表”窗口,以便它仅显示有关 IP 以下协议的信息。 要让 Wireshark执行此操作,请选择 Analyze-> Enabled Protocols(分析-启用的协议)。 然后取消选中 IP框(这里指的 IPV4 协议,下面有搜索)并选择确定。
现在 Wireshark窗口应该如下所示:
1.你的电脑 48位的地址是多少?
本机MAC地址为:00:0e:c6:4a:75:49。
可以用cmd命令ipconfig /all验证本题的正确性:
2.以太网帧中的 48位目标地址是什么?这是 gaia.cs.umass.edu的以太网地址吗?(提示:答案是否定的)。那么它是什么?
可以看到,该地址的路由名称为华为,不是gaia.cs.umass.edu的以太网地址,而是WIFI路由器的MAC地址。
3.以太网帧上层协议 16进制值是什么?这对应的上层协议是什么?
16进制值是0x0800,对应的是网络层的IPv4协议。
其他协议对应的16进制值:
4.从以太帧的开始,一直到“GET”中的 ASCII“G”出现在以太网帧中为止,有多少字节?
两个16进制代表一个字节,第一行、第二行、第三行都是16个字节,总共16×3=48个字节,第四行到ASCII“G”总共有7个字节,所以一共有48+7=55个字节。
接下来,根据包含 HTTP响应消息的第一个字节的以太网帧的内容(带有OK的响应消息),回答以下问题。
5.这个以太网帧中,以太网源地址的值是多少?这是你的计算机的地址,还是 gaia.cs.umass.edu的地址(提示:答案是否定的)。拥有这个以太网地址的设备是什么?
以太网源地址的值是28:6e:d4:63:c0:a3,这既不是本机的地址,也不是gaia.cs.umass.edu的地址,而是WIFI路由器的MAC地址。
6.以太网帧中的目的地址是什么?这是您的计算机的以太网地址吗?
以太网帧中的目的地址是00:0e:c6:4a:75:49,由第一题可知,这是我的计算机的以太网地址。
7.以太网帧上层协议16进制值是什么? 这对应的上层协议是什么?
16进制值是0x0800,对应的是网络层的IPv4协议。
8.从以太帧的开始,一直到“OK”中的 ASCII“O”出现在以太网帧中为止,有多少字节?
两个16进制代表一个字节,第一行到第四行都是16个字节,总共16×4=64个字节,第五行到ASCII“O”总共有4个字节,所以一共有64+4=68个字节。
第二部分-地址解析协议
回想一下,ARP协议通常在计算机上维护 IP 到 以太网地址(MAC地址) 转换缓存,arp 命令(在 MSDOS和 Linux / Unix中)用于查看和操作此缓存的内容。由于 arp命令和 ARP协议具有相同的名称,因此很容易混淆它们。但请记住,它们是不同的:
arp命令,用于查看和操作 ARP缓存内容(就是IP转到MAC地址的转换表);
ARP协议,定义了发送和接收的消息的格式和含义,并定义了对消息传输和接收所采取的操作。
查看本机的ARP缓存的内容,为了观察您的计算机发送和接收 ARP消息,我们需要清除 ARP缓存,否则您的计算机很可能在其缓存中找到所需的 IP-Ethernet地址转换关系,因此不会发送 ARP 消息。
重新抓取 ARP 消息
①清除arp表的缓存,如上图。
②清除浏览器的缓存,同实验准备。
③启动 Wireshark捕捉封包,同实验准备。
④使用Wireshark捕获游览器访问Historical Documents:THE BILL OF RIGHTS时的捕获包,同实验准备。
⑤同样设置不显示 IP和更高层协议,请选择 Analyze-> Enabled Protocols(分析 -启用的协议)。 然后取消选中 IP框,之后窗口内容应该如下:
9.写下计算机 ARP缓存的内容。每个列值的含义是什么?
每个列值分别表示Internet地址(也就是IP地址)、物理地址(也就是MAC地址)、类型(动态,表示如果某个表项在一定的时间内没有被用到就被删除,静态则永久保存)。
10.包含 ARP请求消息的以太网帧中源和目标地址的十六进制值是什么?
源地址为: 88:c3:97:d2:c4:27,目的地址为: ff:ff:ff:ff:ff:ff。
11.以太网帧上层协议 16进制值是什么?
16进制值是0x0806,对应的是IP层的ARP协议。
12.分析ARP请求
(1) ARP 操作码字段 开始从以太网帧的最开始有多少字节?
两个16进制代表一个字节,第一行是16个字节,第二行到01前总共有5个字节,所以一共有16+5=21个字节。
(2) 在进行ARP请求的以太网帧的ARP负载部分中,操作码字段的值是多少?
操作码字段的值是1。
操作码: 1为ARP请求, 2为ARP回显,3为RARP请求,4为RARP应答。
(3) ARP 消息是否包含发送方的 IP 地址?
由图可知,ARP 消息包含发送方的 IP 地址。
(4) 在 ARP 请求中从哪里看出我们要查询相应 IP 的以太网地址?
从广播的报文段中即可看到我们要查询相应 IP 的以太网地址。
13.分析ARP结果
由于本机捕获的ARP无ARP结果数据包,故采用实验室捕获的数据包完成后续实验。
(1)ARP 操作码字段开始从以太网帧的最开始有多少字节?
两个16进制代表一个字节,第一行是16个字节,第二行到02前总共有5个字节,所以一共有16+5=21个字节。
(2)在进行 ARP 响应的以太网帧的 ARP 负载部分中,操作码字段的值是多少?
操作码字段的值是2。
(3)在响应 ARP 中从哪里看出现早期 ARP 请求的答案?
从广播的报文段中即可看到早期 ARP 请求的答案。
14.包含 ARP 回复消息的以太网帧中的源地址和目标地址的十六进制值是多少?
源地址为: 00:06:25:da:af:73,目的地址为: 00:d0:59:a9:3d:68。
15.在作者抓包结果中,他有两台电脑,一台运行 wireshark 进行抓包,一台没有,那么为什么运行 wireshark 那台电脑发送 ARP 请求得到了应答,另外一台电脑的 ARP 请求没有得到应答?(没有相应第 6 帧的 ARP 的请求)
因为 ARP 广播信息是广播的,所有该网段内的电脑均可收到,而 ARP 广播回复是单播的,只有请求的那台电脑才能收到,因此抓不到另外一台电脑的 ARP 请求。
三、额外问题
1.arp命令:arp -s InetAddr EtherAddr允许您手动向ARP缓存添加一个条目,该条目将IP地址解析为物理地址。如果手动添加条目时输入了正确的IP地址,但该远程接口的以太网地址错误,会发生什么情况?
如果arp添加了正确的IP地址,但该远程接口的以太网地址错误,会提示ARP项添加失败:拒绝访问,同时访问该IP也会返回404错误。
2.一个条目在被删除之前在ARP缓存中保留的默认时间是多少。您可以通过经验(通过监视缓存内容)或在操作系统文档中查找来确定这一点。说明如何/在何处确定该值。
条目分为静态条目和动态条目。静态条目是写死的,没有老化时间,不会刷新;动态条目是临时储存的,有老化时间,会刷新。
每个动态ARP缓存条目默认的生命周期是两分钟。当超过两分钟,该条目会被删掉。所以,生命周期也被称为超时值。
延长规则:当ARP条目已存在,使用该条目后,将会重设超时值为两分钟。