以太网与 ARP 协议分析

  • 实验目的

1、熟悉 802.3 协议,观察以太网的帧格式。

2、观察 ARP 的运作。

  • 实验平台与实验设备(或实验环境)

与因特网连接的计算机网络系统;主机操作系统为 windows;Wireshark、IE 等软件

  • 实验内容与实验步骤(如:任务、基本原理、软硬件设计、网络拓扑图、流程图、代码等)

1、 俘获并分析以太网帧

(1)清空浏览器缓存(清空 Cache,在 IE 窗口中,选择“工具/Internet 选项/删除文件”命令,其它浏览器请自查网络资料)。

(2)启动 Wireshark,开始分组俘获。

(3)在浏览器的地址栏中输入:http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-lab-file3.html,浏览器将显示冗长的美国权力法案。

(4)停止分组俘获。首先,找到你的主机向服务器 gaia.cs.umass.edu 发送的 HTTPGET 报文的分组序号,以及服务器发送到你主机上的 HTTP 响应报文的序号。其中,窗口大体如下由于本实验关注的是以太网和 ARP,我们对 IP 和 IP 协议之上的协议不关心。因此,我们(5)选择包含 HTTPGET 报文的以太网帧,在分组详细信息窗口中,展开 EthernetII 信息部分。根据操作,回答“四、实验报告内容”中的 1--3 题

(6)选择包含 HTTP 响应报文第一个字节的以太网帧,根据操作,回答“四、实验报告内容”中的 4--6 题。

选择“Analyze->EnabledProtocols”,取消对 IP 复选框的选择,单击 OK。窗口如下

2、 ARP

(1)利用 MS-DOS 命令:arp-a 或 c:\windows\system32\arp 查看主机上 ARP 缓存的内容,并对该命令输出结果进行截图。根据操作,回答“四、实验报告内容”中的 7 题。

(2)利用 MS-DOS 命令:arp-d*清除主机上 ARP 缓存的内容(注意:对 Win10 来说,cmd 应该以管理员身份运行。此命令的作为是为了更好的抓取到 ARP 包,但在东 9 实验室电脑上可能因为缺乏管理员权限而无法正常执行,但即便不执行本命令,也依然能抓到ARP 包,不影响后面的步骤)。

(3)清除浏览器缓存。

(4)启动 Wireshark,开始分组俘获。

(5)在浏览器的地址栏中输入:http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-lab-file3.html,浏览器将显示冗长的美国权力法案。

(6)停止分组俘获。选择“Analyze->EnabledProtocols”,取消对 IP 复选框的选择,单击 OK。窗口如下。根据操作,回答“四、实验报告内容”中的 8--10 题。

  • 实验数据和结果分析与实验思考题的回答(最好有实验截图)

在实验的基础上,回答以下问题:

  1. 你的主机的 48 位以太网地址是多少?

答:f6:db:3c:98:62:3f

  1. 目的以太网地址是?该目的以太网地址是 gaia.cs.umass.edu 服务器的以太网地址吗?(提示:答案应为不是)。如果不是,该地址是什么设备的以太网地址?

答:不是,是网关地址

3、给出帧类型字段(Frametypefield)的十六进制值,并指出它们代表什么上层协议。

答:IPv4(0X0800)

  1. 以太网源地址是多少?该地址是你主机的地址吗?是 gaia.cs.umass.edu 服务器的地址吗?(提示:答案应为不是)。如果不是,该地址是什么设备的以太网地址?

答:f6:db:3c:98:62:3f.不是。是 gaia.cs.umass.edu 服务器的MAC地址

  1. 以太网帧的 48 位目的地址是多少?该地址是你主机的地址吗?

答:f6:db:3c:98:62:3f

6、在包含“OK”以太网帧中(即 HTTP 的 OK 响应包所在帧),从该帧的最开始算起,ASCII字符“OK”中的“O”出现在第几个字节?(注:是字母 O,不是数字零)

答:16*4+4=68个字节

  1. 截屏记录 ARP-a 命令的输出结果。

  1. 包含 ARP 请求报文的以太网帧的源地址和目的地址的十六进制值各是多少?

9、从 ftp://ftp.rfc-editor.org/in-notes/std/std37.txt 处下载 ARP 规范说明。在 http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/arp.html 处 也 有 一 个 可 读的 关于ARP 的讨论网页。根据操作回答:

  1. 形成 ARP 请求报文的以太网帧中 ARP-payload 部分 opcode 字段(OperationCode)的值是多少?

