广工计算机网络课程设计
- 格式:doc
- 大小:338.00 KB
- 文档页数:15
【第三课时教学设计】3.2 计算机网络——探秘计算机网络一、教学内容分析本节是粤教版必修二《信息系统与社会》第三章《信息系统的网络组建》第二节,前面已经学习了信息系统与外部世界的连接方式,让学生感受到了交往方式的改变。
本节通过学生生活的经验,引导学生理解计算机网络在信息系统中的作用:数据传输、资源共享、分布式处理。
通过本节内容的学习不仅能够加深对信息系统组成和工作原理的理解,还能更加清晰的明白计算机网络在物联网中的作用以及为今后进行计算机网络搭建打下一定的理论基础。
二、学情分析在之前的学习中,学生掌握了信息系统的组成与功能以及物联网的核心概念和关键技术,但学生对计算机网络在信息系统中主要起到什么作用了解不系统、不全面,认知层面还停留在借助各种终端在网络中搜索和使用资源,但对于计算机网络的工作原理他们是缺乏认知的。
学生对信息技术有强烈的好奇心和求知欲,但又不喜欢枯燥乏味的单调讲解。
学生对于身边的未知是乐于探究的。
三、教学目标分析学科素养目标(一)信息意识主动关注信息技术工具发展中的新动向和新趋势,有意识地使用新技术处理信息。
(二)计算思维了解计算机网络数据传输作用。
能提取问题的基本特征,抽象处理,利用形象化的方式表达。
(三)信息社会责任在信息活动中,具有信息安全意识,采用简单技术手段,保护数据、信息及信息设备安全。
知识目标1.理解计算机网络在信息系统中的作用;2.能够理解计算机网络的数据传输作用;3.通过项目化学习和探究活动,学生能够选择并加工合适的传输介质应用到智能家居系统当中。
四、教学重难点分析重点:理解计算机网络在信息系统中的作用。
难点:知道计算机网络的传输协议。
五、教学活动设计六、教学准备教学工具:双绞线、压线钳、测线仪。
七、教学实施过程教师根据学生回答进行总结:计算机网络在信息系统中主要起到数据传输、资源共享、分布式处理三方面作用。
2. 教师提问:思考哪些生活场景分别体现了这些作用?总结:微信视频聊天、收发电子邮件等;浏览网页、在线游戏、网购、文件等;王者荣耀选择不同服务器作为游戏入口。
1.1 认识计算机网络教学设计【教材分析】本课是网络技术应用的第一课,对于高二的学生来说是知识点比较容易的,所以把重点放在引导学生对知识归纳、总结能力的运用上及帮助学生学会观注身边的网络技术应用与发展。
根据教材的知识链确定从功能—组成—总结—分类,也为下节课不同的连接策略做铺垫。
【学情分析】学生对网络并不陌生,但是大多数学生对网络的认识只是浏览网页、QQ聊天、网上看视频、网上购物等一些网络应用上,甚至对计算机网络应用和功能很难分清。
为了让学生对计算机网络有直观的认识,特意让学生在课余时间观看中央电视台《互联网时代》纪录片第一集,对互联网的由来和发展有清晰的认识,不再局限在无形之中,并且激发对计算机网络的探索。
【教学目标】一、知识与技能目标1、了解计算机网络的主要功能、分类和组成;2、理解计算机网络的基本概念。
二、过程与方法目标1、通过学习掌握计算机网络的相关知识,能利用所学网络知识对实际问题进行分析探讨。
三、情感态度和价值观目标1、感受互联网的发展,激发对网络技术的求知欲;2、认识到现代信息技术对人类学习、生活的影响,了解社会发展和科技进步的相互作用。
【教学重点】引导学生归纳总结计算机网络的功能与组成。
【教学难点】计算机网络的定义、分类。
【教学过程】一、课前准备观看《互联网时代》,了解互联网的发展历程。
Internet的前身,产生的背景条件,为什么后来改名为Internet?二、问题导入生活中哪些地方使用到计算机网络?学生回答。
浏览网页,收发邮件,视频聊天,下载图片,网上购物等等这些都是学生所熟知的。
老师引导难道计算机网络只有Internet吗?我们身边还有哪些计算机网络呢?如果学生遇到困难老师可抛砖引玉举例。
银行ATM机业务、超市收银系统、学校食堂打卡系统等等,这些没有连接因特网,但是也是处在计算机网络中,我们的生活处处离不开计算机网络,那么什么是计算机网络呢?我们先从计算机网络实现了我们哪些功能讲起。
高中信息技术认识计算机网教案粤教版选修一、教学目标1. 让学生了解计算机网络的基本概念、组成和功能。
2. 使学生掌握计算机网络的分类、拓扑结构和工作原理。
3. 培养学生运用计算机网络进行信息交流和资源共享的能力。
4. 提高学生对计算机网络安全的认识,增强安全意识。
二、教学内容1. 计算机网络的基本概念1.1 计算机网络的定义1.2 计算机网络的发展历程1.3 计算机网络的组成要素2. 计算机网络的分类2.1 局域网(LAN)2.2 广域网(WAN)2.3 城域网(MAN)3. 计算机网络的拓扑结构3.1 总线型拓扑3.2 环型拓扑3.3 星型拓扑3.4 树型拓扑4. 计算机网络的工作原理4.1 网络协议4.2 数据传输方式4.3 网络设备4.4 网络互联三、教学方法1. 采用问题驱动的教学方法,引导学生主动探究计算机网络的相关知识。
2. 使用案例分析法,结合生活实际,使学生更好地理解计算机网络的应用。
3. 利用多媒体教学手段,展示计算机网络的图形界面和动态过程,提高学生的学习兴趣。
4. 组织小组讨论,培养学生团队合作精神和沟通能力。
四、教学准备1. 准备计算机网络的相关教材、PPT课件和案例素材。
2. 安排实验室或机房,准备网络设备,搭建实验环境。
3. 设计好问题驱动的教学问题和小组讨论话题。
五、教学评价1. 学生课堂参与度:观察学生在课堂上的发言、提问和讨论情况,评价学生的参与度。
2. 学生作业和实验报告:评估学生在作业和实验报告中的表现,了解学生对知识的掌握程度。
3. 小组讨论:评价学生在团队合作中的表现,包括沟通、协作和解决问题能力。
4. 期末考试:设置有关计算机网络的知识点,检验学生对本课程知识的总体掌握情况。
六、教学重点与难点教学重点:计算机网络的基本概念、组成和功能。
计算机网络的分类、拓扑结构和工作原理。
计算机网络协议的基本概念和作用。
常见的网络设备及其功能。
网络互联的基本概念和实现方法。
第一章网络的组建与运行第一节认识计算机网络〔第1周〕1课时教学目标:了解计算机网络的功能、分类;掌握计算机网络的定义、组成。
重点:计算机网络的功能、组成、定义。
难点:计算机网络的组成教学过程:一、引入计算机网络技术的开展和普与日益改变着我们的学习和生活,各种各样的网络应用让我们眼花缭乱,因特网让我们真正体会到信息爆炸的威力……,这节课我们一起来谈谈我们对计算机网络的认识。
二、新课讲授〔一〕计算机网络的功能〔阅读课本P2~P3,并填表1-1〕活动一:小组讨论总结我们生活中有哪些地方使用了计算机网络。
活动二::结合活动一中列举的计算机网络的具体应用实例,总结归纳计算机网络的功能.总结:计算机网络的应用虽然已经渗透到生活的方方面面,但所有的应用可以归结为三大功能:资源共享、数据通信和分布处理与分布控制。
〔二〕计算机网络的组成与定义活动三:了解学校计算机网络的建设情况。
总结两点:1、计算机网络组成:(1)、多台地理上分散的独立计算机系统。
(2)、通信协议。
(3)、传输介质和网络设备。
2、计算机网络是多台地理上分散的独立计算机系统遵循约定的通信协议,通过传输介质和网络设备互相连接起来,实现数据通信、资源共享的系统。
〔四〕计算机网络的分类按覆盖的面积的大小来分:名称网络规模大小局域网LAN 10千米以内城域网MAN 10千米到60千米以内广域网W AN 100千米以外交流:除我们了解的校园网、网络实验室这类局域网以外,请与同学们交流,看能否为城域网和广域网举一些实际应用的例子。
三、课堂小结四、作业1、学习本节内容之前,你是否认为计算机网络就是因特网,谈谈你的看法。
2、浏览网页、收发、网络聊天就是计算机网络的功能,请你谈谈这种说法正确吗?为什么?3、完成在线随堂小测。
第二节不同的连接策略〔第2、3周〕2课时学习目标:1、了解网络类型、网络传输介质、网络连接设备2、掌握网络拓扑结构教学重点、难点:各种网络拓扑结构的认识教学过程:一、根据需求选择网络问题:假设你希望与邻居好友的计算机连接起来,能够共享彼此的文件与打印机,并可以联网打游戏,请问你如何组网?需求分析:计算机数量?实现服务?组网距离?速度?介质?设备?协议?一、网络类型类型优点缺点对等网(workgroup) 每台计算机能同时提供和使用资源;无须服务器负载大;备份困难密码多服务器(Server) --客户机(Client) 对资源集中控制,使用户更容易找到资源需要有专门服务器与网络操作系统〔造价高〕二、网络传输介质超5类双绞线同轴电缆光纤图示传输100Mbps/155Mbps以上10Mbps/100Mbps 1000Mbps以上速率价格相对廉价相对廉价昂贵安装难易度容易安装和管理,需使用RJ-45连接器。
3.2《计算机网络》教学设计-粤教版高中信息技术(2019)必修二《信息系统与社会》学科核心素养目标(一)信息意识主动关注信息技术工具发展中的新动向和新趋势,有意识地使用新技术处理信息。
(二)计算思维知道信息系统与外部世界的连接方式;了解计算机网络数据传输作用、资源(硬件、软件、数据、信道)共享作用、分布式处理作用。
能提取问题的基本特征,抽象处理,并用形式化的方法表述问题。
(三)信息社会责任在信息活动中,具有信息安全意识,尊重和保护个人及他人的隐私;采用简单技术手段,保护数据、信息及信息设备安全。
【教学重点】(1)了解计算机网络在信息系统中的作用;(2)理解数据传输、资源共享、分布式处理的概念。
【教学难点】能分析信息系统的要素组成,了解协同工作,实现系统功能。
(1)情境导入,激发兴趣当今信息社会,计算机网络已经成为人们生活、学习、工作中不可或缺的一部分,可谓无处不在。
利用计算机网络,人们可以随时随地通过信息系统进行在线学习、办公、购物、订票,可以足不出户进行电子商务,还可以欣赏音乐、电影、体育比赛等。
教师提问:下面是一个校园消费信息系统结构图,同学们观察一下,这个系统有哪些要素组成呢?它们是怎么协同工作的呢?(2)引入本堂课要点:计算机网络在信息系统中的作用。
一、计算机网络在信息系统中的作用:校园消费信息系一、数据传输:数据传输是计算机网络最基本的功能,它将不同地理位置的计算机与终端、计算机与计算机连接起来,快速传送各种类型的信息。
1、传输介质:计算机网络按传输介质不同分为:有线网络和无线网络。
数据传输需要介质,常用的传输介质为:有线传输介质和无线传输介质。
有线传输介质主要有:双绞线、同轴电缆、光纤。
无线传输介质主要指电磁波:无线电波、微波、红外线、激光等。
任务1:调查了解不同网络传输介质的区别,将调查结果填写下表:2、传输协议:数据在网络中传输必须遵守一定的规则和约定,即网络传输协议。
常见的有:TCP/IP、HTTP、FTP 等。
校园网络设计一、设计目的1.通过对网络的具体规划和组建,掌握网络互连设备的使用及工作原理,增加对计算机网络软、硬件组成的感性认识,初步学会典型局域网络的操作和使用技能;2.加深理解网络分层结构概念,尤其是对话层、表示层、应用层等高层协议软件的通信功能、实现方法,掌握网络互连设备的使用及工作原理,掌握IP地址的配置;3.初步掌握局域网的设计技术和技巧培养开发网络应用的独立工作能力,掌握IP 地址的配置及数据传输过程道贺路由的选择。
二、设计方案校园网络设计拓扑图如下所示:网络中心路由器网络配置如下图:中心服务器IP及网关配置如下图:高级管理用户IP及网关配置如下图:一号楼普通用户1的IP及网关配置如下图:三、设计结果与分析1.方案达到目的(1)内网络能够高速访问电子阅览室现实现资源共享功能,不同权限的用户通过网络邻居,电子阅览室或者通过电子阅览室的内网IP地址连接,可以下载和上传资料文件,访问速度完全可以达到客户要求。
同时在外网用户通过通过学校的网站的资料下载链接匿名访问电子阅览室下载课件、软件、资料等,电子阅览室授权用户通过域名,用户名和密码登陆 FTP服务器,使用不同的权限来访问服务器资源。
(2)内建设多媒体教室对外实现实现信息发布,对内实现教学教务管理。
网站发布学校新闻、通知、学校的活动等相关内容,同时提供相关学校教务教学管理,老师、学生、学校领导等相关人员在外网和内网通过不同的域名和授权用户登陆教学教务管理系统,通过网络完成相关工作,缩短工作时间和提高工作效率。
(3)内部用户管理,实现用户的分级管理功能,通过路由器对用户下载和上传做相应的带宽限制。
通过路由器管理功能实现针对老师、学生、领导上网做不同的设置,满足他们的相关要求同时对其访问的网站、使用的上网软件、下载和上传等做不同的限制。
网络内同一IP段内的PC机可以通过网上邻居实现高速互访,传送资料文件等,解决不同楼宇,不同楼层之间通过移动存储设备传送数据费时、费力的问题。
计算机网络的课程设计一、课程目标知识目标:1. 让学生理解计算机网络的基本概念,掌握网络的结构、分类及工作原理。
2. 使学生掌握TCP/IP协议的基本原理,了解不同层级的网络协议及其功能。
3. 帮助学生了解网络设备的基本功能,如交换机、路由器等,并掌握其配置方法。
技能目标:1. 培养学生运用所学知识构建小型网络的能力,提高实际操作技能。
2. 培养学生运用网络命令和软件分析网络故障,具备一定的网络维护能力。
3. 提高学生的团队协作能力,通过分组讨论和实践,共同解决问题。
情感态度价值观目标:1. 培养学生对计算机网络技术的兴趣,激发他们探索网络世界的热情。
2. 培养学生具备网络安全意识,遵守网络道德规范,合理使用网络资源。
3. 通过学习计算机网络,使学生认识到科技对社会发展的作用,增强社会责任感。
课程性质分析:本课程旨在让学生深入了解计算机网络的原理和应用,结合实践操作,提高学生的网络技能。
学生特点分析:高中生具有一定的逻辑思维能力和动手操作能力,对新鲜事物充满好奇心,但需引导他们将理论知识与实际应用相结合。
教学要求:1. 注重理论与实践相结合,提高学生的实际操作能力。
2. 创设情境,激发学生的学习兴趣,引导他们主动探究。
3. 强调团队协作,培养学生的沟通能力和协作精神。
二、教学内容1. 计算机网络基本概念:包括网络定义、功能、分类及拓扑结构。
教材章节:第一章 计算机网络概述2. 网络体系结构:学习OSI七层模型和TCP/IP四层模型,了解各层功能及协议。
教材章节:第二章 网络体系结构及协议3. 网络设备与传输介质:介绍常用的网络设备(如交换机、路由器等)及传输介质(如双绞线、光纤等)。
教材章节:第三章 网络设备与传输介质4. 网络协议详解:深入学习TCP/IP协议族,包括IP、TCP、UDP、ICMP等协议。
教材章节:第四章 网络协议5. 网络配置与管理:学习网络设备的配置方法,了解网络管理的基本知识。
粤教版网络技术应用教案第一章:网络基础知识1.1 网络的定义和发展让学生了解网络的定义和发展历程,理解网络的基本概念和组成。
教学方法:讲授法,结合多媒体演示。
1.2 网络的类型与结构让学生了解不同类型的网络,如局域网、广域网、城域网等,并理解它们之间的区别。
教学方法:讲授法,结合网络结构图的展示。
1.3 网络协议与标准让学生了解网络协议的作用和重要性,掌握常见的网络协议,如TCP/IP、、FTP 等。
教学方法:讲授法,结合实际案例进行分析。
第二章:互联网的应用2.1 浏览器的使用让学生学会使用浏览器进行网页浏览,掌握搜索信息的技巧。
教学方法:操作演示法,学生跟随操作练习。
2.2 电子邮件的使用让学生学会使用电子邮件进行通信,掌握收发邮件的基本操作。
教学方法:操作演示法,学生跟随操作练习。
2.3 社交媒体的应用让学生了解社交媒体的基本概念和作用,学会使用社交媒体进行交流和分享。
教学方法:讲授法,结合实际案例进行分析。
第三章:网络信息安全3.1 网络安全意识让学生了解网络安全的重要性,树立网络安全意识,预防网络攻击和欺诈。
教学方法:讲授法,结合实际案例进行分析。
3.2 防火墙与杀毒软件让学生了解防火墙和杀毒软件的作用,学会使用防火墙和杀毒软件保护电脑安全。
教学方法:操作演示法,学生跟随操作练习。
3.3 个人信息保护让学生了解个人信息保护的重要性,学会保护自己的个人信息,预防信息泄露和隐私侵犯。
教学方法:讲授法,结合实际案例进行分析。
第四章:网络技术应用案例分析4.1 电子商务的应用让学生了解电子商务的基本概念和作用,分析电子商务案例,了解其运营模式和优势。
教学方法:讲授法,结合实际案例进行分析。
4.2 远程教育的应用让学生了解远程教育的基本概念和作用,分析远程教育案例,了解其优势和挑战。
教学方法:讲授法,结合实际案例进行分析。
4.3 网络营销的应用让学生了解网络营销的基本概念和作用,分析网络营销案例,了解其策略和效果。
课程设计课程名称计算机网络题目名称使用ARP获取局域网内部活动主机的物理地址学生学院计算机学院专业班级学号学生姓名指导教师2013年1月 6 日计算机网络课程设计任务书使用ARP协议获取局域网内部活动主机的物理地址一.实验需求分析1.1实验要求定义和封装ARP数据包,将主机对应的网卡设置成混杂模式,截取局域网的数据包,并设置过滤后获取ARP包,分析ARP包,获得活动主机的物理地址。
1.2实验内容与步骤(1).熟悉ARP协议的工作原理;(2).熟悉ARP协议相关数据帧结构;(3).构造ARP请求数据帧;(4).使用Winpcap相关函数(ARP包的发送函数)实现数据帧的发送;(5).接收及解析目的主机的响应数据帧;(6.)获得IP地址与MAC地址的对应关系并显示;1.3编程环境Win7,visual studio 2010,wincap二.项目设计2.1概要设计1.课程设计中基本理论简介(1)在网际协议中定义的是因特网的IP地址,但在实际进行通信时,物理层不能识别IP地址只能识别物理地址。
因此,需在IP地址与物理地址之间建立映射关系,地址之间的这种映射称为地址解析。
(2)以太网网络中的物理地址即网卡的序列号。
IEEE规定网卡序列号为6个字节(48位),前三个字节为厂商代号,由于厂商向IEEE注册登记申请,后3个字节为网卡的流水号。
(3)地址解析包括从IP地址到物理地址的映射和从物理地址到IP地址的映射。
TCP/IP协议组提供了两个映射协议:地址解析协议ARP和逆向地址解析协议RARP。
ARP用于从IP地址到物理地址的映射,RARP用于从物理地址到IP地址的映射。
(4)地址解析协议的ARP的工作原理:假定在一个物理网络上,A(源主机)要与D(目的主机)进行通信,但是不知道D的物理地址。
A利用ARP协议工作的过程如下:广播一个ARP请求报文,请求IP地址为IPD的主机回答其物理地址。
网上所有主机都能收到该ARP请求,并将本机IP地址与请求的IP地址比较,D主机识别出自己的地址IPD,并作出回应,通报自己的物理地址。
A收到这个ARP回应包后,就可以与D进行通信。
为了提高效率,ARP协议使用了高速缓存技术。
在每台使用ARP的主机中,都保留了一个专用的内存区,一收到ARP应答,主机就将获得的IP地址和物理地址存入缓存。
以后每次要发送报文时,首先到缓存中查找有无相应的项,若找不到,再利用ARP进行地址解析。
由于多数网络通信都要连续发送多个报文,所以高速缓存大大提高ARP的效率。
在ARP请求报文中还放入源主机的“IP地址——物理地址”的地址对,源主机在广播ARP请求时,网络上所有主机都可以知道该源主机的“IP地址——物理地址”的地址对并将其存入自己的缓存。
在新主机入网时,令其主动广播其地址映射,以减少其他主机进行ARP请求。
(5)网卡具有如下的几种工作模式:广播模式(Broad Cast Model):它的物理地址(MAC)地址是0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。
多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。
但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。
直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己Mac 地址的帧。
混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。
(6)ARP帧的数据结构表达方式:以太网帧头中的前两个字段是以太网的目的地址和源地址。
目的地址为全1时为广播地址。
两个字节长的以太网帧类型表示后面数据的类型。
对于ARP请求或应答来说,该字段的值为0X0806.硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;协议类型字段:表示要映射的协议地址类型,IP为0X0800;硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。
对于以太网上IP地址的ARP 请求或应答来说,它们的值分别为6和4;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP 请求为3,RARP响应为4;发送端的以太网地址:源主机硬件地址,6个字节;发送端IP地址:发送端的协议地址(IP地址),4个字节;目的以太网地址:目的端硬件地址,6个字节;目的IP地址:目的端的协议地址(IP地址),4个字节。
(7)WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面。
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 operation_field; //操作字段unsigned char source_mac_add[6]; //源mac地址unsigned long source_ip_add; //源ip地址unsigned char dest_mac_add[6]; //目的mac地址unsigned long dest_ip_add; //目的ip地址};//14字节以太网帧结构struct ethernet_head{unsigned char dest_mac_add[6]; //目的mac地址unsigned char source_mac_add[6]; //源mac地址unsigned short type; //帧类型};//arp最终包结构struct arp_packetstruct ethernet_head ed; struct arp_head ah;};3.2实现程序的基本结构流程四.详细设计4.1主要函数说明主函数int main(){pcap_if_t *alldevs;pcap_if_t *d;int inum;int i=0;pcap_t *adhandle;char errbuf[PCAP_ERRBUF_SIZE];char *ip_addr;char *ip_netmask;unsigned char *ip_mac;HANDLE sendthread;HANDLE recvthread;ip_addr=(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){printf("申请内存存放MAC地址失败!\n");return -1;}/* 获取本机设备列表*/if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);exit(1);}/* 打印列表*/printf("[本机网卡列表:]\n");for(d=alldevs; d; d=d->next){printf("%d) %s\n", ++i, d->name);if (d->description)printf(" (%s)\n", d->description);elseprintf(" (No description available)\n");}if(i==0){printf("\n找不到网卡!请确认是否已安装WinPcap.\n");return -1;}printf("\n");printf("请选择要打开的网卡号(1-%d):",i);scanf("%d", &inum);if(inum < 1 || inum > i){printf("\n该网卡号超过现有网卡数!请按任意键退出…\n");getchar();getchar();/* 释放设备列表*/pcap_freealldevs(alldevs);return -1;}/* 跳转到选中的适配器*/for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);/* 打开设备*/if ( (adhandle= pcap_open(d->name, // 设备名65536, // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式1000, // 读取超时时间NULL, // 远程机器验证errbuf // 错误缓冲池) ) == NULL){fprintf(stderr,"\n无法读取该适配器. 适配器%s 不被WinPcap支持\n", d->name);/* 释放设备列表*/pcap_freealldevs(alldevs);return -1;}ifget(d,ip_addr,ip_netmask);//获取所选网卡的基本信息--掩码--IP地址GetSelfMac(adhandle,ip_addr,ip_mac);//输入网卡设备句柄网卡设备ip地址获取该设备的MAC地址sp.adhandle=adhandle;sp.ip=ip_addr;sp.mac=ip_mac;mask=ip_netmask;gp.adhandle=adhandle;sendthread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)SendArpPacket,&sp,0,NULL );recvthread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)GetLivePC,&gp,0,NULL); printf("\nlistening on 网卡%d ...\n",inum);/* 释放设备列表*/pcap_freealldevs(alldevs);getchar();getchar();return 0;}/* 获取可用信息*/void ifget(pcap_if_t *d,char *ip_addr,char *ip_netmask){pcap_addr_t *a;char ip6str[128];/* IP addresses */for(a=d->addresses;a;a=a->next){switch(a->addr->sa_family){case AF_INET:if (a->addr){char *ipstr;ipstr=iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr);//*ip_addr memcpy(ip_addr,ipstr,16);}if (a->netmask){char *netmaskstr;netmaskstr=iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr);memcpy(ip_netmask,netmaskstr,16);}case AF_INET6:break;}}}/* 将数字类型的IP地址转换成字符串类型的*/char *iptos(u_long in){static char output[IPTOSBUFFERS][3*4+3+1];static short which;u_char *p;p = (u_char *)∈which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);return output[which];}char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen){socklen_t sockaddrlen;#ifdef WIN32sockaddrlen = sizeof(struct sockaddr_in6);#elsesockaddrlen = sizeof(struct sockaddr_storage);#endifif(getnameinfo(sockaddr,sockaddrlen,address,addrlen,NULL,0,NI_NUMERICHOST) != 0) address = NULL;return address;}/* 获取自己主机的MAC地址*/int GetSelfMac(pcap_t *adhandle,const char *ip_addr,unsigned char *ip_mac) {unsigned char sendbuf[42];//arp包结构大小int i = -1;int res;struct ethernet_head eh;struct arp_head ah;struct pcap_pkthdr * pkt_header;const u_char * pkt_data;memset(eh.dest_mac_add,0xff,6);//目的地址为全为广播地址memset(eh.source_mac_add,0x0f,6);memset(ah.source_mac_add,0x0f,6);memset(ah.dest_mac_add,0x00,6);eh.type = htons(ETH_ARP);ah.hardware_type = htons(ARP_HARDWARE);ah.protocol_type = htons(ETH_IP);ah.hardware_add_len = 6;ah.protocol_add_len = 4;ah.source_ip_add = inet_addr("100.100.100.100"); //随便设的请求方ip ah.operation_field = htons(ARP_REQUEST);ah.dest_ip_add=inet_addr(ip_addr);memset(sendbuf,0,sizeof(sendbuf));memcpy(sendbuf,&eh,sizeof(eh));memcpy(sendbuf+sizeof(eh),&ah,sizeof(ah));if(pcap_sendpacket(adhandle,sendbuf,42)==0){printf("\nPacketSend succeed\n");}else{printf("PacketSendPacket in getmine Error: %d\n",GetLastError());return 0;}while((res = pcap_next_ex(adhandle,&pkt_header,&pkt_data)) >= 0){if(*(unsigned short *)(pkt_data+12) == htons(ETH_ARP)&&*(unsigned short*)(pkt_data+20) == htons(ARP_REPLY)&&*(unsigned long*)(pkt_data+38) == inet_addr("100.100.100.100")){for(i=0; i<6; i++){ip_mac[i]=*(unsigned char *)(pkt_data+22+i);}printf("获取自己主机的MAC地址成功!\n");break;}}if(i==6){return 1;}else{return 0;}}/* 向局域网内所有可能的IP地址发送ARP请求包线程*/DWORD WINAPI SendArpPacket(LPVOID lpParameter)//(pcap_t *adhandle,char *ip,unsigned char *mac,char *netmask){sparam *spara=(sparam *)lpParameter;pcap_t *adhandle=spara->adhandle;char *ip=spara->ip;unsigned char *mac=spara->mac;char *netmask=spara->netmask;printf("ip_mac:%02x-%02x-%02x-%02x-%02x-%02x\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);printf("自身的IP地址为:%s\n",ip);printf("地址掩码NETMASK为:%s\n",netmask);printf("\n");unsigned char sendbuf[42];//arp包结构大小struct ethernet_head eh;struct arp_head ah;memset(eh.dest_mac_add,0xff,6);//目的地址为全为广播地址memcpy(eh.source_mac_add,mac,6);memcpy(ah.source_mac_add,mac,6);memset(ah.dest_mac_add,0x00,6);eh.type = htons(ETH_ARP);ah.hardware_type = htons(ARP_HARDWARE);ah.protocol_type = htons(ETH_IP);ah.hardware_add_len = 6;ah.protocol_add_len = 4;ah.source_ip_add = inet_addr(ip); //请求方的IP地址为自身的IP地址ah.operation_field = htons(ARP_REQUEST);//向局域网内广播发送arp包unsigned long myip=inet_addr(ip);unsigned long mynetmask=inet_addr(netmask);unsigned long hisip=htonl((myip&mynetmask));for(int i=0;i<HOSTNUM;i++){ah.dest_ip_add=htonl(hisip+i);memset(sendbuf,0,sizeof(sendbuf));memcpy(sendbuf,&eh,sizeof(eh));memcpy(sendbuf+sizeof(eh),&ah,sizeof(ah));if(pcap_sendpacket(adhandle,sendbuf,42)==0){//printf("\nPacketSend succeed\n");}else{printf("PacketSendPacket in getmine Error: %d\n",GetLastError()); }Sleep(50);}Sleep(1000);flag=TRUE;return 0;}/* 分析截留的数据包获取活动的主机IP地址*/DWORD WINAPI GetLivePC(LPVOID lpParameter)//(pcap_t *adhandle){gparam *gpara=(gparam *)lpParameter;pcap_t *adhandle=gpara->adhandle;int res;unsigned char Mac[6];struct pcap_pkthdr * pkt_header;const u_char * pkt_data;while(true){if(flag){printf("扫描完毕,按任意键退出!\n");break;}if((res=pcap_next_ex(adhandle,&pkt_header,&pkt_data))>=0){if(*(unsigned short *)(pkt_data+12)==htons(ETH_ARP)){struct arp_packet *recv=(arp_packet *)pkt_data;if(*(unsigned short *)(pkt_data+20)==htons(ARP_REPLY)){printf("-------------------------------------------\n");printf("IP地址:%d.%d.%d.%d MAC地址:",recv->ah.source_ip_add&255,recv->ah.source_ip_add>>8&255,recv->ah.source_ip_ad d>>16&255,recv->ah.source_ip_add>>24&255);for(int i=0;i<6;i++){Mac[i]=*(unsigned char *)(pkt_data+22+i);printf("%02x",Mac[i]);}printf("\n");}}}Sleep(10);}return 0;}五.实验结果六.实验总结实验中最难做的是vs2010的环境变量的设置,找了很多的网站才找到此环境变量的图解。