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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(发送EthernetARP数据包.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

发送EthernetARP数据包.docx

1、发送EthernetARP数据包计算机网络基础课程设计报告题 目: 发送Ethernet AR P 学生姓名: 学 号: 专业班级: 同组姓名: 指导教师: 设计时间: 2011年下学期第18周 指导老师意见:评定成绩: 签名: 日期:2012年 1 月 5 日 一、课程设计的目的和意义IP地址将不同的物理地址统一起来,从而将物理地址隐藏起来,上层软件使用IP地址标识结点。但是。两台计算机只有在知道彼此的物理地址时才能进行通信。IP数据包常通过Ethernet发送。Ethernet设备并不识别32位IP地址,它们是以48位MAC地址传输Ethernet数据包的。因此,IP驱动器必须把IP目的地

2、址转换成Ethernet网络目的地址。这两种地址之间存在着某种静态的或动态的映射,通常需要查看一张表来进行这种映射。这种地址协议(ARP)就是用来确定这些映象的协议。ARP工作时,送出一个所希望的IP地址的Ethernet广播数据包。目的地主机以一个含有IP和Ethernet地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。本课程设计的目的是进一步熟悉ARP协议的帧结构以及它的运行过程二、设计的内容和要求 基本要求 本次课程设计的基本要求是在熟悉ARP协议并了解Winpcap编程,或者下载JAVA类:jpcap包构造ARP包,选择并打开网卡,将ARP包发送。1)

3、命令行格式:arpsend src_ip src_mac dst_ip dst_mac flag其中arpsend作为程序名。各参数意义:src_ip: 源IP地址。src_mac: 源MAC地址。dst_ip: 目的IP地址。dst_mac: 目的MAC地址。Flag:0表示ARP请求;1表示ARP应答。例如:arpsend FA:01:02:03:04:05 0D:E1:02:03:B4:06 12)输出:Send OK。3)程序的正确性的检验。可以安装一个截包软件,如Iris,运行该软件以查看能否收到程序发出的ARP包,并检查包中个字段填充的内容(如各地址,协议类型)是否正确。Error

4、! No bookmark name given.2. 2系统开发语言及环境的选择操作系统:Windows XP Professional运行环境:Microsoft Visual C+ 开发语言:C语言,C+等三、设计的相关技术 ARP协议及工作原理 ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前

5、将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。ARP的基本运行过程是:1)主机A希望发送数据分组给主机B,但不知道B的物理地址。2)A发送广播报文,要求B主机用它的物理地址来响应。3)网站上所有主机都接收到这个分组。4)B识别出自己的IP地址,发送应答报文,告诉A自己的物理地址。32 ARP的分组格式物理帧头(14B)ARP帧结构(28B)填充数据(18B)CRC(4B)图一 ARP分组格式目的MAC (6B)源MAC(6B) 类型(2B) 图2 物理帧头 0 8 16 24 31(位) 硬件类型(Et

6、hernet:0x1) 上层协议类型(IP:0x0800)硬件地址长度(0x6)IP地址长度(0x4) 操作(请求: 0x1; 应答: 0x2) 源MAC地址 源MAC地址 源IP地址 源IP地址 目的MAC地址 目的MAC地址 目的IP地址图3 ARP帧结构工作原理: 源主机在传输数据前,首先要对初始数据进行封装,在该过程中会把目的主机的IP地址和MAC地址封装进去。在通信的最初阶段,我们能够知道目的主机的IP地址,而MAC地址却是未知的。这时如果目的主机和源主机在同一个网段内,源主机会以第二层广播的方式发送ARP请求报文。ARP请求报文中含有源主机的IP地址和MAC地址,以及目的主机的IP

7、地址。当该报文通过广播方式到达目的 主机时,目的主机会响应该请求,并返回ARP响应报文,从而源主机可以获取目的主机的MAC地址,同样目的主机也能够获得源主机的MAC地址。如果目的主机和源主机地址不在同一个网段内,源主机发出的IP数据包会送到交换机的默认网关,而默认网关的MAC地址同样可以通过ARP协议获取。经过ARP协议解析IP地址之后,主机会在缓存中保存IP地址和MAC地址的映射条目,此后再进行数据交换时只要从缓存中读取映射条目即可。ARP协议工作原理详见图4.图4 网段内ARP工作原理关于ARP的功能,仅限于在没有安全防护的网络里。1) 如果有多个用户都在同一个网关上网,那么若要禁止机器A

8、上网,应该怎么做呢?就是让A得不到正确的网关的ARP映射。可以采取如下措施:伪装成网关,给机器A发送ARP包,该ARP的发送方为网关的IP,而MAC部分随便填一个地址;接收方正确填写A的相关信息。2)基于ARP欺骗的监听。如果某台计算机C和计算机A、B位于同一个局域网内,那么如何监听A和B间的通信呢?很简单,对A说“我是B”,在对B说“我是A”。具体的操作如下:给A发送一个伪造的ARP回应包,告诉A,B的IP对应的MAC为C的MAC地址,于是A就会相应地刷新自己的ARP缓存,将发给B的数据都发送到主机C上来。当然,因为ARP缓存是动态的,有超时时间,所以必须每隔一段时间就给A发送一个ARP回应

9、包。为了不让B发现,我们还要对每次接受到的数据包进行转发。这样就监听了A发送给B的信息。如果想监听B发送给A的信息,方法类似。34 ARP包的填充 将命令行的参数作适当的转换后填到ARP分组结构的各字段中即可。 要注意的是,填充请求包时。因为包要在Ethernet上广播,所以,物理帧头的“目的MAC”字段要填充为FFFFFFFFFFFF;而ARP帧结构中的目的MAC可填充为任意值,因为它此时不起作用。“填充数据”字段要填充为0。四、程设计过程 流程图 图5 程序流程图源程序#include #include #pragma comment(lib,)#include main(int argc

