发送Ethernet+ARP数据包_第1页
发送Ethernet+ARP数据包_第2页
发送Ethernet+ARP数据包_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络课程设计实验报告题目 发送Ethernet ARP包学院数理与信息工程学院专业计算机科学与技术班级计科101学 号201059225101学生姓名 王立娟同组成员 潘明越、曾兵、田胜杰、宋炼杰、陈坦、韦国挺指导教师 郭步编写日期 2012-6-30目录一、程设计的目的和意义 2二、 设计的内容和要求 2三、 设计的相关技术 33.1 ARP协议及工作原理 33.2 ARP的分组格式 33.3工作原理43.4 ARP包的填充 6四、程设计过程 64.1流程图 74.2源程序 84.3运行结果 18五、课程设计小结 19六、参考文献 19一、程设计的目的和意义IP地址将不同的物理地址统一

2、起来,从而将物理地址隐藏起来,上层软件 使用IP地址标识结点。但是。两台计算机只有在知道彼此的物理地址时才能进 行通信。IP数据包常通过Ethernet发送。Ethernet设备并不识别32位IP地址,它 们是以48位MAC地址传输Ethernet数据包的。因此,IP驱动器必须把IP目的 地址转换成Ethernet网络目的地址。这两种地址之间存在着某种静态的或动态 的映射,通常需要查看一张表来进行这种映射。这种地址协议(ARP就是用来确定这些映象的协议。ARP工作时,送出一个所希望的IP地址的Ethernet广播数据包。目的地主 机以一个含有IP和Ethernet地址对的数据包作为应答。发送者

3、将这个地址对高 速缓存起来,以节约不必要的 ARPS信。本课程设计的目的是进一步熟悉 ARPft、议的帧结构以及它的运行过程。二、设计的内容和要求2.1基本要求本次课程设计的基本要求是在熟悉 ARP协议并了解Winpcap编程,或者下载 JAVA类:jpcap包构造ARP包,选择并打开网卡,将 ARP包发送。1)命令行格式:arpse nd src_ip src_mac dst_ip dst_mac flag其中arpsend作为程序名。各参数意义:src_ip:源 IP 地址。src_mac: 源 MAC地址。dst_ip:目的IP地址。dst_mac:目的 MAC地址。Flag : 0表示

4、ARP青求;1表示ARP应答。例如:arpse nd FA:01:02:03:04:05 0D:E1:02:03:B4:0612)输出:Send OK3)程序的正确性的检验。可以安装一个截包软件,如Iris,运行该软件以查看能否收到程序发出的ARP包,并检查包中个字段填充的内容(如各地址, 协议类 型)是否正确。错误!未指定书签。2. 2系统开发语言及环境的选择操作系统:Win dows XP Professio nal运行环境:Microsoft Visual C+ 6.0开发语言:C语言,C+等三、设计的相关技术3.1 ARP协议及工作原理ARF

5、协议是“ Address Resolution Protocol ”(地址解析协议)的缩写。在 局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的 MAC地址的。在 以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标 MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标 IP地址转换成目标MAC地址的过 程。ARP协议的基本功能就是通过目标设备的 IP地址,查询目标设备的 MACM 址,以保证通信的顺利进行。ARP的基本运行过程是:1)主机A希望发送数据分组给主机B,但不知道B的物理地址。2)A发送广播报文

6、,要求B主机用它的物理地址来响应。3)网站上所有主机都接收到这个分组。4)B识别出自己的IP地址,发送应答报文,告诉 A自己的物理地址。3. 2 ARP的分组格式物理帧头(14B)ARP帧结构(28B)填充数据(18B)CRC(4B)图一 ARP分组格式目的 MAC (6B)源 MAC(6B)类型(2B)图2 物理帧头08162431 (位)硬件类型(Ethernet : 0x1)上层协议类型(IP : 0x0800)硬件地址长度(0x6)IP地址长度(0x4)操作(请求:0x1 ;应答:0x2)源MAC地址源MAC地址源IP地址源IP地址目的MAC地址目的MAC地址目的IP地址图3 ARP帧

7、结构3.3工作原理:源主机在传输数据前,首先要对初始数据进行封装,在该过程中会把目的主 机的IP地址和MAC地址封装进去。在通信的最初阶段,我们能够知道目的主机 的IP地址,而MAC地址却是未知的。这时如果目的主机和源主机在同一个网段 内,源主机会以第二层广播的方式发送 ARP请求报文。ARP请求报文中含有源主 机的IP地址和MAC地址,以及目的主机的IP地址。当该报文通过广播方式到达 目的 主机时,目的主机会响应该请求,并返回 ARP响应报文,从而源主机可以 获取目的主机的MAC地址,同样目的主机也能够获得源主机的 MAC地址。如果目 的主机和源主机地址不在同一个网段内,源主机发出的IP数据

