广工计算机网络课程设计

上传人:pu****.1 文档编号:476986763 上传时间:2023-02-09 格式:DOC 页数:14 大小:305KB
返回 下载 相关 举报
广工计算机网络课程设计_第1页
第1页 / 共14页
广工计算机网络课程设计_第2页
第2页 / 共14页
广工计算机网络课程设计_第3页
第3页 / 共14页
广工计算机网络课程设计_第4页
第4页 / 共14页
广工计算机网络课程设计_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《广工计算机网络课程设计》由会员分享,可在线阅读,更多相关《广工计算机网络课程设计(14页珍藏版)》请在金锄头文库上搜索。

1、word课 程 设 计课程名称 计算机网络 题目名称 使用ARP获取局域网内部活动主机的物理地址 学生学院 计算机学院 专业班级 学 号学生某某 指导教师 2013年 1月 6 日计算机网络课程设计任务书设计题目使用ARP协议获取局域网内部活动主机的物理地址技术参数和设计要求1.参数:选择适当的网络适配器,以绑定Winpcap利用Win32环境下数据包捕获的开发代码函数库实现抓包和分析。2.设计要求:定义和封装ARP数据包,将主机对应的网卡设置成混杂模式,截取局域网的数据包,并设置过滤后获取ARP包,分析ARP包,获得活动主机的物理地址。 2.1ARP协议包的格式?定义ARP包结构并初始化。2

2、.2 如何获取主机的网卡列表?2.3 如何将网卡的工作方式设置为混杂模式?2.4 如何过滤ARP数据包?2.5如何解析目的主机的响应ARP帧?2.6 用列表的方式显示局域网当前各活动主机的物理地址。设计内容与步骤1.熟悉ARP协议的工作原理;3.构造ARP请求数据帧;4.使用Winpcap相关函数ARP包的发送函数实现数据帧的发送;5.接收与解析目的主机的响应数据帧;6.获得IP地址与MAC地址的对应关系并显示;设计工作计划与进度安排1.知识准备,整体思路设计 2小时2.开发环境与程序调试环境 4小时3.构造协议需要的相关数据帧,使用标准数据帧结构 2小时4.数据帧的发送 10小时5.接收、解

3、析目的主机的相应数据帧,并显示结果 12小时6.完成课程设计报告 5小时使用ARP协议获取局域网内部活动主机的物理地址一 实验需求分析定义和封装ARP数据包,将主机对应的网卡设置成混杂模式,截取局域网的数据包,并设置过滤后获取ARP包,分析ARP包,获得活动主机的物理地址。1.熟悉ARP协议的工作原理;2.熟悉ARP协议相关数据帧结构;3.构造ARP请求数据帧;4.使用Winpcap相关函数ARP包的发送函数实现数据帧的发送;5.接收与解析目的主机的响应数据帧;6.获得IP地址与MAC地址的对应关系并显示; Win7,visual studio 2010,wincap 二 项目设计 1在网际协

4、议中定义的是因特网的IP地址,但在实际进展通信时,物理层不能识别IP地址只能识别物理地址。因此,需在IP地址与物理地址之间建立映射关系,地址之间的这种映射称为地址解析。 2以太网网络中的物理地址即网卡的序列号。IEEE规定网卡序列号为6个字节48位,前三个字节为厂商代号,由于厂商向IEEE注册登记申请,后3个字节为网卡的流水号。 3地址解析包括从IP地址到物理地址的映射和从物理地址到IP地址的映射。TCP/IP协议组提供了两个映射协议:地址解析协议ARP和逆向地址解析协议RARP。ARP用于从IP地址到物理地址的映射,RARP用于从物理地址到IP地址的映射。 4地址解析协议的ARP的工作原理:

