《计算机网络课程设计基于ICMP的PING设计》由会员分享,可在线阅读,更多相关《计算机网络课程设计基于ICMP的PING设计(19页珍藏版)》请在金锄头文库上搜索。
1、编程实现基于ICMP的PING学生姓名: 指导老师:摘 要 本次课程设计主要是基于Linux系统,使用编程语言C语言,编写一个实验程序,实现基于ICMP报文的PING的类似功能。本文主要介绍了ICMP报文,PING功能的相关原理,根据设计要求,用C语言编程运行、仿真,通过观察实验结果,从而判定本次设计成功完成任务。通过这次计算机网络方面的课程设计,提高了我们对网络领域的认识,有利于培养我们在该方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。关键词 Linux;C语言;ICMP;PINGProgramming P
2、ING capabilities based on ICMP protocolStudent Name:Li minghong Instructor:Long jizhengAbstract The curriculum design is mainly based on the Linux system, use the programming language C language, write a test program, packet-based ICMP PING similar function. This paper describes the ICMP message, PI
3、NG function of relevant principles, according to design requirements, the C programming language to run the simulation, by observing the results, which determine the success of this design task. Through this computer network design aspects of the curriculum, improve our knowledge in the field of net
4、working, helping to train us in that aspect of the design capacity. One person, one problem is particularly conducive to exercise our independent analysis of issues and problem-solving ability. The complexity of the design process increases the stringent requirements of teacher training benefit our
5、strict style of workKeywords Linux;C language;ICMP;PING1 引 言当现代社会逐渐变为具有高度的相互依赖的巨大网络时,我们所生活的世界无法不变成一个被计算机网络紧密联结起来的世界。计算机网络从技术角度来说,是作为一种布局,将经有关联但相距遥远的事物通过通信线路连接起来,但是对网络的思考决不是传统的二维平面思维甚至三维的球面思维所能达到的。在信息时代,网络的生命在于其安全性和可靠性。计算机网络最重要的方面是它向用户所提供的信息服务及其所拥有的信息资源,网络连接在给用户带来方便的同时,也给网络入侵者带来了方便。因此,未来的计算机网络应该具有很高的
6、安全性和可靠性,可以抵御高智商的网络入侵者,使用户更加可靠、更加方便地拥有大量各式各样的个性化客户服务。1.1 课程设计的目的本次设计的目的就是在掌握计算机网络理论的基础上,了解网络技术,掌握网络相关设计方法和思想,通过本次课程设计,达到巩固和综合运用计算机网络原理的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。掌握计算机网络课程的知识可使学生打下一个坚实的专业基础,可提高处理通信系统问题能力和素质。由于通信工程专业理论深、实践性强,做好课程设计,对学生掌握本专业的知识、提高其基本能力是非常重要的。 本次设计的目的也是为了学生加深对所学计算机网络
7、知识的理解,培养学生专业素质,提高利用计算机网络知识处理通信系统问题的能力,为今后的专业课程的学习、毕业设计和工作打下良好的基础。使学生能比较扎实地掌握本专业的基础知识和基本理论。 本次课程设计主要是基于Linux系统,使用编程语言C语言,编写一个实验程序,实现基于ICMP报文的PING的类似功能。本文主要介绍了ICMP报文,PING功能的相关原理,根据设计要求,用C语言编程运行、仿真,通过观察实验结果,从而判定本次设计成功完成任务。通过这次计算机网络方面的课程设计,提高了我们对网络领域的认识,有利于培养我们在该方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的
8、复杂加老师的严格要求有益于培养我们严谨的工作作风。1.2 课程设计的主要任务和要求 课程设计的主要任务编程实现PING的服务器端和客户端,实现操作系统提供的ping命令的类似功能。服务器端PingServer功能:可以并发地为多个用户服务;显示用户通过客户端发送来的消息内容(包含头部和payload);能够模拟分组的丢失;能够模拟分组传输延迟;将用户发送来的请求request在延迟一段随机选择的时间(小于1s)后返回给客户端,作为收到请求的响应reply; 通过如下命令行启动服务器:java PingServer port。port为PingServer的工作端口号客户端PingClient功
9、能:启动后发送10个request。发送一个request后,最多等待1秒以便接收PingServer返回的reply消息。如果在该时间内没有收到服务器的reply,则认为该请求或对该请求的reply已经丢失;在收到reply后立即发送下一个request。请求消息的payload中至少包含关键字PingUDP、序号、时间戳等内容。如:PingUDP SequenceNumber TimeStamp CRLF其中:CRLF表示回车换行符(0X0D0A);TimeStamp为发送该消息的机器时间。为每个请求计算折返时间(RTT),统计10个请求的平均RTT、最大/小RTT。通过如下命令行启动:j
10、ava PingClient host port。host为PingServer所在的主机地址;port为PingServer的工作端口号课程设计的要求: (1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。2 理论基础2.1 ICMP相关介绍ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间
11、传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设
12、备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”
13、50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视! 比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。(现在的操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞) 此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量
14、的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。2.2 PING相关介绍 Ping 是Windows系列自带的一个可执行命令。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址。该命令还可以加许多参数使用,PING是DOS命令,一般用于检测网络通与不通 ,也叫时延,其值越大,速度越慢。PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。 它是用来检查网络是否通畅或者网络连接
15、速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少? ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。 简单的说,Ping就是一个测试程序,如果Ping运行正确,你大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送,Ping也被某些别有用心的人作为DDOS(拒绝服务攻击)的工具,曾经Yahoo就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据包而瘫痪的。 按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,你应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短