10、, char *argv) u_char packet100; pcap_if_t *alldevs; pcap_if_t *d; int inum; int i=0,j,k,temp4; pcap_t *adhandle; char errbufPCAP_ERRBUF_SIZE; /* 获取设备列表 */ if (argc != 6) printf(使用: %s 接口 , argv0); return -1; if (pcap_findalldevs(&alldevs, errbuf) = -1) fprintf(stderr,pcap_findalldevs错误: %sn, errbuf)

11、; exit(1); /* 数据列表 */ for(d=alldevs; d; d=d-next) printf(%d. %s, +i, d-name); if (d-description) printf( (%s)n, d-description); else printf( (没有可用的描述)n); if(i=0) printf(n没有发现接口!请确保安装winpcap。n); return -1; printf(输入接口号码 (1-%d):,i); scanf(%d, &inum); if(inum i) printf(n接口号码超过范围.n); /* 释放设备列表 */ pcap_f

12、reealldevs(alldevs); return -1; /* 转到选择的设备 */ for(d=alldevs, i=0; inext, i+); /* 打开设备 */ if ( (adhandle= pcap_open_live(d-name, %s 不支持 WinPcapn); /* 释放列表 */ pcap_freealldevs(alldevs); return -1; /* 我们已经不需要设备列表了, 释放它 */ pcap_freealldevs(alldevs); /* 填充数据段 */ ;j=j+temp3) temp0=0; temp1=0; temp2=0; tem

13、p3=0; for(i=0;i=0&argv1j+i=9) temp0=(int)argv1j+i-48; temp1=temp1*10+temp0; else temp2=1; temp3+; packet28+k=temp1; k+; ;j=j+temp3) temp0=0; temp1=0; temp2=0; temp3=0; for(i=0;i=0&argv3j+i=9) temp0=(int)argv3j+i-48; temp1=temp1*10+temp0; else temp2=1; temp3+; packet38+k=temp1; k+; packet12=0x08; pac

14、ket13=0x06; packet14=0x00; packet15=0x01; packet16=0x08; packet17=0x00; packet18=0x06; packet19=0x04; packet20=0x00; packet21=(int)argv50-47; /* 填充发送包的剩余部分 */ for(i=0;i22;i+) packet42+i=0; /* 发送包 */ pcap_sendpacket(adhandle, packet, 64); printf(n发送成功n); return 0; 运行结果1.应该在预编译代码区加上预编译指令:#pragma comme

15、nt(lib, );否则,链接时会出现符号无法解析的错误。2.程序中填充DLC头中帧类型应该是: = htons(unsigned short)0x0806);而实验所给的代码却是: = htons(unsigned short)0x0608);。而ARP报文封装在以太网帧中的帧类型字段应该是0x0806。3.程序在int transMAC(char *argv, unsigned char *b)函数中,判断MAC地址的格式是否正确后,在填充MAC地址之前,应该初始化局部变量j的值,即:j=0;。否则,在MAC地址格式正确的情况下,j的值为2,而后面填充MAC地址的时候会把正确的MAC地址的

16、第一个十六进制字段删除。例如:正确的MAC地址- 11:12:13:14:15:16在被填充后会变成12:13:14:15:16:00。4.在bool Send()函数中,原程序打开网卡的程序代码为:lpAdapter = PacketOpenAdapter(AdapterNameA);。但是在XP系统中运行该程序时,始终打不开网卡。后经过分析,得知XP系统中的网卡名是UNICODE编码的,占2个字节,而AdapterNameA的长度是1个字节的ASCII编码方式。后来把那句代码改为:lpAdapter = PacketOpenAdapter(AdapterNameU);(注:AdapterN

17、ameU的长度是2个字节)就成功打开网卡了。5.下面是正确运行的程序(发送EthernetARP包的程序)的截图图六 在DOS窗口下运行本程序图七 用Wireshark截获的包五、课程设计小结这次课程设计让我受益匪浅。通过对C语言和C+的学习,对编程有了一定的了解。但学完后,我也只能是纸上谈兵,真正动起手来,还是茫然不知所措。这次程设计就给了我们一次很好的机会,在同组人员的互相帮助下,我们将所学的编程语言与计算机网络联系,进一步熟悉了ARP协议的帧结构以及它的运行过程。ARP工作时,送出一个所希望的IP地址的Ethernet广播数据包,目的地主机以一个含有IP和Ethernet地址对的数据包作

18、为应答。 通过相关扩展,熟悉了基于ARP欺骗的监听,如果某台计算机C和计算机A、B位于同一个局域网中,可以用C来监听A和B之间的通信,具体操作如下:C给A发送一个伪造的ARP回应包,告诉A,B的IP对应的MAC为C的MAC地址,于是A就会相应地刷新自己的ARO缓存,将发给B的数据都发送到主机C上来,这样C就实现了欺骗和监听。很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“认真字,它好比通向成功的铺路石,不可或缺。课程设计之前,我总感觉自己学的还不错,但是,这次课程设计之后,我才真正看到自己知识的漏洞与不足,任何事情都只怕“认真”二字,付出了百分百,就能得到百分百,这是我最大的收获。六、参考文献1 郭国强等 . 计算机网络与Internet教程(第二版) M . 北京:清华大学出版社. 2003 2 谢希仁 . 计算机网络 M . 北京:电子工业出版社. 20073 胡金初. 计算机网络 M . 北京:清华大学出版社. 2005

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

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