8、包会送到交换机的默认网关,而默认网关的MAC地址同样可以通过 ARP协议获取。经过ARP协议 解析IP地址之后,主机会在缓存中保存IP地址和MAC地址的映射条目,此后再 进行数据交换时只要从缓存中读取映射条目即可。ARP协议工作原理详见图4.图4网段内ARP工作原理关于ARF的功能,仅限于在没有安全防护的网络里。1)如果有多个用户都在同一个网关上网,那么若要禁止机器 A上网,应该 怎么做呢?就是让A得不到正确的网关的ARP央射。可以米取如下措施:伪装成 网关,给机器A发送ARP包,该ARP的发送方为网关的IP,而MAC部分随便填 一个地址;接收方正确填写 A的相关信息。2)基于ARP欺骗的监听

9、。如果某台计算机 C和计算机A B位于同一个局域 网内,那么如何监听 A和B间的通信呢?很简单,对 A说“我是B”在对B说“我是A”具体的操作如下:给A发送一个伪造的ARP回应包,告诉A,B的IP 对应的MAC为C的MAC地址,于是A就会相应地刷新自己的 ARP缓存,将发给B 的数据都发送到主机C上来。当然,因为ARP缓存是动态的,有超时时间,所以 必须每隔一段时间就给 A发送一个ARP回应包。为了不让B发现,我们还要对每 次接受到的数据包进行转发。这样就监听了 A发送给B的信息。如果想监听B发 送给A的信息,方法类似。3. 4 ARP包的填充将命令行的参数作适当的转换后填到 ARP分组结构的

10、各字段中即可。要注意的是,填充请求包时。因为包要在 Ethernet上广播,所以,物理帧头 的“目的MAC字段要填充为FFFFFFFFFFF;而ARP帧结构中的目的MAC可填充 为任意值,因为它此时不起作用。“填充数据”字段要填充为0。四、程设计过程4.1流程图N命令行参数 =6 ?Y定义ARP包结构并初始化r开始Flag=O ?ARP请求,填充DLC头中目的MAC (广播,全F)及Flag进入发送ARP包函数NNY分配及初始化发送包结构获取网卡列表?选择网卡打开?发送包成功?Y释放包结构ARP请求,填充 DLC头中目的 MAC及Flag1填充DLC的其他字段及ARP头的各字段关闭网卡结束图5

11、程序流程图4.2源程序#in elude #in elude #in elude #in elude #in elude #in elude #i nclude #pragma eomme nt(lib,ws2_32.lib)/ DLC 头typedef struct DLCHeaderun sig ned charDesMAC6;un sig ned charSrcMAC6;un sig ned shortEthertype; DLCHEADER;/ ARP 桢typedef struct ARPFrameHW_Type;Prot_Type;HW_Addr_Le n;Prot_Addr_Le

12、 n;Flag;Se nd_HW_Addr6;Sen d_Prot_Addr4;Targ HW Addr6;un sig ned shortun sig ned shortun sig ned charun sig ned charun sig ned shortun sig ned charun sig ned charun sig ned charun sig ned charTarg_Prot_Addr4;un sig ned charpaddi ng18; ARPFRAME;/ ARP 包=DLC头 +ARP桢typedef struct ARPPacketDLCHeader dlcH

13、eader;ARPFrame arpFrame;*PARPPACKET;ARPPacket ARPPACKET;II源文件.cpp#in clude #in clude II#i nclude h.hint tran sIP(char *,un sig ned char *);int tran sMAC(char *,un sig ned char *); LPADAPTER IpAdapter;LPPACKET IpPacket;bool Sen d();void main (i nt argc,char *argv)if(argc!=6)cout输入格式错误endl;return;int

