- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
发送 Ethernet ARP 包
课程设计目的IP 地址将不同的物理地址统一起来,从而将物理地址隐藏起来,上层软件使用 IP 地址 标识结点。但是。两台计算机只有在知道彼此的物理地址时才能进行通信。 IP 数据包常通过 Ethernet 发送。Ethernet 设备并不识别 32 位 IP 地址,它们是以 48 位 MAC 地址传输 Ethernet 数据包的。因此,IP 驱动器必须把 IP 目的地址转换成 Ethernet 网络 目的地址。 这两种地址之间存在着某种静态的或动态的映射, 通常需要查看一张表来进行这 种映射。这种地址协议(ARP)就是用来确定这些映象的协议。 ARP 工作时,送出一个所希望的 IP 地址的 Ethernet 广播数据包。目的地主机以一个含 有 IP 和 Ethernet 地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不 必要的 ARP 通信。 本课程设计的目的是进一步熟悉 ARP 协议的帧结构以及它的运行过程二、课程设计要求在熟悉 ARP 协议并了解 Winpcap 编程的前提下,构造 ARP 包,选择并打开网卡,将 ARP 包发送出去。 1) 命令行格式: arpsend src_ip src_mac dst_mac flag 其中 arpsend 作为程序名。 各参数意义: src_ip: 源 IP 地址。 src_mac: 源 MAC 地址。 dst_ip: 目的 IP 地址。 dst_mac: 目的 MAC 地址。 Flag:0 表示 ARP 请求;1 表示 ARP 应答。三、课程设计相关知识1. ARP 协议概述 ARP,即地址解析协议,实现通过 IP 地址得知其物理地址。在 TCP/IP 网络环境下, 每个主机都分配了一个 32 位的 IP 地址,这种互联网地址是在网际范围标识主机的一种逻 辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把 IP 地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送 报文,必须把目的主机的 32 位 IP 地址转换成为 48 位以太网的地址。这就需要在互连层有 一组服务将 IP 地址转换为相应物理地址,这组协议就是 ARP 协议。 2.ARP 工作原理 我们以主机 A(192.168.1.5)向主机 B(192.168.1.1)发送数据为例。当发送数据时, 主机 A 会在自己的 ARP 缓存表中寻找是否有目标 IP 地址。如果找到了,也就知道了目标 MAC 地址,直接把目标 MAC 地址写入帧里面发送就可以了;如果在 ARP 缓存表中没有找 到 相 对 应 的 IP 地 址 , 主 机 A 就 会 在 网 络 上 发 送 一 个 广 播 , 目 标 MAC 地 址 是 “FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1 的 MAC 地址是什么?”网络上其他主机并不响应 ARP 询问,只有主机 B 接收到这个帧时,才 向主机 A 做出这样的回应:“192.168.1.1 的 MAC 地址是 00-aa-00-62-c6-09”。这样,主机A 就知道了主机 B 的 MAC 地址,它就可以向主机 B 发送信息了。同时它还更新了自己的 ARP 缓存表,下次再向主机 B 发送信息时,直接从 ARP 缓存表里查找就可以了。ARP 缓 存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大 大减少 ARP 缓存表的长度,加快查询速度。 3、ARP 包的填充 将命令行的参数作适当的转换后填到 ARP 分组结构的各字段中即可。 要注意的是,填充请求包时。因为包要在 Ethernet 上广播,所以,物理帧头的“目的 MAC”字段要填充为 FFFFFFFFFFFF;而 ARP 帧结构中的目的 MAC 可填充为任意值, 因为它此时不起作用。 “填充数据”字段要填充为 0四、课程设计分析1.程序流程2.核心代码及说明 头文件:
#pragma once
//#include Iphlpapi.h
#include WinSock2.h
#include .\Iphlpapi.h
#include .\IPRTRMIB.h
#include .\IPTYPES.h
#include .\IPEXPORT.h
//#pragma comment(lib, Iphlpapi.lib)
#pragma comment(lib, ws2_32.lib)
#pragma comment(lib, .\\wpdpack\\Iphlpapi.lib)
#define MAX_ADAPTER 10
文档评论(0)