计算机网络课程设计
- 格式:doc
- 大小:5.41 MB
- 文档页数:32
《计算机网络》教学设计一、教学目标1、知识与技能目标(1)学生能够理解计算机网络的定义、组成和功能。
(2)掌握网络拓扑结构的类型及其特点。
(3)了解网络协议的概念和常见的网络协议。
2、过程与方法目标(1)通过实际案例分析,培养学生解决网络问题的能力。
(2)通过小组讨论和实验,提高学生的团队合作和实践操作能力。
3、情感态度与价值观目标(1)激发学生对计算机网络的兴趣,培养学生的创新意识和探索精神。
(2)培养学生正确使用网络的观念,提高网络安全意识。
二、教学重难点1、教学重点(1)计算机网络的组成和功能。
(2)网络拓扑结构的类型和特点。
2、教学难点(1)网络协议的理解和应用。
(2)网络故障的排查和解决。
三、教学方法1、讲授法讲解计算机网络的基本概念、原理和技术,使学生对网络有初步的了解。
2、案例分析法通过实际案例分析,引导学生将理论知识应用到实际问题中,提高学生的分析和解决问题的能力。
3、小组讨论法组织学生进行小组讨论,促进学生之间的交流与合作,培养学生的团队精神和创新思维。
4、实验法安排学生进行网络实验,让学生亲身体验网络的搭建和配置,加深对网络知识的理解和掌握。
四、教学过程1、导入(5 分钟)通过展示一些与计算机网络相关的图片和视频,如互联网购物、在线教育、远程医疗等,引导学生思考计算机网络在日常生活中的应用,从而引出本节课的主题——计算机网络。
2、知识讲解(30 分钟)(1)计算机网络的定义和组成①讲解计算机网络的定义:计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
②介绍计算机网络的组成:包括计算机、通信线路、网络设备(如路由器、交换机等)和网络软件(如操作系统、通信协议等)。
(2)计算机网络的功能①资源共享:包括硬件资源共享(如打印机、存储设备等)、软件资源共享(如应用软件、数据库等)和数据资源共享(如文件、数据库等)。
计算机网络教学设计(精选10篇)计算机网络教学设计(精选10篇)作为一名无私奉献的老师,时常需要准备好教学设计,教学设计是一个系统化规划教学系统的过程。
教学设计应该怎么写才好呢?下面是小编精心整理的计算机网络教学设计,仅供参考,希望能够帮助到大家。
计算机网络教学设计篇1教学目标1、探究过程和方法:培养学生阅读科学资料的能力、动手操作能力和语言表达能力2、知识与技能:知道什么是信息指导学生通过阅读、讨论,了解传递和信息方法的发展过程初步认识现代通信网知道保存信息方法的变革促进了人们生活水平的提高3、情感态度:培养学习科学的世界观,正确、科学的探究方法激发学生对现代技术发展为人类生活带来的便捷提出希望,并为此努力教学重难点及解决方法人类信息的传递经过了一个漫长的发展过程,冲“鸿雁传书”“狼烟滚滚”到现在的信息数字化,可以说人类的信息传递方式有了质的飞跃。
特别是近几十年来网络的飞速发展使人类真正实现了沟通的零距离。
本课正是在此基础上,使学生通过对网络的学习了解人类在信息传递方式上的飞速发展。
本课的教学重点是引导学生认识信息保存方法的变革对人类生活的影响课时安排一课时教学准备相关录象资料、挂图、几条新闻录象、磁带、磁盘、光盘、竹简、木简教学流程一、导入1、在我们这个世界里经常有很多事情发生。
就像美国对伊拉克动武这件事情,你是怎么知道的?你知道信息是怎样传递和保存的吗?我们一起来研究板书课题二、教授新课1、介绍信息的传递方法(1)我们先来解决一个问题:什么是“信息”?你认为什么是“信息”?(新闻、消息、知识等)(2)信息是人们生活中不可缺少的一部分,为了能看的远、听的远,人们很早就渴望“千里眼、顺风耳”,于是,人们想出了很多办法来传递信息。
(3)阅读P32第一段2、讨论保存信息的方法和变革给生活带来的影响(1)随着信息的传递向更快、更远、更准的方向发展,人们保存信息的方法也发生了重大变革。
从古到今,聪明的人类想出了什么方法呢?你能不能按照时间的顺序排列出?(2)究竟你列出的顺序对吗?我们一起来揭示答案。
计算机网络技术课程设计一、课程目标知识目标:1. 理解计算机网络的基本概念,掌握网络体系结构、网络协议、网络设备等基本知识;2. 学会使用网络通信协议,了解不同类型的网络拓扑结构及其特点;3. 了解网络信息安全的基本原理,掌握常用的网络防护措施。
技能目标:1. 能够独立搭建简单的网络环境,进行网络设备的配置与调试;2. 学会使用网络诊断工具,分析并解决网络故障;3. 提高信息检索、分析、处理的能力,运用网络资源进行自主学习。
情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与协作能力;2. 增强网络安全意识,遵循网络道德规范,养成文明上网的良好习惯;3. 激发学生对计算机网络技术的兴趣,培养其探索精神和创新意识。
课程性质:本课程为计算机网络技术的基础课程,旨在让学生掌握计算机网络的基本知识和技能,培养具备实际操作能力及网络素养的人才。
学生特点:本课程面向初中生,学生对计算机网络有一定的好奇心,但知识基础和操作能力有限,需要结合实际案例和实践活动进行教学。
教学要求:注重理论与实践相结合,采用案例教学、任务驱动等方法,提高学生的实际操作能力和解决问题的能力。
同时,关注学生的情感态度价值观的培养,使他们在学习过程中形成良好的网络素养。
通过分解课程目标,为后续的教学设计和评估提供明确的方向。
二、教学内容1. 计算机网络基础知识- 网络体系结构及OSI七层模型- 常用网络协议(TCP/IP、HTTP、FTP等)- 网络设备(交换机、路由器、防火墙等)2. 网络拓扑结构- 星型、总线型、环型、网状等拓扑结构的特点与应用- 网络设备在不同拓扑结构中的配置与调试3. 网络通信协议- IP地址、子网划分、路由选择等概念- 常用网络诊断工具(如ping、tracert等)的使用4. 网络信息安全- 网络攻击手段及防护措施- 加密技术、数字签名等安全机制5. 实践操作- 搭建简单网络环境,进行设备配置与调试- 分析网络故障,排除问题- 网络安全防护实践教学内容安排与进度:第一周:计算机网络基础知识第二周:网络拓扑结构与设备配置第三周:网络通信协议第四周:网络信息安全第五周:实践操作(含总结与评价)教材章节及内容列举:第一章:计算机网络基础第二章:网络拓扑结构与设备第三章:网络通信协议第四章:网络信息安全第五章:实践操作与案例分析教学内容根据课程目标进行科学性和系统性的组织,注重理论与实践相结合,使学生在掌握计算机网络基础知识的同时,提高实际操作能力。
计算机网络课程教案(优质)一、教学内容本节课的教学内容来自于教材《计算机网络》的第四章,主要内容包括:网络层服务、路由算法、分组转发与拥塞控制。
本节课将围绕这些内容展开,使学生了解网络层的基本概念,理解路由算法的原理,掌握分组转发与拥塞控制的技术。
二、教学目标1. 让学生掌握网络层的基本服务,理解网络层在计算机网络中的作用。
2. 使学生了解路由算法的种类及原理,提高他们在实际应用中选择合适路由算法的能力。
3. 让学生掌握分组转发与拥塞控制的技术,提高网络传输效率。
三、教学难点与重点重点:网络层服务、路由算法、分组转发与拥塞控制。
难点:路由算法的设计原理、拥塞控制的实现方法。
四、教具与学具准备教具:多媒体教学设备、网络拓扑图、PPT。
学具:笔记本电脑、网络实验设备。
五、教学过程1. 实践情景引入:通过一个网络故障案例,引导学生思考网络层的作用。
2. 教材讲解:详细讲解网络层的服务、路由算法、分组转发与拥塞控制的概念和原理。
3. 例题讲解:分析典型例题,让学生理解路由算法和拥塞控制的应用。
4. 随堂练习:让学生根据所学内容,完成一些相关的练习题,巩固所学知识。
5. 课堂讨论:组织学生就网络层服务、路由算法、分组转发与拥塞控制的技术展开讨论,提高他们的实际应用能力。
6. 网络实验:让学生动手进行网络实验,验证所学知识。
六、板书设计板书内容主要包括网络层服务、路由算法、分组转发与拥塞控制的概念、原理和流程。
通过板书,帮助学生清晰地理解所学知识。
七、作业设计1. 题目:请简述网络层的服务。
答案:网络层的服务主要包括数据传输、路由选择、拥塞控制等。
2. 题目:请解释什么是路由算法。
答案:路由算法是一种用于确定数据包从源节点到目的节点最优路径的算法。
3. 题目:请阐述分组转发与拥塞控制的技术。
答案:分组转发是指网络设备根据数据包的目的地址,将其从一个网络接口转发到另一个网络接口。
拥塞控制是指通过调整网络中的数据流量,防止网络拥塞的发生。
校园网络设计一、设计目的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.理解网络协议的概念、作用和分类。
2.掌握TCP/IP协议族的基本结构和特点。
3.熟悉常用的网络协议和其功能。
二、教学内容1.网络协议的概念和作用2.网络协议的分类3.TCP/IP协议族的基本结构和特点4.常用的网络协议和其功能三、教学方法1.理论讲解结合案例2.实验演示3.小组讨论四、教学过程1.引入部分在讲解网络协议之前,先让学生了解网络协议的概念。
并通过案例,引入网络协议的重要性。
2.主体部分(1)网络协议的概念和作用网络协议是指计算机在进行互联网通信时,必须遵守的规则和标准。
它可以定义传输数据的格式、传输速率、传输控制过程、错误处理方法、应用程序接口等多方面的内容,使不同厂商生产的计算机系统能够互相通信。
(2)网络协议的分类网络协议根据不同的分类标准可分为多种,如层次结构、功能分类、应用类型等。
其中,在层次结构上最为常用的是OSI参考模型和TCP/IP参考模型。
(3)TCP/IP协议族的基本结构和特点TCP/IP协议族是互联网的核心协议,由四层组成,分别为应用层、传输层、网络层和数据链路层。
其特点包括:端到端通信、面向连接和独立于传输媒介。
(4)常用的网络协议和其功能常用的网络协议有很多,如HTTP、FTP、SMTP、DNS、TELNET等。
它们分别用于网页浏览、文件传输、电子邮件、域名解析和远程登录等功能。
3.实验部分让学生通过实验,掌握网络协议的具体应用。
4.总结部分在讲解完网络协议的基本知识后,对学生进行总结和归纳。
可以组织小组讨论,让学生发表个人看法和收获。
五、教学评价1.教学效果评价:通过考试或实验,测评学生对网络协议的掌握程度。
2.教学过程评价:通过教学反馈,检查教学过程中存在的问题,并进行改进。
3.教学质量评价:从教学效果和教学过程两个方面综合评价教学质量。
计算机网课程设计一、课程目标知识目标:1. 理解计算机网络的定义、功能及分类,掌握网络的基本工作原理;2. 学会使用网络通信协议,了解不同协议的特点与应用场景;3. 掌握网络拓扑结构,了解常见网络设备的类型及其功能;4. 了解网络安全的基本概念,提高网络安全意识。
技能目标:1. 能够运用所学知识构建简单的局域网,进行网络配置与管理;2. 学会使用网络诊断工具,分析并解决网络故障;3. 掌握网络编程基础,实现简单的网络通信程序;4. 提高信息检索与筛选能力,利用网络资源进行自主学习。
情感态度价值观目标:1. 培养学生对计算机网络技术的兴趣,激发学习热情;2. 增强学生的团队协作意识,培养合作解决问题的能力;3. 培养学生遵守网络道德规范,具备良好的网络素养;4. 增强学生的网络安全意识,提高个人信息保护能力。
课程性质:本课程为计算机科学领域的专业课程,旨在帮助学生掌握计算机网络的基本原理、技术和应用,提高实际操作能力。
学生特点:学生为高中年级,具有一定的计算机操作基础,对计算机网络有一定了解,但缺乏深入的知识和实际操作经验。
教学要求:结合学生特点,注重理论与实践相结合,以实例为主线,引导学生主动参与,培养实际操作能力和解决问题的能力。
通过课程学习,使学生能够达到上述课程目标,为未来进一步学习计算机网络相关知识打下坚实基础。
二、教学内容1. 计算机网络的定义、发展历程、功能与分类;- 课本章节:第一章 计算机网络概述2. 网络通信协议,包括TCP/IP协议、HTTP协议等;- 课本章节:第二章 网络通信协议3. 网络拓扑结构,包括星型、环型、总线型等;- 课本章节:第三章 网络拓扑结构与设备4. 常见网络设备,如交换机、路由器、防火墙等;- 课本章节:第三章 网络拓扑结构与设备5. 局域网的构建与配置;- 课本章节:第四章 局域网技术6. 网络故障分析与诊断;- 课本章节:第五章 网络管理与维护7. 网络编程基础,如Socket编程;- 课本章节:第六章 网络编程8. 网络安全,包括加密技术、认证技术等;- 课本章节:第七章 网络安全9. 网络道德规范与个人信息保护;- 课本章节:第八章 网络道德与法律教学进度安排:- 第1周:计算机网络概述- 第2周:网络通信协议- 第3周:网络拓扑结构与设备- 第4周:局域网技术- 第5周:网络管理与维护- 第6周:网络编程- 第7周:网络安全- 第8周:网络道德与法律三、教学方法针对本课程的教学目标和内容,采用以下教学方法:1. 讲授法:用于讲解计算机网络的基本概念、原理和关键技术。
计算机网络课程设计一、课程目标知识目标:1. 理解计算机网络的基本概念,掌握网络体系结构、网络协议、网络设备等基础知识;2. 学会使用网络通信协议分析工具,了解不同协议的工作原理和应用场景;3. 掌握网络编程的基本方法,能够利用Socket编程实现简单的网络通信程序;4. 了解网络安全的基本概念,掌握防范网络攻击和病毒的基本技能。
技能目标:1. 能够独立搭建简单的局域网,并进行基本的网络配置;2. 能够运用所学的网络知识解决实际网络故障;3. 通过编程实践,提高学生的动手能力和问题解决能力;4. 培养学生具备一定的网络安全意识,能够识别并防范常见的网络威胁。
情感态度价值观目标:1. 培养学生热爱计算机网络学科,激发学生对网络技术的好奇心和探索欲望;2. 增强学生的团队协作意识,培养良好的沟通能力和合作精神;3. 提高学生的网络安全意识,树立正确的网络道德观念,遵守网络法律法规;4. 引导学生认识到计算机网络在现代社会中的重要性,激发学生为国家网络事业发展贡献力量的责任感。
本课程旨在帮助学生建立扎实的计算机网络基础知识,提高实际操作技能,培养学生具备良好的网络素养和道德观念。
通过课程学习,使学生能够适应信息化社会的发展需求,为未来的学习和工作打下坚实基础。
二、教学内容1. 计算机网络基本概念:网络体系结构、网络协议、网络设备等;教材章节:第一章 计算机网络概述2. 网络通信协议分析:TCP/IP协议、UDP协议、HTTP协议等;教材章节:第二章 网络协议及其应用3. 网络编程:Socket编程、多线程编程、网络应用开发等;教材章节:第三章 网络编程技术4. 局域网搭建与配置:网络规划、设备选型、网络配置等;教材章节:第四章 局域网技术5. 网络安全:网络攻击与防范、病毒防护、加密技术等;教材章节:第五章 网络安全技术6. 实践环节:网络设备操作、网络故障排查、编程实践等。
教学内容安排和进度:1. 计算机网络基本概念(2课时)2. 网络通信协议分析(4课时)3. 网络编程(6课时)4. 局域网搭建与配置(4课时)5. 网络安全(4课时)6. 实践环节(8课时)三、教学方法针对本课程的内容特点和学生实际情况,采用以下教学方法:1. 讲授法:在讲解计算机网络基本概念、网络协议、网络安全等理论性较强的内容时,采用讲授法进行教学。
网络计算机课程设计一、课程目标知识目标:1. 学生能够理解计算机网络的基本概念,掌握网络通信的原理与流程。
2. 学生能够描述常见网络设备和协议的功能,了解网络拓扑结构。
3. 学生能够解释IP地址的分配原则,掌握子网划分的方法。
技能目标:1. 学生能够使用网络命令进行基本的网络配置与故障排查。
2. 学生能够独立搭建小型局域网,并进行简单的网络管理。
3. 学生能够运用网络安全知识,提高信息保护意识,防范网络攻击。
情感态度价值观目标:1. 培养学生对计算机网络技术的兴趣,激发学习积极性。
2. 培养学生团队协作意识,提高在网络环境下的沟通与协作能力。
3. 增强学生的网络安全意识,培养良好的网络道德素养,遵守网络法律法规。
课程性质:本课程为实践性较强的学科,结合理论知识与实践操作,培养学生具备一定的网络技术应用能力。
学生特点:学生具备一定的计算机操作基础,对计算机网络有一定的好奇心,但可能缺乏系统性的网络知识。
教学要求:注重理论与实践相结合,强调学生动手实践,培养学生解决实际问题的能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的达成。
通过课程学习,使学生具备扎实的网络基础知识,提高网络技术应用水平。
二、教学内容1. 计算机网络基础知识:包括网络概念、网络分类、网络拓扑结构等内容,参考教材第一章。
- 网络通信原理与协议:如TCP/IP、UDP等协议,参考教材第二章。
- 网络设备与功能:如交换机、路由器、防火墙等设备,参考教材第三章。
2. 网络配置与管理:- IP地址分配与子网划分,参考教材第四章。
- 网络命令使用与故障排查,参考教材第五章。
- 局域网搭建与网络管理,结合实际案例进行分析。
3. 网络安全:- 网络攻击类型与防范措施,参考教材第六章。
- 信息保护与网络安全意识,结合现实生活中的网络安全问题进行讲解。
4. 实践操作:- 搭建小型局域网,进行网络配置与管理。
- 模拟网络攻击与防范,增强网络安全意识。
PING程序设计一、实验目的PING程序是我们使用的比较多的用于测试网络连通性的程序。
PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。
由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。
课程设计中选取PING程序的设计,其目的是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的认识。
二、实验内容和要求1、RAW模式的SOCKET编程PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。
为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。
熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等;2、具体内容1)定义数据结构需要定义好IP数据报、ICMP包等相关的数据结构;2)程序实现在WINDOWS环境下实现PING程序;3)程序要求在命令提示符下输入:PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ其中ΧΧΧ为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。
不带开关变量时,要求返回4次响应。
返回信息的格式:REPLY FROM ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ或REQUEST TimeOut (无法PING通的情况)。
三、实验主要仪器设备和材料联网计算机,VC++ 6.0, Window 7操作系统平台四、实验方法、步骤及结构测试1、本程序主要是通过main()函数调用自定义函数以及其本身的一些功能,例如:打开socket动态库、设置接收和发送超时值、域名地址解析、分配内存、创建及初始化ICMP报文、发送ICMP请求报文、接收ICMP 应答报文以及解读应答报文和输出Ping结果。
程序流程图如下:否是是 否否开始 定义及初始化各个全局变量判断WSAStartup 函数是否调用成功 输出调用失败 创建套接字以及设置socket 接收超时,发送超时选项 输入PING 的IP地址解析输入内容,设置PING 参数 创建及填充ICMP 数据报文判断输入的ip 地址没有-t 并且已发四次发送,接收以及解析数据包 输出PIING 结果Break 清除残余 结束2、校验和函数、释放资源函数流程图如下:是否 是 否是否Checksu 开始 定义初始化cksum (size > 1) 定cksum 及size 大小if (size)cksum+=*(UCH AR*)buffer; 计算校验cksum ,获得结果 结束cleanup 开始 if (m_hSocket !=INVALID_SOCKE关闭套接字释放占用资源 清除ICMP 包数据以及接受缓冲区 WSACleanup();结束3、ICMP报首部函数流程图如下:DecodeICMPHeader定义相关变量以及初始化tick = GetTickCount()我们所要的回应报文tick0[icmpcount]=tick -icmphdr->timestamp 输出不是我们所要判断时间是否小于1ms结束printf("Reply from %s: dytes=%d time<1ms icmp_seq = %d\n",inet_ntoa(from->sin_addr) printf("Reply from %s: dytes=%d time=%d icmp_seq = %d\n",inet_ntoa(from->sin_add r)icmpcount++结束五、程序的结构与分析运行结果截图如下:结果分析:1、Request timed out(请求超时)(1) 对方已关机,或者网络上根本没有这个地址:比如在上图中Ping 14.150.213.222(2)对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当然不存在也是返回超时的信息。
(3)对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。
2、Destination host Unreachable(目标不可达)(1)错误设置IP地址六、课程设计心得体会本次课程设计中,我和同队组员查找资料发现使用java实现Ping程序需要导入java包,只能调用其中已经封装好的函数,故我们决定使用c++进行编程。
在这个题目中我负责查找相关资料,协助队友完成代码的编写。
在查找资料的过程中,我加深了对Socket的原始套接字编程的理解,经过实现Ping程序,熟悉了IP、ICMP等,掌握TCP/IP网络协议的基本实现方法。
也熟悉了Window网络编程的技术。
能熟悉地使用套接字进行网络通信。
熟悉了数据通信的网络技术,同时学会了跟同学合作交流完成项目的讨论方法和解决问题的能力。
学会如果通过讨论、交流、找资料来独立解决所遇到的问题和不懂。
更多地锻炼了独立解决问题的能力。
在编写函数的过程中,时不时会出现一些意想不到的bug,编译通过,但是得不到想要的结果,于是我们是用单步调试的方式很好的解决了问题。
附录一:参考文献【1】计算机网络谢希仁编著电子工业出版社【2】C程序设计谭浩强编著北京清华大学出版社程序源代码及部分注释:typedef struct iphdr{unsigned int h_len:4; // 头长度unsigned int version:4; // IP版本unsigned char service; // 服务类型unsigned short total_len; // 包的总长度unsigned short ident; // 包标示身份unsigned short frag_and_flags; // 标志unsigned char ttl; // 包生命周期unsigned char proto; // 协议类型unsigned short checksum; // IP 校验unsigned int sourceIP; //源IPunsigned int destIP; //目标IP} IpHeader;#define ICMP_ECHO 8 //ICMP报文类型,回显请求#define ICMP_ECHOREPLY 0 //ICMP报文类型,回显响应应答#define ICMP_MIN 8 //最小的ICMP数据报大小typedef struct icmphdr{BYTE i_type; //ICMP报文类型BYTE i_code; //该类型中的代码号USHORT i_cksum; //校验和USHORT i_id; //惟一的标识符USHORT i_seq; //序列号ULONG timestamp; //时间戳} IcmpHeader;#define DEF_PACKET_SIZE 32 //默认数据报大小#define MAX_PACKET 1024 // 最大的ICMP数据报大小#define MAX_IP_HDR_SIZE 60 // 最大IP头长度//初始化全局变量int datasize=DEF_PACKET_SIZE;char *icmp_data=NULL;char *recvbuf=NULL;SOCKET m_hSocket= INVALID_SOCKET;char *lpdest=NULL;//填充ICMP数据报字段函数void FillICMPData(char *icmp_data, int datasize){IcmpHeader *icmp_hdr = NULL;char *datapart = NULL;icmp_hdr = (IcmpHeader*)icmp_data;icmp_hdr->i_type = ICMP_ECHO;icmp_hdr->i_code = 0;icmp_hdr->i_id =(USHORT)GetCurrentProcessId();//GetCurrentProcessId()获取当前进程的标示符(PID)icmp_hdr->i_cksum = 0;icmp_hdr->i_seq = 0;datapart = icmp_data + sizeof(IcmpHeader);}//校验和函数USHORT checksum(USHORT *buffer, int size){unsigned long cksum=0;while (size > 1){cksum += *buffer++;size -= sizeof(USHORT);}if (size){cksum += *(UCHAR*)buffer;}cksum = (cksum >> 16) + (cksum & 0xffff);cksum += (cksum >>16);return (USHORT)(~cksum);}//解读ICMP报首部函数void DecodeICMPHeader(char *buf, int bytes, SOCKADDR_IN *from){IpHeader *iphdr = NULL;IcmpHeader *icmphdr = NULL;unsigned short iphdrlen;DWORD tick;static int icmpcount = 0;iphdr = (IpHeader *)buf;//从buf中获取IP数据包头指针iphdrlen = iphdr->h_len * 4;tick = GetTickCount();if (bytes < iphdrlen + ICMP_MIN){printf("Too few bytes from %s \r\n",inet_ntoa(from->sin_addr)); }icmphdr = (IcmpHeader*)(buf + iphdrlen);//定位ICMP包头起始位置if (icmphdr->i_type != ICMP_ECHOREPLY){printf("nonecho type %d received \r\n", icmphdr->i_type);}if (icmphdr->i_id != (USHORT)GetCurrentProcessId()){printf("其他程序的回应报文! \t错误代码 %d\n", WSAGetLastError());}int tick0;tick0=tick - icmphdr->timestamp;if(tick0<1)printf("Reply from %s: bytes=%d time<1ms icmp_seq =%d\n",inet_ntoa(from->sin_addr), bytes, icmphdr->i_seq );elseprintf("Reply from %s: bytes=%d time=%dmsicmp_seq =%d\n",inet_ntoa(from->sin_addr), bytes,tick0,icmphdr->i_seq);}//释放资源函数void Cleanup(){if (m_hSocket != INVALID_SOCKET)closesocket(m_hSocket);HeapFree(GetProcessHeap(), 0, recvbuf);HeapFree(GetProcessHeap(), 0, icmp_data);WSACleanup();}//主函数void main(){WSADATA wsaData;char a[100];printf("ping ");gets(a);lpdest=a;SOCKADDR_IN m_addrDest;//结构体SOCKADDR_IN m_addrFrom;int timeout=1000;USHORT seq_no=0;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){printf("Sorry, you cannot load socket dll!");}m_hSocket = WSASocket (AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL,0,WSA_FLAG_OVERLAPPED);//创建原始套接字,该套接字用于ICMP协议if (m_hSocket == INVALID_SOCKET) //如果套接字创建不成功{printf("socket 创建失败!");}int bread = setsockopt(m_hSocket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));//设置接收的超时值if(bread == SOCKET_ERROR){printf("设置socket接收超时选项错误!");}timeout = 1000;bread = setsockopt(m_hSocket, SOL_SOCKET, SO_SNDTIMEO,(char*)&timeout, sizeof(timeout));//设置发送的超时值if (bread == SOCKET_ERROR){printf("设置socket发送超时选项错误!");}memset(&m_addrDest, 0, sizeof(m_addrDest));// 用0初始化目的地地址 m_addrDest.sin_family = AF_INET;//设置地址族,这里表示使用IP地址族if ((m_addrDest.sin_addr.s_addr = inet_addr(lpdest)) ==INADDR_NONE)//地址转化{struct hostent *hp = NULL;if ((hp = gethostbyname(lpdest)) != NULL) //名字解析,根据主机名获取IP地址{memcpy(&(m_addrDest.sin_addr), hp->h_addr,hp->h_length);//将获取到的IP值赋给目的地地址中的相应字段m_addrDest.sin_family = hp->h_addrtype; //将获取到的地址族值赋给目的地地址中的相应字段}else{printf("不能找到名为 %s 的主机\t错误代码 %d\n",lpdest, WSAGetLastError());//获取不成功exit(0);}}printf("Pinging %s with 64 bytes of data: \n\n",inet_ntoa(m_addrDest.sin_addr)); //inet_ntoa()将网络地址转换成“.”点隔的字符串格式datasize += sizeof(IcmpHeader); //数据报文大小需要包含ICMP报头//根据默认堆句柄,从堆中分配MAX_PACKET内存块,新分配内存的内容将被初始化为0icmp_data=(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PACK ET);recvbuf =(char*) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PACKET);if (!icmp_data) //如果分配内存不成功{printf("堆分配错误!");}memset(icmp_data,0,MAX_PACKET);//将已开辟内存空间icmp_data 的首MAX_PACKET 个字节的值设为值0。