5、假定在一个物理网络上,A源主机要与D目的主机进展通信,但是不知道D的物理地址。 A利用ARP协议工作的过程如下: 广播一个ARP请求报文,请求IP地址为IPD的主机回答其物理地址。网上所有主机都能收到该ARP请求,并将本机IP地址与请求的IP地址比拟,D主机识别出自己的地址IPD,并作出回应,通报自己的物理地址。A收到这个ARP回应包后,就可以与D进展通信。为了提高效率,ARP协议使用了高速缓存技术。在每台使用ARP的主机中,都保存了一个专用的内存区,一收到ARP应答,主机就将获得的IP地址和物理地址存入缓存。以后每次要发送报文时,首先到缓存中查找有无相应的项,假如找不到,再利用ARP进展地址

6、解析。由于多数网络通信都要连续发送多个报文,所以高速缓存大大提高ARP的效率。在ARP请求报文中还放入源主机的“IP地址物理地址的地址对,源主机在广播ARP请求时,网络上所有主机都可以知道该源主机的“IP地址物理地址的地址对并将其存入自己的缓存。在新主机入网时,令其主动广播其地址映射,以减少其他主机进展ARP请求。 5网卡具有如下的几种工作模式: 广播模式Broad Cast Model:它的物理地址MAC地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。 多播传送MultiCast Model:多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接

7、收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。 直接模式Direct Model:工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。 混杂模式Promiscuous Model:工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。 6ARP帧的数据结构表达方式:以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806.硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;协议类型

8、字段:表示要映射的协议地址类型,IP为0X0800;硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送端的以太网地址:源主机硬件地址,6个字节;发送端IP地址:发送端的协议地址IP地址,4个字节;目的以太网地址:目的端硬件地址,6个字节;目的IP地址:目的端的协议地址IP地址,4个字节。 7WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上

9、解析网络封包,包含了核心的封包过滤,一个底层动态库,和一个高层系统函数库,与可用来直接存取封包的应用程序界面。Winpcap是一个免费公开的软件系统。它用于windows系统下的直接的网络编程。三 数据结构3.1 /28字节ARP帧结构struct arp_head unsigned short hardware_type; /硬件类型 unsigned short protocol_type; /协议类型 unsigned char hardware_add_len; /硬件地址长度 unsigned char protocol_add_len; /协议地址长度 unsigned short

10、 operation_field; /操作字段 unsigned char source_mac_add6; /源mac地址 unsigned long source_ip_add; /源ip地址 unsigned char dest_mac_add6; /目的mac地址 unsigned long dest_ip_add; /目的ip地址;/14字节以太网帧结构struct ethernet_head unsigned char dest_mac_add6; /目的mac地址 unsigned char source_mac_add6; /源mac地址 unsigned short type

11、; /帧类型;/arp最终包结构struct arp_packet struct ethernet_head ed; struct arp_head ah;四 详细设计主函数int main() pcap_if_t *alldevs; pcap_if_t *d; int inum; int i=0; pcap_t *adhandle; char errbufPCAP_ERRBUF_SIZE; char *ip_addr; char *ip_netmask; unsigned char *ip_mac; HANDLE sendthread; HANDLE recvthread; ip_addr=

12、(char *)malloc(sizeof(char)*16);/申请内存存放IP地址 if(ip_addr=NULL) printf(申请内存存放IP地址失败!n); return -1; ip_netmask=(char *)malloc(sizeof(char)*16);/申请内存存放NETMASK地址 if(ip_netmask=NULL) printf(申请内存存放NETMASK地址失败!n); return -1; ip_mac=(unsigned char *)malloc(sizeof(unsigned char)*6);/申请内存存放MAC地址 if(ip_mac=NULL)

13、 printf(申请内存存放MAC地址失败!n); return -1; /* 获取本机设备列表*/ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) = -1) fprintf(stderr,Error in pcap_findalldevs: %sn, errbuf); exit(1); /* 打印列表*/ printf(本机网卡列表:n); for(d=alldevs; d; d=d-next) printf(%d) %sn, +i, d-name); if (d-description) printf( (%s)n, d-description); else printf( (No description available)n); if(i=0) printf(n找不到网卡!请确认是否已安装WinPcap.n); return -1; printf(n); printf(请选择要打开的网卡号(1-%d):,i); scanf(%d, &inum); if(inum i) printf(n该网卡号超过现有网卡数!请按任意键退出n

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号