arp协议的研究与实现.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 一.设计要求 2 二.设计作用与目的 2 三.运行环境及工具软件 2 四.系统设计 3 1.需求分析 3 2.设计分析 3 3.具体设计 6 (1)程序结构 6 (2)数据描述——结构体类型定义说明 6 (3)函数功能说明 6 (4)模块设计 7 (5)源程序及注释 10 六.设计心得 28 七.参考文献 29 另起一页! ARP协议的研究与实现 一.设计要求 设计编写一个以c语言为基础ARP协议,有的下几个基本功能: 1)交换网络的嗅探 IP地址冲突阻止目标的数据包通过网关 通过ARP检测混杂模式节点ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。 程序运行环境: VC++ 假设我们的计算机IP地址是,要执行这个命令:ping。该命令会通过ICMP协议发送ICMP数据包。该过程需要经过下面的步骤:   1、应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);   2、内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表[1];   3、如果存在该IP-MAC对应关系,那么跳到步骤7;如果不存在该IP-MAC对应关系,那么接续下面的步骤;   4、内核进行ARP广播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;   5、当主机接收到该ARP请求后,就发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;   6、本地获得主机的IP-MAC地址对应关系,并保存到ARP缓存中;   7、内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去; 系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用 户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: Arp请求帧发送流图 Arp帧应答流程图 Arp协议处理流程图 图和图标对应调整整齐 3.具体设计 (1)程序结构  ARP(AddressResolutionProtocol)地址解析协议用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)[RFC826]。ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARP协议的描述——结构体类型定义说明络地址(IP地址32位)转化为物理地址(MAC地址48位)[RFC826]。ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARP协议的。   ARP协议的数据结构:   typedefstructarphdr   {unsignedshortarp_hrd;/*硬件类型*/   unsignedshortarp_pro;/*协议类型*/   unsignedchararp_hln;/*硬件地址长度*/   unsignedchararp_pln;/*协议地址长度*/   unsignedshortarp_op;/*ARP操作类型*/   unsignedchararp_sha[6];/*发送者的硬件地址*/   unsignedlongarp_spa;/*发送者的协议地址*/   [6];/*目标的硬件地址*/   unsignedlongarp_tpa;/*目标的协议地址*/   }ARPHDR,*PARPHDR;   使用arp-a命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。   知道了ARP协议的作用,就能够很清楚地知道,数据包的向外传输很依靠ARP协议,当然,也就是依赖ARP缓存。要知道,AR

文档评论(0)

smdh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档