Reply(2)

  1. 在 ARP 报文中是否包含发送方的 IP 地址?

10、包含 ARP 响应报文的以太网帧中源地址和目的地址的十六进制值各是多少?

源地址

目的地址

  • 实验总结与体会

通过本次实验了解到了以太网与 ARP 协议中非常重要的两个协议。在实际应用中,我们经常会遇到需要配置网络的情况。在本次实验中,我学习了以太网与 ARP 的基本原理,通过实际操作和抓包分析,深入理解了其工作流程和数据结构。我还了解了LAN和WAP网络,并学习了如何在虚拟机环境中配置网络。

在实际操作中,我通过Wireshark抓包来分析网络数据包。这让我更加深入地了解了TCP/IP协议栈中不同协议的作用和相互关系,以及网络数据包在不同协议层中的格式和内容。通过分析ARP协议的数据包,我能够准确地判断网络中不同设备的IP地址和MAC地址的对应关系,以及如何进行数据包的转发和路由。总的来说,本次实验让我深入理解了以太网与 ARP 协议的工作原理,提高了我的网络配置能力和抓包分析能力。同时,也让我意识到了网络安全的重要性,需要加强对网络攻击和入侵的防范和管理。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 消除左递归: 原始文法为: D -> TL T -> i | f L -> L,x | x 将其转化为无左递归的文法: D -> TL T -> iR | fR R -> ,xR | ε L -> xS S -> R | ,xS 2. 构造First和Follow集合: First(D) = {i, f} First(T) = {i, f} First(R) = {ε, ,} First(L) = {x} First(S) = {ε, ,} Follow(D) = {$} Follow(T) = {L} Follow(R) = {L} Follow(L) = {)} Follow(S) = {)} 3. 构造LL(1)分析表: | i | f | x | , | ( | ) | $ -----+-------+-------+-------+-------+-------+-------+------- D | TL | TL | | | | | T | iR | fR | | | | | R | | | ε | ,xR | ε | ε | ε L | | | xS | | | | S | ε | ε | | ,xS | | ) | ) 4. 是否是LL(1)文法: 通过观察LL(1)分析表可以发现,每个非终结符的每个产生式的First集合与Follow集合之间没有交集,因此该文法是LL(1)文法。 5. 编程实现: 以下是该文法的LL(1)分析程序的示例代码(使用C++语言实现): ``` #include <iostream> #include <string> using namespace std; const char *p[] = {"", "D->TL", "T->iR", "T->fR", "R->,xR", "R->ε", "L->xS", "S->R", "S->,xS", "S->ε"}; char M[6][7][3] = { {"", "", "", "", "", "", ""}, {"TL", "TL", "", "", "", "", ""}, {"iR", "fR", "", "", "", "", ""}, {"", "", "ε", ",xR", "ε", "ε", "ε"}, {"", "", "xS", "", "", "", ""}, {"", "", "ε", "", "", "", ""}, }; string input; int getVN(char c) { if (c == 'D') return 1; if (c == 'T') return 2; if (c == 'R') return 3; if (c == 'L') return 4; if (c == 'S') return 5; return 0; } int getVT(char c) { if (c == 'i') return 0; if (c == 'f') return 1; if (c == 'x') return 2; if (c == ',') return 3; if (c == '(') return 4; if (c == ')') return 5; if (c == '$') return 6; return -1; } void analyze() { input += '$'; int i = 0, j = 0, k = 0; char stack[100] = {'$', 'D'}; while (stack[0] != '$') { char c = stack[0]; if (c == input[i]) { i++; for (int l = 0; l < k; l++) { stack[l] = stack[l + 1]; } k--; } else if (getVN(c)) { int vn = getVN(c); int vt = getVT(input[i]); if (M[vn][vt][0] == '\0') { cout << "Error!" << endl; return; } for (int l = 0; l < k; l++) { stack[l] = stack[l + 1]; } k--; if (M[vn][vt][0] != 'ε') { for (int l = strlen(M[vn][vt]) - 1; l >= 0; l--) { stack[k++] = M[vn][vt][l]; } } } else { cout << "Error!" << endl; return; } } cout << "Success!" << endl; } int main() { cout << "Please input the string to be analyzed:" << endl; cin >> input; analyze(); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿宇呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值