14、i=0;memset(&ARPPACKET, 0, sizeof(ARPPACKET);if(*argv =0)for(i=0;i6;i+)ARPPACKET.dlcHeader.DesMACi=0xff;ARPPACKET.arpFrame.Flag=(u nsig ned short)1;elseif(*argv5=1)/ 填充DLC头中目的 MAC地址if(!tra nsMAC(argv4,ARPPACKET.dlcHeader.DesMAC) return;/ARP 桢中flag位置2ARPPACKET.arpFrame.Flag=(u nsig ned short)0x0200;el

15、secoutflag位输入错误endl;if(!tra nsMAC(argv2,ARPPACKET.dlcHeader.SrcMAC)return;II填充DLC头中桢类型ARPPACKET.dlcHeader.Ethertype=hto ns(u nsig ned short)0x0608);ARPPACKET.arpFrame.HW_Type=(u nsig ned short)0x0100;/(Ethernet 类型)ARPPACKET.arpFrame.Prot_Type=(u nsig ned short)0x0008;ARPPACKET.arpFrame.HW_Addr_Le n=

16、(u nsig ned char)6;ARPPACKET.arpFrame.Prot_Addr_Le n=(u nsig ned char)4;if(!tra nsMAC(argv2,ARPPACKET.arpFrame.Se nd_HW_Addr)return;if(!tra nslP(argv1,ARPPACKET.arpFrame.Se nd_Prot_Addr)return;if(!tra nsMAC(argv4,ARPPACKET.arpFrame.Targ_HW_Addr)return;if(!tra nslP(argv3,ARPPACKET.arpFrame.Targ_Prot_

17、Addr)return;for(i=0;i18;i+)ARPPACKET.arpFrame.paddi ngi=O;if(!Se nd()cout 发送 arp 包失败endl;int tran slP(char *argv, un sig ned char *a)char ip16;int i=O,j=O,k=O;strcpy(ip,argv);int m=strle n( argv);for(i=0;im;i+)/判断命令行输入的IP格式是否正确if(ipi9) &ipi!=.)cout输入 ip:argv格式错误3)cout 输入 ip:argv格式错误3)cout 输入 ip:argv

18、格式错误endl;return 0;j=0;for(i=0;i4;i+)/填充 IP 地址while(*(ip+j)9)j+;ai=(un sig ned char)atoi(ip+j);while(*(ip+j)=0&*(ip+j)=9)j+;return 1;int tran sMAC(char *argv, un sig ned char *b)char mac18;int i=O,j=O,k=O;strcpy(mac,argv);int m=strle n( argv);for(i=0;im;i+)/判断命令行输入的MAC地址是否正确if(maci:&maciZ&maciZ)cout

19、输入 mac:argv格式错误2)cout 输入 macargv格式错误5)cout 输入 macargv格式错误endl;return 0;for(i=0;i=0&*(mac+j)=a&*(mac+j)=A&*(mac+j)=0&*(mac+j)=a&*(mac+j)=A&*(mac+j)= 0x80000000 & dwWi ndowsMajorVersio n =4)/Win dows NT/ 获取UNICODE码网卡名列表if(PacketGetAd apterNames(AdapterNameU,&AdapterUle ngth)=FALSE)cout 无法得到网卡列表!e ndl;

20、return FALSE;/将第一个网卡名转为 ASCII码un sig ned short *pAdapterName=(un sig ned short *)AdapterNameU;for(un sig ned i=0;iAdapterAle ngth;i+)if(AdapterNameAi=(char)pAdapterNamei)=0)break;else/Win dows 9x/ 获取ASCII码网卡名列表if(PacketGetAdapterNames(AdapterNameA,&AdapterAle ngth)=FALSE)cout无法得到网卡列表!hFile=INVALID_H

21、ANDLE_VALUE)cout无法打开网卡,错误码:GetLastError()e ndl;return FALSE;/发送帧LPPACKET lpPacket; /分配发送包结构if(l pPacket=PacketAllocatePacket()!=NULL)/初始化发送包结构PacketI nitPacket(lpPacket,&ARPPACKET,sizeof(ARPPACKET);/每次只发送一个包PacketSetNumWrites(lpAdapter,1);/ 发送包if(PacketSe ndPacket(lpAdapter,lpPacket,true)=1)coutse n

22、d oke ndl;elsecout发送包失败endl;PacketFreePacket(lpPacket); /释放发送包结构 elsecout分配发送包LPPACKE结构失败!0000000000000000000000000000000000B Address Resolution Protocol reply)Hardware type: Ethernet (0x0001)Protocol type: IP (0x0800)Hardh!re size: 6Protocol size:opcode: reply (ojcomz)is gratuitous: Fal$esender mac

23、 addrz器 11:12:13:14:15:ie U1:12;13:14 :15:1Osender ip addri: 1 172.16,0,11)Target MAC address: 21:22:?3:2J:25:2C (21:22:23:24 :25:26)Target IP address: 172.1 &0.12 (172.16. 0.12j00000010002000302 2 oo1 11 o1 1 co11 ao6 2 6-02 0 205 0 502 0 204 H4 o2 S2-O3 6 302 0 202 0 202 0 201 fl 1 o2 0 20I b o ooo ooo Doo6 0- o 1 o SCOo ao6 6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论