ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:74.91KB ,
资源ID:16608445      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16608445.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARP协议获取局域网内部活动主机物理地址的程序实现Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ARP协议获取局域网内部活动主机物理地址的程序实现Word下载.docx

1、使用ARP协议获取局域网内部活动主机物理地址的程序实现(Java)已知技术参数和设计要求1.已知参数:选择适当的网络适配器,以绑定Winpcap。2.设计要求: 2.1协议实现需要哪些数据帧?注意要数据帧的定义要符合公共标准。2.2如何实现数据帧的发送?2.3如何接收及解析目的主机的响应数据帧?2.4如何显示ARP协议的执行结果?3. JAVA环境为Eclipse设计内容与步骤1.熟悉ARP协议的工作原理;2.熟悉ARP协议相关数据帧结构;3.构造ARP请求数据帧;4.使用Winpcap相关函数实现数据帧的发送;5.接收及解析目的主机的响应数据帧;6.获得IP地址与MAC地址的对应关系并显示;

2、7.课程设计任务说明书。设计工作计划与进度安排1.知识准备,整体思路设计 2小时2.开发环境与程序调试环境 4小时3.构造协议需要的相关数据帧,使用标准数据帧结构 2小时4.数据帧的发送 10小时5.接收、解析目的主机的相应数据帧,并显示结果 12小时6.课程设计说明书 10小时 10小时设计考核要求1.出勤 202.答辩或演示303.课程设计说明书 50使用ARP协议获取局域网内部活动主机物理地址的程序实现一、问题描述构造多个Arp的数据帧。输入:局域网中的IP地址;输出:从控制台屏幕输出局域网内部活动主机物理地址。二、基本要求1.协议实现需要哪些数据帧?2.如何实现数据帧的发送3.如何接收

3、及解析目的主机的响应数据帧4.如何显示ARP协议的执行结果三、设计思想首先构造ARP的数据包,然后通过java对网卡数据捕获需要用到jpcap,jpcap调用wincap实现数据包的发送,并监听返回的数据包,显示出来。四、系统结构程序可以分为两部分:1:程序构造具体的ARP数据包,发送。2:监听返回的数据包,并显示结果。五、程序流程程序一开始会要求用户输入本机所在局域网内的IP字段,再通过循环对每个目的IP发送请求包(根据构造目的IP构造的ARP请求包)。当发送完ARP的请求包,系统就会在监听状态,等待是否返回响应包。如果有返回包,说明此IP在局域网中并且处于活动状态,解析显示结果。如果没有返

4、回包,说明此IP没有在局域网或者处于关机状态六、源程序import jpcap.JpcapCaptor;import jpcap.JpcapSender;import java.util.Arrays;import .InetAddress;import .Inet4Address;import jpcap.packet.ARPPacket;import jpcap.packet.EthernetPacket;import jpcap.NetworkInterface;import jpcap.NetworkInterfaceAddress;public class Demo2 public

5、static ARPPacket getTargetMAC(InetAddress targetIp) NetworkInterface devices = JpcapCaptor.getDeviceList(); NetworkInterface device = null; / 寻找适合的网络设备 loop: for (NetworkInterface d : devices) for (NetworkInterfaceAddress addr : d.addresses) if (!(addr.address instanceof Inet4Address) continue; byte

6、 bip = targetIp.getAddress(); byte subnet = addr.subnet.getAddress(); byte bif = addr.address.getAddress(); for (int i = 0; i 4; i+) bipi = (byte) (bipi & subneti); bifi = (byte) (bifi & if (Arrays.equals(bip, bif) device = d; break loop; if (device = null) throw new IllegalArgumentException(targetI

7、p + is not a local address); JpcapCaptor captor = null; / 打开一个网络数据包捕捉者 try captor = JpcapCaptor.openDevice(device, 2000, false, 300); / 只接收ARP数包 captor.setFilter(arp, true); catch (Exception e) / 获得发送数据包的实例 JpcapSender sender = captor.getJpcapSenderInstance(); InetAddress srcip = null; for (NetworkI

8、nterfaceAddress addr : device.addresses) if (addr.address instanceof Inet4Address) srcip = addr.address; break; / 进行广播数据报的MAC地址 byte broadcast = new byte (byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255 ; / 构造REQUEST 类型的ARP的数据包 ARPPacket arp = new ARPPacket(); arp.hardtype = AR

9、PPacket.HARDTYPE_ETHER; arp.prototype = ARPPacket.PROTOTYPE_IP; arp.operation = ARPPacket.ARP_REQUEST; arp.hlen = 6; arp.plen = 4; / 源MAC地址 arp.sender_hardaddr = device.mac_address; / 源IP地址 arp.sender_protoaddr = srcip.getAddress(); / 目地MAC地址:广播地址全为1(二进制) arp.target_hardaddr = broadcast; / 目地IP地址 ar

10、p.target_protoaddr = targetIp.getAddress(); / 构造以太网头部 EthernetPacket ether = new EthernetPacket(); ether.frametype = EthernetPacket.ETHERTYPE_ARP; ether.src_mac = device.mac_address; ether.dst_mac = broadcast; / ARP数据包加上以网关头部 arp.datalink = ether; / 向局域网广播ARP请求数据报 sender.sendPacket(arp); / 接收目标主面的答应

11、ARP数据报 while (true) ARPPacket p = (ARPPacket) captor.getPacket();/ 接收返回包 if (p = null) System.out.println(targetIp + 不是本地局域网的IP号 return p; else if(Arrays.equals(p.target_protoaddr, srcip.getAddress() public static void main(String args) throws Exception String s = 10.13.72.; for (int n = 1; n = 254;

12、 n+) System.out.println(s+n); ARPPacket arpP = Demo2.getTargetMAC(InetAddress.getByName(s+n); if(arpP=null) else System.out.println(硬件类型: + arpP.hardtype);操作类型: + arpP.operation);源MAC地址: + arpP.getSenderHardwareAddress();IP地址: + arpP.getSenderProtocolAddress();目标 + arpP.getTargetHardwareAddress(); +

13、 arpP.getTargetProtocolAddress();=七、测试数据循环输入局域网中的ip 10.15.130.0/24八、测试情况结 论通过这段时间对本系统的设计与实现,我们成长了很多,也增长了不少知识。也认识到了自己的不足之处:以前总是眼高手低,现在真动手操作了,才知道,要想熟练的运用学过的知识,也不是一件简单易行的事情,需要不断的积累,不断的实践,不断的总结经验和教训。同时,在设计过程中,遇到不会的问题应及时跟同学老师交流,或者查阅相关文献资料,这样才能提高工作效率,并且提高自己的自信心,同时也可以增强团队合作能力,和与他人的沟通能力。这次实践将会是我们人生的一笔宝贵财富。参考文献1 美Rogers Cadenhead. Java.梅兴文译.第4版.北京:人民邮电出版社,20072 美Bruce Eckel. Thinking In Java.英文第4版.北京:机械工业出版社,20073 陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,20064 杨昭编著.二级Java语言程序设计教程.北京:中国水利水电出版社,20065 赵文靖编著.Java程序设计基础与上机指导.北京:6 赵毅主编.跨平台程序设计语言Java.西安:西安电子科技大学出版社,2006

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1