网络课设-ICMP
- 格式:doc
- 大小:202.00 KB
- 文档页数:20
计算机网络课程设计一.中小型千兆网吧组建内容及要求:用BOSON软件实现小规模网络的模拟。
熟悉对路由器和交换机的配置命令,调通网络,并通过实例深入理解网络基本工作原理及实现方法。
学会网络构建、日常IP地址1.2.3.4.5.6.写出课程设计报告:设计目的、设计内容、设计方案、拓扑图、设备选型、方案报价、子网划分等内容。
(1)企业网络工程(2)银行网络工程(3)医院网络工程(4)校园网网络工程(5)大型机场信息网络工程(6)邮电综合管理信息网(7)某航空公司网络系统建设(8)某市宽带信息网络(9)证券交易网络系统(10)学校以太网网络建设三.Ping程序的设计与实现设计的目的是使学生掌握网络层协议的原理及实现方法。
设计内容,在给定的Ping程序的基础上做如下功能扩充:●-h 显示帮助信息●●●PingPing消息。
ICMPIdentification,Flags,FragmentOffset用于IP包分段TimetoLiveIP包的存活时长ProtocolICMP=1Addresses发送Echo消息的源地址是发送Echoreply消息的目的地址,相反,发送Echo消息的目的地址是发送Echoreply消息的源地址。
Ping实际上是使用ICMP中的ECHO报文来实现的。
Echo或EchoReply消息格式如下:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Code|Checksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identifier|SequenceNumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Data...+-+-+-+-+-Typeecho消息的类型为8echoreply的消息类型为0。
** 学 院课程设计报告书课程名称 设计题目 专业班级 学号 姓名 指导教师 验收教师网络安全课程设计 ARP 地址欺骗与 ICMP 重定向设计2012 年 6 月目录1 设计时间 .............................................................................错误!未定义书签。
2 设计目的 .............................................................................错误!未定义书签。
3 设计任务 .............................................................................错误!未定义书签。
4 设计内容 .............................................................................错误!未定义书签。
4.1 ARP 地址欺骗的设计 ......................................................错误!未定义书签。
4.1.1 实验环境.................................................................错误!未定义书签。
4.1.2 基础理论.................................................................错误!未定义书签。
4.1.3 实验过程及验证结果.............................................错误!未定义书签。
4.1.4 问答题.....................................................................错误!未定义书签。
ping程序设计与实现课程设计一、课程目标知识目标:1. 学生能理解ping程序的工作原理,掌握网络诊断的基本方法。
2. 学生能描述IP协议、ICMP协议的基本概念及其在ping程序中的应用。
3. 学生了解计算机网络的通信原理,掌握如何利用ping程序检测网络连通性。
技能目标:1. 学生能运用所学知识,独立编写简单的ping程序。
2. 学生通过实践操作,提高问题分析及解决能力,具备基本的网络诊断技巧。
3. 学生掌握使用编程工具(如:IDE、编译器等)进行代码编写、调试和优化。
情感态度价值观目标:1. 学生培养对计算机网络的兴趣,激发学习编程的热情。
2. 学生在学习过程中,培养团队协作、沟通表达的能力,增强自信心。
3. 学生通过本课程的学习,认识到网络技术在实际应用中的重要性,培养对网络安全的责任感。
分析课程性质、学生特点和教学要求,本课程旨在让学生掌握ping程序的设计与实现,结合实际操作,提高学生的编程能力和网络诊断技巧。
课程目标具体、可衡量,有助于教师进行教学设计和评估。
通过本课程的学习,学生将具备基本的网络编程知识和技能,为今后的学习和工作打下坚实基础。
二、教学内容1. 网络基础知识回顾:IP协议、ICMP协议、网络层通信原理。
2. ping程序工作原理:发送ICMP请求、接收ICMP回复、计算往返时间(RTT)。
3. 编程语言基础:C语言或Python语言的基本语法,重点掌握数据类型、控制结构、函数定义。
4. ping程序设计与实现:- 环境搭建:安装编程工具、配置网络环境。
- 代码编写:根据ping程序工作原理,编写发送和接收ICMP请求的代码。
- 调试与优化:调试代码,处理异常情况,优化程序性能。
5. 实践操作:分组进行实际操作,组内讨论、分析问题,相互协作完成ping 程序编写。
6. 网络诊断技巧:运用ping程序检测网络连通性,分析网络延迟、丢包等问题。
教学内容安排和进度:第一课时:网络基础知识回顾,介绍ping程序工作原理。
监控IP包流量摘要本课程设计主要是编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来。
程序中会用到Winpcap,它主要功能在于独立于主机协议发送和接收原始数据报。
本次课程设计中用VC++实现基于Winpcap的IP数据包的捕获和统计,根据获取网络设备列表,选择正确的网卡并打开,获取子网掩码,编译、设置过滤器,捕获数据包;列出源IP地址及其相应的包数。
使我们对于TCP/IP协议以及IP数据抱的格式有了进一步的了解和掌握。
通过编写程序从而实现对网络中IP数据包流量的统计。
1、引言1.1 课程设计目的本次课程设计主要是通过用VC++编程实现对网络中IP数据包流量的统计,也就是编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来。
同时应用Winpcap,Winpcap提供了很好的捕获网络数据包的方法,通过本次课程设计可以将VC++知识与Winpcap结合起来实现在一段时间内对IP数据包的流量进行统计,加深了对Winpcap 的理解和运用能力。
1.2 课程设计的要求(1)理解运用VC++软件实现对网络中的IP数据抱流量的统计方法和步骤。
(2)学习简单的MFC框架结构;(3)加深理解TCP/IP协议以及IP数据抱的格式;(4)提高网络编程能力,增加实际应用能力;(5)学会文献检索的基本方法和综合运用文献的能力。
1.3设计平台Microsoft Visual C++ 6.02、设计原理IP是ICP/IP协议体系中的网络层协议,TCP、UDP、ICMP和IGMP等其他协议都是以IP 协议为基础的。
程序中用到的Winpcap是UNIX下的lipbcap移植到Windows下的产物,是Win32环境下数据包捕获的开放代码函数库。
计算机网络的课程设计一、课程目标知识目标: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. 网络配置与管理:学习网络设备的配置方法,了解网络管理的基本知识。
ICMP协议是什么1. ICMP协议简介ICMP(Internet Control Message Protocol)协议是一种网络协议,用于在IP网络中传递错误、控制和诊断信息。
它是TCP/IP协议族中的一个重要组成部分,常用于网络故障排查、网络管理和网络性能测量等方面。
ICMP协议主要通过发送控制消息来实现其功能。
它封装在IP数据包中,作为IP协议的一个扩展,用于向网络中的其他设备发送消息。
ICMP消息通常由操作系统或网络设备生成,用于报告错误、确认连接、请求回应等。
2. ICMP消息类型ICMP协议定义了多种消息类型,每种类型都有其特定的目的和功能。
以下是常见的几种ICMP消息类型:2.1 回显请求和回显应答(Echo Request/Reply)回显请求(Echo Request)消息用于测试网络连接和延迟。
当一台主机发送回显请求消息时,目标主机会返回一个回显应答(Echo Reply)消息,以确认网络连接正常。
2.2 目的不可达(Destination Unreachable)目的不可达消息用于报告数据包发送失败的原因。
当一个数据包无法到达目的地时,中间路由器会向源主机发送目的不可达消息,以便源主机能够得知发送失败的原因。
2.3 超时(Time Exceeded)超时消息用于报告数据包在传输过程中发生超时的情况。
当一个数据包的生存时间(TTL)超过设定的阈值或在路由过程中出现环路时,中间路由器会向源主机发送超时消息,以便源主机能够得知数据包传输失败的原因。
2.4 参数问题(Parameter Problem)参数问题消息用于报告IP数据包中的参数错误。
当一个数据包的头部信息不符合规范或存在错误时,中间路由器会向源主机发送参数问题消息,以便源主机能够纠正错误并重新发送数据包。
2.5 重定向(Redirect)重定向消息用于通知源主机修改其路由表。
当一个中间路由器发现一个数据包的最佳路径发生变化时,它会向源主机发送重定向消息,以便源主机能够更新其路由表,选择更优的路径。
ICMP扫描程序的设计与实现学生姓名:帅哥指导教师:刘青摘要:我们常用Ping程序来判断一个特定的主机是否处于活动状态.该程序发送一个ICMP回应请求报文给主机,然后等待返回的ICMP报文回应应答就可以知道自己是否能成功的访问到那台机器.本次课程设计涉及到MFC的应用,要在充分了解套接字的实现以及IP,ICMP的格式,功能等的基础上才能实现此设计。
关键字:ICMP;扫描;程序;协议;目录1 引言 (3)1.1 课程设计目的 (3)1.2 课程设计要求 (3)2 概要设计 (4)2.1 设计原理 (4)2.2 数据结构设计 (4)2.3 系统流程图 (6)3 详细设计 (8)3.1 ICMP报文分析 (8)3.2 程序功能分析 (9)4 测试结果 (12)4.1 遇到问题 (12)4.2 测试结果 (12)5 结束语 (13)参考文献 (14)附录及源代码 (15)1 引言1.1 课程设计目的IP协议的优点是简单,但缺少差错控制和查询机制,而网际控制报文协议(ICMP具有补充IP功能的作用。
在网络管理中,常常要确定当前网络在红处于活动状态的主机,这时可以通过ICMP的回送和回送响应消息来完成这项工作。
这课程设计的目的就是编制程序,利用ICMP数据包,发现网络中的活动主机,即ping消息的请求和应答。
通过课程设计,熟悉ICMP报文的结构,对ICMP协议有更好的理解和认识,培养综合运用网络知识解决实际问题能力。
1.2 课程设计要求设计程序,其功能是发送ICMP数据包,以获取指定望段中的活动主机,并将结果显示在标准输出设备上程序的具体要求如下:1.用命令形式运行scanhost为程序名;start_ip为被搜索网段;end_ip为被搜索网段的结束IP地址。
如在命令行输入scanhost 192.168.0.1 192.168.0.1002.输出格式活动主机1的IP地址活动主机2的IP地址活动主机n的IP地址2 概要设计2.1 设计原理本程序使用的原始套接字生成ICMP请求/应答报文来进行活动主机的探查。
计算机网络课程设计通过课程设计,使学生在对计算机网络技术与发展整体了解的基础上,掌握网络的主要种类和常用协议的概念及原理,初步掌握以TCP/IP协议族为主的网络协议结构,培养学生在TCP/IP协议和LAN、WAN上的实际工作能力;学会网络构建、网络日常维护以及网络管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能。
运用网络工程和软件工程思想,按照需求分析、规划、设计、配置的基本流程,经历一个完整的网络工程过程,培养学生调查研究、查阅技术文献、资料、手册以及编写技术文档的能力,培养学生将理论知识应用于实践的能力。
格式要求及须知:(1)使用信息学院网站()的课程设计模版,要求格式美观,字体及编号要求见表1。
(2)(3)附录:课程设计中的代码或得到的数据包等数据将作为该设计附件或附录,题目需要但没有的相应代码及数据包文件的将记整组不及格,需要重做。
(4)成绩记录:该设计成绩将记录到教务处成绩管理系统中。
(5)打印:经审查(发邮件到指导老师处或当面交流修改)后,方可打印、存档。
打印后递送到信息楼各指导老师的信箱中或办公室中。
(6)如发现两组设计雷同或来自互联网,该组重做。
题目:题目1 应用服务器配置与管理1、设计要求为校园网络中心设计和建立服务器群,能够提供:DNS,DHCP,WEB,FTP服务器。
要求网络中的普通用户使用动态IP地址,在WEB服务器上设置两个不同的站点,使用户可用不同的名字访问不同的站点,而且用户可以使用网内的FTP服务器进行内部网络的文件上传、下载。
FTP、Web服务器能够通过域名访问。
2、课程设计报告内容(1) 解释每个服务器的相关工作原理;(2) 给出各个服务器的功能说明;(3) 列出每个服务器的IP地址及域名规划;(4) 每个服务器给出配置的结果测试;(5) 给出每个服务器的综合验证结果。
题目2 一个简单企业网的设计与实现1、设计要求某企业有办公室、财务部、销售部、设计部、生产部5个部门,每个部门配置8台计算机。
计算机网络课程设计方案一、课程目标计算机网络课程旨在让学生掌握计算机网络的基本概念、原理、技术和应用,培养学生的网络设计、管理和维护能力,以及解决实际网络问题的能力。
通过本课程的学习,学生应达到以下目标:1、理解计算机网络的体系结构和协议,包括 OSI 参考模型和TCP/IP 协议栈。
2、掌握网络拓扑结构、传输介质、网络设备(如路由器、交换机)的工作原理和配置方法。
3、熟悉网络层、传输层、应用层的主要协议(如IP、TCP、UDP、HTTP、FTP 等)及其工作机制。
4、具备网络规划、设计和实现的能力,能够构建简单的局域网和广域网。
5、掌握网络安全的基本概念和技术,能够进行基本的网络安全防护。
6、学会使用网络工具和软件进行网络性能测试、故障诊断和分析。
二、课程内容1、计算机网络概述计算机网络的定义、发展历程和分类。
网络的性能指标,如带宽、延迟、吞吐量等。
2、网络体系结构与协议OSI 参考模型和 TCP/IP 协议栈的层次结构和功能。
数据在各层的封装和解封装过程。
3、物理层传输介质(如双绞线、同轴电缆、光纤)的特性和应用。
数字信号和模拟信号的转换。
4、数据链路层数据链路层的功能,如帧封装、差错控制、流量控制。
以太网协议和 MAC 地址。
5、网络层IP 协议,包括 IP 地址的分类、子网掩码、路由选择算法。
ICMP 协议和 ARP 协议。
6、传输层TCP 协议和 UDP 协议的特点和工作机制。
端口号的概念和用途。
7、应用层HTTP、FTP、SMTP、POP3 等常见应用层协议的原理和应用。
DNS 域名系统的工作原理。
8、网络安全网络安全的威胁和防范措施,如防火墙、入侵检测系统。
加密技术和数字证书。
9、网络管理网络管理的功能和模型。
SNMP 协议的原理和应用。
10、网络实验构建简单的局域网,包括网线制作、交换机和路由器的配置。
网络性能测试和故障诊断。
三、教学方法1、课堂讲授通过讲解、演示和案例分析,传授计算机网络的基本概念、原理和技术。
计算机网络课程中测试命令应用测试命令在计算机网络课程中非常重要,它们用于验证网络的功能、诊断网络故障以及优化网络性能。
下面将介绍一些常用的测试命令及其应用。
1. ping命令ping命令用于测试主机之间的连通性。
它发送ICMP Echo请求消息到目标主机,并等待响应消息。
通过观察响应时间和丢包率,可以判断主机之间的网络连接是否正常。
应用场景:-验证主机之间的连通性。
-排查主机之间的通信问题。
-判断网络延迟和丢包率。
2. tracert命令tracert命令用于跟踪数据包到目标主机的路径。
它通过发送ICMP Echo请求消息,每次增大TTL值,以便在路由器上进行跳转。
每个路由器接收到请求消息后,会返回ICMP Time Exceeded消息给源主机,源主机通过这些消息来确定数据包的路径。
应用场景:-检查数据包在网络中的传输路径。
-分析网络中的延迟问题。
-发现网络拓扑变化。
3. ipconfig/ifconfig命令ipconfig命令用于在Windows系统上查看和配置IP地址、子网掩码、默认网关等网络参数。
ifconfig命令用于在Linux/Unix系统上进行类似的操作。
这些命令还可以显示网络接口的状态、MAC地址和DNS服务器信息等。
应用场景:-确认主机的IP地址和网络设置。
-配置和修改网络参数。
示例:ipconfig/ifconfig4. nslookup命令nslookup命令用于查询DNS服务器,以获取主机的IP地址、域名解析记录和其他DNS信息。
它可以逆向解析IP地址,查找主机名和域名。
应用场景:-检查域名解析是否正确。
-查询DNS记录。
-执行反向域名查找。
5. netstat命令netstat命令用于显示当前活动的网络连接和监听端口。
它可以显示协议、本地和远程IP地址、端口号以及连接状态。
应用场景:-监视当前网络连接和端口使用情况。
-确定是否有未经授权的连接。
-识别网络攻击行为。
示例:netstat -a6. telnet命令telnet命令用于在客户端和服务器之间建立基于TCP协议的连接。
ping的实现 课程设计一、课程目标知识目标:1. 理解ping命令的基本工作原理,掌握其网络诊断功能;2. 学习并掌握使用ping命令检测网络连通性的方法;3. 了解ping命令的参数设置及其作用。
技能目标:1. 学会运用ping命令进行简单的网络故障排查;2. 能够通过ping命令的结果,分析网络延迟、丢包等问题;3. 培养学生对网络故障的敏感度,提高解决问题的能力。
情感态度价值观目标:1. 培养学生对计算机网络知识的兴趣,激发探索精神;2. 培养学生团队合作意识,学会在网络环境中与他人共同解决问题;3. 强化网络安全意识,让学生明白网络诊断工具的正确使用方法。
课程性质:本课程为计算机网络基础课程,旨在帮助学生掌握网络诊断的基本方法,提高实际操作能力。
学生特点:学生为初中年级,对计算机网络知识有一定的了解,具备基本的计算机操作能力。
教学要求:通过本章节的学习,要求学生能够熟练运用ping命令进行网络诊断,并具备一定的网络故障排查能力。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. 理论知识:- 计算机网络基础知识回顾,重点强调TCP/IP协议;- ping命令的工作原理,介绍ICMP协议的作用;- ping命令的参数及其功能解释,如:-t、-a、-n、-l等。
2. 实践操作:- 演示如何使用ping命令检测网络连通性;- 指导学生使用ping命令检测本地网络中的设备;- 实践案例:分析ping命令返回结果,判断网络延迟、丢包等问题。
3. 教学大纲:- 第一课时:计算机网络知识回顾,介绍ping命令及其工作原理;- 第二课时:ping命令的参数介绍,演示如何使用ping命令;- 第三课时:实践操作,学生分组进行网络诊断,分析ping命令结果;- 第四课时:总结与拓展,讨论网络故障排查的其他方法,强化网络安全意识。
教材关联:教学内容与课本第三章“网络诊断与故障排除”相关,结合课本案例,使学生更好地掌握网络诊断技巧。
选做2 Mininet实验第一章:需求分析要求:熟悉openflow概念,做通教程中的实验。
目的:学会使用模拟软件设计相关网络拓扑网络参数配置第二章:实验内容一.组建环境1.1在vmware虚拟机上安装mininet命令:mininetPassword mininetSudo mnExitIfconfig(查看虚拟机ip)1.2打开xming1.3打开putty,键入ip1.4在ssh下选择x11在enable x11 forwarding 前打勾,点open, 创建环境1.5首先键入$ sudo mn -h来启动 Mininet。
1.6键入$ sudo wireshark & 用putty环境打开Wireshark 来查看OpenFlow 的控制信息在Wireshark 的过滤选项中,输入of,然后选择Apply。
现在窗口上暂时应该没有任何OpenFlow 的数据包。
1.7 输入sudo mn命令;输入help显示Mininet CLI命令:输入命令nodes显示节点:输入net显示网络连接:输入dump显示所有节点信息:从上面的输出中,你可以看到有一台交换机和两台主机。
在Mininet 的CLI 中第一个字符串是设备名,那后面的命令就在该设备上执行。
例如我们想在h2设备上执行ifconfig则输入如下命令:为了区别显示host 主机的网络是隔离的,我们可以通过arp与route命令来做演示,分别在s1与h1上面演示如下:打印不同主机下面的进程列表:如上所示,h1,h2,s1三个进程列表是完全相同的。
1.8输入命令h1 ping h2 –c 1通过h1 ping h2测试主机间的连通性现在第一主机知道的第二个IP地址,并且可以通过ICMP ping 来回显请求。
这个请求,连同其从第二主机对应的应答使用pingall命令可以让每一个节点直接都产生上面的效果。
第二次ping 的时间将比第一次低的多退出mininet交互命令:exit二.回归性测试2.1运行回归测试,命令sudo mn --test pingpair(这条命令会创建一个小的拓扑结构,然后启动 OpenFLow 的控制器,然后跑 ping 测试,最后再把拓扑结构跟控制器关掉。
国家高等职业教育网络技术专业教学资源库计算机网络安全技术与实施课程资源子库学习情境1:实训指导1.1-1利用Packet Tracer分析协议工作过程(ICMP)实训指导1.1-1一、实训题目:利用Packet Tracer分析协议工作过程(ICMP)二、实训目的:1.掌握在PT软件中进行协议工作原理及过程的分析方法;2.能够利用PT软件的模拟分析,对特定的协议数据报文进行分析;3.了解不同协议的安全性问题;4.熟悉协议封装格式及原理,明确网络协议本身是不安全的。
三、实训要求:1.掌握Packet Tracer软件的安装与使用;2.掌握利用Packet Tracer软件对协议进行分析的方法;3.学会协议报文结构与各字段作用的分析方法。
四、实训网络场景或网络拓扑结构:网络拓扑结构图如下:PT仿真网络结构图如下:五、实训步骤:1. Packet Tracer软件的安装与使用PT软件的安装非常简单,并且在前序的路由交换相关设备配置的课程中已经有所学习,这里将重点介绍其协议分析功能,具体参见后续步骤。
2.利用PT分析ICMP协议结构步骤一:在配置完成的PT文件进行PING命令测试在Z_PC1(IP地址为192.168.201.1)上去PING计算机Z_PC2(IP地址为192.168.201.2)步骤二:测试成功后进入模拟分析状态下在Z_PC1上去PING计算机Z_PC2,测试正常后,完成后续步骤。
步骤三:设置分析协议类型,并启动分析点击“Edit Filters”选择ICMP协议:步骤四:执行PING测试命令步骤五:查看ICMP协议数据报文计算机Z_PC1发送给计算机Z_PC2的ICMP查询请求报文如下图所示:根据上图中的ICMP协议部分,可以看到ICMP协议字段中,类型为8,表示的是ICMP 的请求报文,代码为0。
这是一个WINDOWS系统下的PING命令Echo Request报文。
计算机Z_PC2发送给计算机Z_PC1的ICMP应答报文如下图所示:根据上图中的ICMP协议部分,可以看到ICMP协议字段中,类型为0,表示的是ICMP 的应答报文,代码为0。
计算机网络课程设计ICMP协议专业名称计算机科学与技术班级学号学生姓名指导教师设计时间2011.7.4~2010.7.17课程设计任务书专业:计算机科学与技术学号:学生姓名:设计题目:ICMP协议一、设计实验条件综合楼808实验室二、设计任务及要求1.利用VB实现ICMP的基本功能;2.ICMP的Ping排错工具;3.ICMP的Traceroute排错工具。
三、设计报告的内容1.设计题目与设计任务设计题目:ICMP协议设计任务:利用VB实现ICMP的基本功能2.前言ICMP(Internet Control Message Protocol)是网际控制报文协议。
它是TCP/IP 协议族的一个子协议,属于网络层协议。
主要用于在主机与路由器之间传递控制信息,提供差错报告和网络诊断的功能,例如目的主机不可达,发送分组超时等消息。
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
从技术角度来说,ICMP就是一个“错误侦测与回报机制”。
常用的ICMP 工具有Ping和Traceroute两个。
Ping用来检测远端主机是否可达,诊断网络连通情况。
Traceroute用来发现到目的节点所经历的所有路由器,获得网络的拓扑结构信息,诊断排除网络故障。
本课程设计中实现了使用ICMP进行排错的工具:Ping和Traceroute。
3.设计主体(各部分设计内容、分析、结论等)1)关于ICMP报文ICMP报文可划分为两大类:差错报告报文(error-reporting messages)和查询报文(query messages)。
差错报告报文报告了路由器或主机(终点)在处理IP数据报时可能遇到的问题。
查询报文总是成双成对地出现,它帮助主机或网络管理员从某个路由器或对方主机那里获取特定的信息。
例如,结点可以去发现它们的邻站。
同样,主机也可以发现和了解它们所在的网络上的一些路由器的情况,而路由器又能够帮助一个结点改变报文的路由。
表1列出了每一类ICMP报文。
表1. ICMP报文种类类型报文差错报告报文 3 终点不可达4 源点抑制11 超时12 参数问题5 改变路由查询报文8或0 回送请求或回答13或14 时间戳请求或回答报文格式:ICMP报文由一个8字节的首部和可变长度的数据部分组成。
虽然对每一种报文类型,首部的一般格式都是不同的,但前4个字节对所有类型来说都是相同的。
如图1所示,第一个字段是ICMP的类型,它定义了报文类型。
代码字段指明了发送这个特定报文类型的原因。
最后一个共同的字段是检验和字段。
其余部分对于每一种类型的报文都是特有的。
在差错报文中,数据部分携带的是用于找出引起差错的原始分组的信息。
在查询报文中,数据部分携带的是基于查询类型的额外信息。
下图中,图1给出了ICMP报文的一般格式,图2给出了ICMP报文的类型。
8位8位16位类型代码校验和首部的其余部分数据部分图1:ICMP报文的一般格式图2:ICMP报文类型2)关于PingPing程序可以查出某个主机是否已加电并能够响应。
源主机发送ICMP回送请求报文(类型:8,代码:0)。
如果终点已加电,就会返回ICMP回送回答报文。
程序ping在回送请求和回送回答报文中设置了标识符字段,并使序号从0开始,每发送一个新报文序号就递增1。
Ping能够计算往返时间,它在报文的数据部分插入了发送时间。
当分组到达时,它就用到达时间减去出发时间得出往返时间(round-trip time, RTT)。
Ping程序结束后会发给我们一个统计值,这个统计值告诉我们发送的分组数、接受到的分组数、总时间、RTT的最小值、最大值和平均值。
3)关于TracerouteTraceroute可以用来跟踪一个分组从源点到终点的路径。
这个程序很巧妙地使用了两个ICMP报文—超时报文和终点不可达报文来找出一个分组的路由。
这是一个应用级程序,它使用UDP服务。
该诊断实用程序通过向目的地发送具有不同生存时间(TTL) 的ICMP回应报文,以确定至目的地的路由。
路径上的每个路由器都要在转发该ICMP 回应报文之前将其TTL 值至少减1,因此TTL 是有效的跳转计数。
当报文的TTL 值减少到0 时,路由器向源系统发回ICMP 超时信息。
通过发送TTL 为 1 的第一个回应报文并且在随后的发送中每次将TTL 值加1,直到目标响应或达到最大TTL 值,Traceroute 可以确定路由。
通过检查中间路由器发发回的ICMP 超时(time Exceeded) 信息,可以确定路由器。
Traceroute程序记录了到达的IP数据报的目的地址,跟踪了从源点到终点的路径,并记下了往返时间。
4)程序关键代码声明Windows API函数:Declare Function gethostname Lib "wsock32.dll" (ByVal hostname$, HostLen&) As LongDeclare Function gethostbyname& Lib "wsock32.dll" (ByVal hostname$)Declare Function WSAGetLastError Lib "wsock32.dll" () As LongDeclare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAData As WSAdata) As LongDeclare Function WSACleanup Lib "wsock32.dll" () As LongDeclare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Declare Function IcmpCreateFile Lib "icmp.dll" () As LongDeclare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As BooleanDeclare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, _ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, _ReplyBuffer As IP_ECHO_REPL Y, ByVal ReplySize As Long, ByVal TimeOut As Long) As BooleanForm中的代码显示:If TraceRT = False ThenIf pIPe.Status = 0 ThenText3.Text = Text3.Text + " Reply from " + RespondingHost + ": Bytes = " + Trim$(CStr(pIPe.DataSize)) + " RTT = " + Trim$(CStr(pIPe.RoundTripTime)) + "ms TTL = " + Trim$(CStr(pIPe.Options.TTL)) + Chr$(13) + Chr$(10)ElseText3.Text = Text3.Text + " Reply from " + RespondingHost + ": " + RCode + Chr$(13) + Chr$(10)End IfElseIf TTL - 1 < 10 Then Text3.Text = Text3.Text + " Hop # 0" + CStr(TTL - 1) Else Text3.Text = Text3.Text + " Hop # " + CStr(TTL - 1)Text3.Text = Text3.Text + " " + RespondingHost + Chr$(13) + Chr$(10) End IfSocket:MaxSockets = WSAdata.iMaxSocketsIf MaxSockets < 0 ThenMaxSockets = 65536 + MaxSocketsEnd IfMaxUDP = WSAdata.iMaxUdpDgIf MaxUDP < 0 ThenMaxUDP = 65536 + MaxUDPEnd IfPing:vbWSAStartup ' Initialize WinsockvbGetHostByName ' Get the IPAddress for the Host vbIcmpCreateFile ' Get ICMP HandlevbIcmpSendEcho ' Send the ICMP Echo RequestvbIcmpCloseHandle ' Close the ICMP Handle vbWSACleanup ' Close WinsockTrace:vbWSAStartup ' Initialize Winsock vbGetHostByName ' Get the IPAddress for the Host vbIcmpCreateFile ' Get ICMP Handle vbIcmpSendEcho ' Send the ICMP Echo Request vbIcmpCloseHandle ' Close the ICMP Handle vbWSACleanup ' Close Winsock5)程序运行截图图3 ping图4 Traceroute4.结束语本课程设计实现了使用ICMP进行排错的工具:Ping和Traceroute。