计算机网络基础课程设计PING程序的实现

合集下载

ping命令的实现过程

ping命令的实现过程

ping命令的实现过程Ping命令是计算机网络中常用的命令之一,用于测试主机之间的连通性和测量网络的响应时间。

本文将详细介绍Ping命令的实现过程,从底层的原理到具体的步骤,帮助读者了解Ping命令背后的工作原理。

第一步:构建ICMP报文Ping命令使用的是ICMP(Internet Control Message Protocol)协议来实现。

ICMP是网络层协议的一部分,用于在IPv4网络中传输控制和错误消息。

Ping命令构建的ICMP报文中包含了源IP地址、目的IP地址和一些其他的控制和错误信息。

第二步:发送ICMP报文Ping命令通过操作系统提供的网络API来发送ICMP报文。

具体的过程包括创建一个套接字(socket)、设置套接字的选项、指定目的IP地址和端口号等。

当ICMP报文被发送到目的主机时,它会被网络设备(如路由器)转发到目的主机。

第三步:接收ICMP回应目的主机收到ICMP报文后,会根据报文中的信息进行相应的处理。

如果目的主机可以接受ICMP报文,它会在接收后生成一个ICMP回应报文,并将其发送回源主机。

ICMP回应报文中包含了与源ICMP报文相对应的标识符和序列号等信息。

第四步:计算往返时间源主机收到ICMP回应报文后,会通过比较回应报文中的标识符和序列号等信息,来确定该回应报文与先前发送的ICMP报文所对应。

通过记录发送ICMP报文的时间戳和接收ICMP回应报文的时间戳,可以计算出往返时间(Round-Trip Time,简称RTT)。

第五步:显示结果Ping命令会将计算得到的往返时间显示在终端上,同时还会显示其他统计信息,如丢包率、最小RTT、最大RTT和平均RTT等。

这些信息可以帮助用户了解网络的稳定性和性能。

总结:Ping命令的实现过程可以概括为构建ICMP报文、发送ICMP报文、接收ICMP回应、计算往返时间和显示结果。

通过这一过程,Ping命令可以验证网络的连通性,并测量网络的响应时间。

计算机网络实验之Ping程序的设计与实现

计算机网络实验之Ping程序的设计与实现

课程名称计算机网络实验序号实验五实验项目 Ping程序的设计与实现2017年 03月 25 日实验报告要求1、实验报告封面填表说明(每份实验报告必须附上封面)(1)课程名称:要求与实验大纲和实验指导书中的课程名称一致。

(2)实验序号:指该课程的第几个实验。

(3)实验项目:要求与实验大纲和实验指导书中的实验项目一致。

(4)实验地点:填写完成该实验项目所在的实验室名称。

(5)实验学时:要求与实验大纲和实验指导书中完成该实验项目所需学时一致。

(6)实验类型:是指演示性、操作性、验证性、综合性、设计性。

演示性:教师操作,学生观察,验证理论、说明原理和方法。

操作性:学生按要求动手拆装、调试实验装置或上机操作,掌握其基本原理和方法。

验证性:按实验指导书(教材)要求,由学生通过操作验证所学理论,加深对理论、知识的理解,掌握基本实验知识、方法、技能、数据处理等。

综合性:实验内容涉及本课程的综合知识或相关课程的知识,运用多的知识、多种方法,按要求或自拟实验方案进行实验。

主要培养学生综合运用所学知识、实验方法和实验技能,以培养其分析、解决问题的能力。

设计性:给定实验目的、要求和实验条件,学生自己设计实验方案并加以实现的实验。

学生独立完成从查阅资料、拟定实验方案、实验方法和步骤(或系统分析和设计)、选择仪器设备(或自行设计缺制作)进行实验并完成实验全过程,形成实验报告,培养学生自主实验的能力。

2、实验报告的格式3、教师批改学生实验报告要求(1)批改:全部批改及更正错误。

(2)评分:按百分制评分,不能评分为“优、良、中、差”或“A、B、C”。

(3)签名及批改日期:任课教师必须在每份学生实验报告中签名和写上批改日期。

(4)成绩:填写学生实验成绩表,实验成绩作为考试成绩评定的依据。

(4)评语:任课教师批改学生实验报告时,应给出简明扼要的评语。

计算机网络课程设计(ping)

计算机网络课程设计(ping)

计算机网络课程设计Ping程序设计(后附源码)四川大学黄昊1143041195一.设计目标二.ICMP包结构三.校验和计算四.代码实现a)ICMP封包b)ICMP包转换成字节数组c)域名解析、选择IPv4地址d)原始套接口e)计算校验和五.运行结果六.总结一、设计目标本程序设计实现基本的ping程序功能,包括域名解析,ICMPv4回显包发送,统计丢失率等功能。

二、ICMP包结构ICMP包包含在IP包结构之内,是去除IP包头的部分,C#提供的Raw Socket功能可以实现包装ICMP结构,但自动包含IP包头等结构。

ICMP包由1Byte类型、1Byte SubCode、2字节校验和、2字节标示符、2字节序号,若干字节数据组成。

其结构图如下:4Byte类型号8 、子代码表示ICMP回显功能,默认标示符45、序号0、Data小节可填充数据,本程序填充了ASCII码‘a’十六进制61,填充24字节,所以整个包大小共32字节。

三、校验和计算对于ICMP包中的校验和,首先将校验和填0之后再整体计算。

计算时,按照2字节为一个单位累加,最后将所有溢出结果再次做加法,最后整体取反,返回一个2字节长的校验和。

具体计算方法伪代码如下:Int32 cksum = 0;for (int i = 0; i < 16; i++){cksum += ConvertToUInt16(packet, i * 2);}cksum = (cksum >> 16) + (cksum & 0xffff);cksum += (cksum >> 16);return (ushort)(~cksum);四、代码实现a)实现难度1:封装ICMP包。

为了方便操作与计算,在C#中,创建了一个ICMP包的结构体。

为了使包的逻辑结构与实际发送的结构一样,借助了C#提供的一个机制,叫非托管内存布局,使用StructLayoutAttribute属性,其中参数LayoutKind.Sequential指定了整个结构体的数据堆放方式为顺序堆放,保证内存中数据的连续性。

ping的简单实现课程设计

ping的简单实现课程设计

ping的简单实现课程设计一、教学目标本课程的教学目标是使学生掌握ping命令的基本使用方法,理解其工作原理,能够通过ping命令诊断网络连接问题。

具体包括:1.了解ping命令的作用和基本语法。

2.掌握如何使用ping命令检测网络连接。

3.理解ping命令的响应结果的含义。

4.能够独立操作计算机,运行ping命令。

5.能够分析ping命令的输出结果,判断网络连接状态。

6.能够根据实际情况,选择合适的ping命令参数。

情感态度价值观目标:1.培养学生对网络通信技术的兴趣和好奇心。

2.培养学生解决问题的能力和团队合作精神。

二、教学内容本课程的教学内容主要包括以下几个部分:1.ping命令的基本概念和语法。

2.ping命令的使用方法,包括如何检测网络连接。

3.ping命令的响应结果的解读。

4.如何在实际情况下,选择合适的ping命令参数。

三、教学方法本课程的教学方法包括:1.讲授法:讲解ping命令的基本概念、语法和原理。

2.实验法:引导学生实际操作ping命令,检测网络连接。

3.讨论法:分组讨论ping命令的输出结果,培养学生解决问题的能力。

四、教学资源本课程的教学资源包括:1.教材:《计算机网络基础》相关章节。

2.多媒体资料:PPT课件,网络连接检测的实验视频。

3.实验设备:计算机、网络环境。

以上是本课程的教学设计,希望能够帮助学生更好地掌握ping命令的使用,提高网络故障排除的能力。

五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:通过观察学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和理解能力。

2.作业:布置相关的ping命令练习题,要求学生独立完成,通过作业的质量和完成时间评估学生的掌握程度。

3.实验报告:学生在实验过程中,需要撰写实验报告,描述实验过程、结果和收获,通过实验报告评估学生的实际操作能力和问题解决能力。

计算机网络基础课程设计Ping程序实现

计算机网络基础课程设计Ping程序实现

计算机网络基础课程设计Ping程序实现计算机网络工程课程设计报告题目:Ping程序的实现学生姓名:学号:专业班级:计科专业班同组姓名: 指导教师:设计时间:2022年下学期第某周指导老师意见:评定成绩:签名:日期:年月日目录一、课程设计的目的和意义2二、课程设计的内容和要求21.内容:22.要求:2三、课程设计的相关技术2四、课程设计过程21.Ping主模块22.功能控制模块43.数据报解析模块5五、课程设计小结6六、参考文献7七、附录(程序清单)7八、心得体会11一、课程设计的目的和意义利用ICMP数据包、C语言实现Ping命令程序,能实现基本的Ping操作,发送ICMP回显请求报文,用于测试—个主机到只一个主机之间的连通情况。

通过本程序的训练,使学生熟悉ICMP报文结构,使学生对ICMP有更深的理解,掌握Ping程序的设计方法,掌握网络编程的方法和技巧,从而编写出功能更强大的程序。

二、课程设计的内容和要求1.内容:用C语言实现Ping命令程序,能实现基本的Ping操作,发送ICMP回显请求报文,用于测试—个主机到只一个主机之间的连通情况。

2.要求:1)独立完成程序的设计、编码和调试。

2)系统利用C语言实现,程序调试环境为TurboC或VC;3)按照课程设计规范书写课程设计报告。

4)采用VC环境进行调试运行。

三、课程设计的相关技术由于Ping程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。

为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的ocket编程。

首先定义IP数据报首部,在IP数据报的基础上定义ICMP数据报首部,并初始化一些全局变量。

接着自定义填充ICMP数据报字段函数FillICMPData()、校验和函数checkum()、解读ICMP报首部函数DecodeICMPHeader()、释放资源函Cleanup()。

最后主函数通过调用这些函数来实现Ping命令功能。

ping程序设计与实现课程设计

ping程序设计与实现课程设计

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程序工作原理。

ping命令的设计与实现

ping命令的设计与实现

设计报告课程计算机网络设计名称《ping命令的设计与实现》专业班级计科094 同组人姓名同组人学号实验日期2013-04-10 指导教师成绩2013 年 04 月 10 日设计目的和要求1、实验目的:Ping命令向目的主机发送ICMP ECHO—REQUEST请求并接收目的主机返回的响应报文,用来检验本地主机和远程的主机是否连接。

2.实验要求:利用ICMP数据包,测试主机的连通性,通过课程设计,使学生熟悉ICMP报文结构,使学生对ICMP有更深的理解。

要求:输出参考系统自带ping程序,命令行运行:ping ip二、设计说明设计分析:使用原始套接字可以读写ICMP分组,利用原始套接字发送ICMP回显请求,并接收ICMP 回显应答,通过icmp_send()发送ICMP回显示请求包,icmp_recv()接收ping目的主机的回复,并使用终端信号处理函数SIGINT处理信号,建立两个线程,一个用于发送数据,另一个用于接收响应数据,主程序等待两个线程运行完毕后再进行下一步动作。

最后,主程序讲发送数据和接收的数据进行统计,并将结果打印出来。

系统运行环境:虚拟机:Fedora14(linux操作系统) gcc设计中的重点和难点:ICMP数据包的打包和解包,以及从CRC16校验算法的分析实现输入和输出条件:在linux系统下运行ping 在出现4个响应包后按Ctrl+c键停止发送。

三、系统详细设计《Ping命令的设计与实现》Ping命令向目的主机发送ICMP ECHO—REQUEST请求并接收目的主机返回的响应报文,用来检验本地主机和远程的主机是否连接。

协议格式图1.1中已经对ICMP协议的报文格式进行了说明。

Ping 的客户端方式的类型为8,代码值为0,表示ICMP的回显请求。

类型为0,代码为0是,是ICMP回显应答。

检验和为16为的crc16 的算法。

0 7 8 15 16 31图1.1 ICMP报文的数据格式图1.2所示为ping所使用的类型和代码格式。

计算机网络基础实验指导(Ping命令)

计算机网络基础实验指导(Ping命令)

实验一计算机网络基础一.实验目的1、熟悉网卡、掌握如何在Windows下如何察看网卡的型号、MAC地址、IP地址等参数。

2、熟悉Windows中的网络组建及各参数的设置和基本意义。

3、网络测试命令PING的用法。

二.实验任务与要求1、网卡是网络中不可缺少的网络设备,掌握其使用情况,及如何设置其参数对网络的正常使用非常重要。

本部分要完成以下任务:(1)利用Windows下ipconfig 命令查看网卡的基本参数。

(2)如何设置网卡的IP地址。

2、Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。

根据返回的信息,就可以推断TCP/IP参数是否设置得正确以及运行是否正常。

(1)Ping 本机IP(Ping 本机机器名;Ping 127.0.0.1)。

(2)Ping 邻近计算机的IP(或者是对方计算机的机器名)。

(3)Ping 网站(前题是能接入Internet)。

三.实验步骤1.Ipconfig的使用每台联网的计算机需要一个工作组内惟一的计算机名,在企事业单位内的计算机可以利用设备编号对计算机进行命名。

使用并安装TCP/IP协议时,需要为每台主机分配一个在工作组网络中惟一的IP地址,并进行相应配置Ipconfig命令可以对本机IP配置进行查看。

执行:开始-运行,在弹出的对框框中,输入CMD将进入黑白屏幕的DOS界面。

(又称为命令提示符),参见图1-1图1-1在“命令提示符”下输入ipconfig/all(可以连续输入)将显示出本机网卡的基本参数。

参见图1-2图1-2请记录你所用计算机的主机名(Host Name)、网卡型号(Description)、网卡物理地址(Physical Address)、IP地址(IP Address)、子网掩码(Subnet Mask)、网关(Default Gateway)。

(2)利用“网上邻居”修改网络参数。

图1-3 图1-4 在桌面“网上邻居”的图标上点击鼠标右键,弹出的快捷菜单中选择“属性”。

ping程序的设计与实现

ping程序的设计与实现

ping程序的设计与实现
Ping程序的设计与实现是通过一种单向测量技术来实现的,它可以用来评估网络的性能、访问故障和网络可用性。

Ping程序工作时会首先向目标主机发送一个ICMP(网际控制报文协议)报文,然后等待目标主机的应答。

在实现ping程序的过程中,首先要为发送的ICMP数据报定义一个数据结构,这个数据结构将包含所有必要的信息,如报文类型、报文代码、校验和等。

其次,要实现函数,对这个数据结构进行填充和序列化,以便将ICMP报文发送出去。

实现发送ICMP报文后,就要开始接收应答。

为此,可以利用Socket API来创建一个Raw Socket,以便从网络上接收ICMP报文,并将其解码为数据结构,以便能够识别是哪一条报文的应答。

最后,还需要实现超时,用来处理因网络拥塞或丢包等原因导致的应答报文没有收到的情况。

这可以通过在发送ICMP报文之前先设置一个定时器,当定时器到期时,就可以判断该报文没有收到应答报文而超时。

以上就是ping程序的大致设计与实现方式,整个实现的过程可以大体分为发送ICMP数据报、接收应答和超时处理三部分。

这些都需要对数据报结构进行定义和填充,以及使用Socket API创建Raw Socket 来发送和接收数据,并通过设置定时器来实现超时处理,以保证ping 程序可以正常工作。

ping程序设计与实现

ping程序设计与实现

测试结果如下:
1.
2.
错误分析:
1. Request Timed Out a.提到的对方可能装有防火墙或已关机以外,还有就是本机的IP不正确和网关设置错误。 b.IP不正确:IP不正确主要是IP地址设置错误或IP地址冲突。
2. Destination Host Unreachable
a.如果局域网中使用DHCP分配IP时,而碰巧DHCP失效,这时使用 PING命令就会产 生此错误。
1.初始化模块 2.功能控制模块 3.数据控制模块 4.数据 Nhomakorabea解读模块
5. ping测试模块
程序测试:
1. Ping127.0.0.1,127.0.0.1回送地址Ping回送地址是为了检 查本地的TCP/IP协议有没有设置好。 2. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否 正常。
ping的程序设计与实现
1.设计目的:本程序设计主要解决在本地的电脑上去 查看别的网站和本机电脑的连通性,检查本机是否可以 在浏览器上访问到该网站。
2.开发平台:在课程设计中,系统开发平台为
Windows xp或者Windows 7,程序设计设计语言采 用Visual C++来实现。
本程序设计的五个模块:
b.另外子网掩码设置错误也会出现这错误。
c.比较特殊就是路由返回错误信息,它一般都会在"Destination Host Unreachable"前加 上IP地址说明哪个路由不能到达目标主机。这说明你的机器与外部网络连接没有问题, 但与某台主机连接存在问题。
谢谢各评委老师 以及在座的小伙伴们!

ping程序的设计实现分析范文

ping程序的设计实现分析范文

精品文档滁州学院课程设计报告课程名称:计算机网络课程设计设计题目ping程序的设计与实现:系别:计算机与信息工程学院专业:计算科学与技术组别:第五小组~2011年12月812月1日日2011起止日期:年指导教师:计算机科学与技术系二○一一年制.精品文档课程设计任务书.精品文档一.Ping 程序运行原理在网络层,除了IP协议之外,还有一些控制协议,如ICMP,ARP, DHCP等。

1.ping的基础知识原始套接字原始套接字是允许访问底层传输协议的一种套接字类型。

使用原始套接字操作IP数据报,可以进行路由跟踪,Ping等。

另外,使用原始套接字需要知道许多下层协议结构的知识,所以下面讨论ICMP,IP, UDP, TCP格式。

原始套接字有两种类型,第一种类型是在IP头种使用预定义的协议,如ICMP;第二种类型是在IP头种使用自定义的协议。

下面使用创建原始套接字的方法。

创建套接字的函数是socket()或者WSASocket(),只不过要将套接字类型指定为SOCK_RAW,代码如下:SOCKET sraw = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);创建原始套接字时socket函数的第三个参数protocol值将成为IP头中得协议域的值。

IPPROTO_ICMP指定要使用ICMP。

原始套解释提供管理下层传输的能力。

他们可能会被恶意利用,因此,仅Administrator组的成员能够创建SOCK_RAW类型的套接字。

任何人在Windows NT下都可以创建原始套接字,但是没有Administrator权限的人不能用它来做任何事情,因为bind函数将会失败,出错码WSAEACCES..在上面的套接字创建代码种,我们使用ICMP,也可以使用IIGMP, UDP, IP或者原始IP,对应的宏定义分别是IPPROTO_IGMP, IPROTO_UDP, IPPROTO_IP或者IPPROTO_RAW。

ping程序的设计实现分析范文

ping程序的设计实现分析范文

滁州学院课程设计报告课程名称:计算机网络课程设计设计题目:ping程序的设计与实现系别:计算机与信息工程学院专业:计算科学与技术组别:第五小组起止日期:2011年12月1日~2011年12月8日指导教师:计算机科学与技术系二○一一年制课程设计任务书一.Ping 程序运行原理在网络层,除了IP协议之外,还有一些控制协议,如ICMP,ARP, DHCP等。

1.ping的基础知识原始套接字原始套接字是允许访问底层传输协议的一种套接字类型。

使用原始套接字操作IP数据报,可以进行路由跟踪,Ping等。

另外,使用原始套接字需要知道许多下层协议结构的知识,所以下面讨论ICMP,IP, UDP, TCP格式。

原始套接字有两种类型,第一种类型是在IP头种使用预定义的协议,如ICMP;第二种类型是在IP头种使用自定义的协议。

下面使用创建原始套接字的方法。

创建套接字的函数是socket()或者WSASocket(),只不过要将套接字类型指定为SOCK_RAW,代码如下:SOCKET sraw = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);创建原始套接字时socket函数的第三个参数protocol值将成为IP头中得协议域的值。

IPPROTO_ICMP指定要使用ICMP。

原始套解释提供管理下层传输的能力。

他们可能会被恶意利用,因此,仅Administrator组的成员能够创建SOCK_RAW类型的套接字。

任何人在Windows NT下都可以创建原始套接字,但是没有Administrator权限的人不能用它来做任何事情,因为bind函数将会失败,出错码WSAEACCES..在上面的套接字创建代码种,我们使用ICMP,也可以使用IIGMP, UDP, IP或者原始IP,对应的宏定义分别是IPPROTO_IGMP, IPROTO_UDP, IPPROTO_IP或者IPPROTO_RAW。

5-Ping程序设计与实现

5-Ping程序设计与实现
解析命令行,创建原始套接字;8小时
4.构造IP、ICMP数据报;
接收ICMP差错报文并进行解析处理;8小时
5.课程设计报告4小时
计算机网络课程设计任务书
设计题目
Ping程序设计与实现(Java)★
已知技术参数和设计要求
1.已知参数:目的节点IP地址或主机名
2.设计要求:通过原始套接字编程,模拟Ping命令,实现其基本功能,即输入一个IP地址或一段IP地址的范围,分别测试其中每个IP地址所对应主机的可达性,并返回耗时、生存时间等参数,并统计成功发送和回送的Ping报文。
2.1初始化Windows Sockets网络环境;
2.2解析命令行参数,构造目的端socket地址;
2.3定义IP、ICMP报文;
2.4接收ICMP差错报文并进行解析。
3.程序实现主要用到Java网络包中的类Ine悉原始socket相关知识;
2.熟悉Ping的实现原理和ICMP协议及报文格式;
3.Windows Sockets网络环境的初始化,解析命令行;
4.创建原始套接字;
5.构造IP、ICMP数据报;
6.接收ICMP差错报文并进行解析处理;
7.课程设计任务说明书。
设计工作计划与进度安排
1.知识准备,整体思路设计2小时
2.开发环境与程序调试环境4小时
3. Windows Sockets网络环境的初始化,

ping程序的设计与实现

ping程序的设计与实现

计算机网络课程设计任务书计算机网络课程设计说明书学院名称: 计算机与信息工程班级名称:学生姓名:学号:题目:基于原始套间字实现简单的ping程序指导教师姓名:起止日期:一、选题背景(标题:四号仿宋加粗,顶格,行间距:24磅,上下间距:段前0。

5行,段后0。

5行)(内容:用小四号仿宋,首行空两格)通过设计Ping程序,理解Ping程序的实现原理,ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接.ping 使用的是ICMP协议,它发送ICMP回送请求消息给目的主机。

ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。

如果源主机在一定时间内收到应答,则认为主机可达。

ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。

因此,保证数据送达的工作应该由其他的模块来完成。

其中一个重要的模块就是ICMP(网络控制报文)协议。

二、方案设计(或概要设计)Ping程序可分为四个模块,分别是:初始化(图1-1)、功能控制(图1-2、图1-3、图1-4、)、ping (图1-5)、main测试(图1-6)。

1。

初始化:2。

功能控制:图1-2图1—3图1-4 3.ping:图1-5 4。

main()函数:图1—6三、详细设计要实现ping程序,需要实现以下步骤:1.初始化//定义IP首部格式typedef struct _IPHeader{u_char VIHL;//版本和首部长度u_char ToS;//服务类型u_short TotalLen;//总长度u_short ID;//标识号u_short Frag_Flags; //片偏移量u_char TTL; //生存时间u_char Protocol; //协议u_short Checksum;//首部校验和struct in_addr SrcIP;//源IP地址struct in_addr DestIP; //目的地址}IPHDR,*PIPHDR;//定义ICMP首部格式typedef struct _ICMPHeader{u_char Type;//类型u_char Code;//代码u_short Checksum; //首部校验和u_short ID; //标识u_short Seq;//序列号char Data;//数据}ICMPHDR,*PICMPHDR;//定义ICMP回应请求typedef struct _ECHOREQUEST{ICMPHDR icmpHdr;DWORD dwTime;char cData[REQ_DATASIZE];}ECHOREQUEST, *PECHOREQUEST;//定义ICMP回应答复typedef struct _ECHOREPLY{IPHDR ipHdr;ECHOREQUEST echoRequest;char cFiller[256];}ECHOREPLY, *PECHOREPLY;2.功能//计算校验和函数u_short checksum(u_short *buffer, int len) //发送回应请求函数int SendEchoRequest(SOCKET s, struct sockaddr_in *lpstToAddr)//接收应答回复并进行解析函数DWORD RecvEchoReply(SOCKET s, LPSOCKADDR_IN lpsaFrom,u_char *pTTL)3。

ping程序的设计实现分析范文教案资料

ping程序的设计实现分析范文教案资料

p i n g程序的设计实现分析范文滁州学院课程设计报告课程名称:计算机网络课程设计设计题目: ping程序的设计与实现系别:计算机与信息工程学院专业:计算科学与技术组别:第五小组起止日期: 2011年12月1日~2011年12月8日指导教师:计算机科学与技术系二○一一年制课程设计任务书一.Ping 程序运行原理在网络层,除了IP协议之外,还有一些控制协议,如ICMP, ARP, DHCP 等。

1.ping的基础知识原始套接字原始套接字是允许访问底层传输协议的一种套接字类型。

使用原始套接字操作IP数据报,可以进行路由跟踪, Ping等。

另外,使用原始套接字需要知道许多下层协议结构的知识,所以下面讨论ICMP,IP, UDP, TCP格式。

原始套接字有两种类型,第一种类型是在IP头种使用预定义的协议,如ICMP;第二种类型是在IP头种使用自定义的协议。

下面使用创建原始套接字的方法。

创建套接字的函数是socket()或者WSASocket(),只不过要将套接字类型指定为SOCK_RAW,代码如下:SOCKET sraw = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);创建原始套接字时socket函数的第三个参数protocol值将成为IP头中得协议域的值。

IPPROTO_ICMP指定要使用ICMP。

原始套解释提供管理下层传输的能力。

他们可能会被恶意利用,因此,仅Administrator组的成员能够创建SOCK_RAW类型的套接字。

任何人在Windows NT下都可以创建原始套接字,但是没有Administrator权限的人不能用它来做任何事情,因为bind函数将会失败,出错码WSAEACCES..在上面的套接字创建代码种,我们使用ICMP,也可以使用IIGMP, UDP, IP 或者原始IP,对应的宏定义分别是IPPROTO_IGMP, IPROTO_UDP, IPPROTO_IP 或者IPPROTO_RAW。

Ping程序设计代码及报告

Ping程序设计代码及报告

实验报告
课程计算机网络课程设计实验名称Ping程序的设计与实现专业班级08级信管(2)班
姓名
学号**********
实验日期2011年11月8日
System.gc();
end=System.currentTimeMillis();
}
public long duration()//计算响应时间的方法
{
return(end-start);
}
public void reset()//重置开始和结束时间
{
start=0; end=0;
}
}
四. 视图如下:
五.实验总结
通过这次实验, 我掌握了Java网络编程中对应的相关基础知识, 知道了ICMP协议以及跟踪运行Java网络包了解网络编程实现的细节问题, 并了解了Ping命令的功能。

我认识了ping 作为一种通信命令, 是IP协议的一部分, 利用他可以检查网络是否能够连通, 它也可以帮助我们分析网络故障。

通过这次实验,我掌握了Java网络编程中对应的相关基础知识,知道了ICMP 协议以及跟踪运行Java网络包了解网络编程实现的细节问题,并了解了Ping命令的功能。

我认识了ping作为一种通信命令,是IP协议的一部分,利用他可以检查网络是否能够连通,它也可以帮助我们分析网络故障。

ping的实现课程设计

ping的实现课程设计

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命令结果;- 第四课时:总结与拓展,讨论网络故障排查的其他方法,强化网络安全意识。

教材关联:教学内容与课本第三章“网络诊断与故障排除”相关,结合课本案例,使学生更好地掌握网络诊断技巧。

PING程序原理及实现

PING程序原理及实现

PING程序原理及实现
一、原理:
Ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者。

Ping的时候发送的ICMP报文类型为8,系统回复的报文类型为0,报文中包含的数据不变。

在发送的时候,我们可以将现在的系统时间作为ICMP的报文数据发出。

接收到回复报文后,可以读取ICMP 报文的数据得到发送的时间,与现在的时间对比可以得到系统的响应时间。

二、程序具体实现:
1)根据IP报文头结构和ICMP报文头结构定义相应的数据结构,然后用定义的数据结构声明要发送
的数据Send和接受数据Recive,并初始化发送数据Send。

将发送的数据Send的ICMP的类型设置为8。

2)声明一个sockaddr_in类型的变量,将其地址设置为目的地的IP地址。

并声明一个
SOCKET类型的成员变量,用来接收和发送ICMP数据。

3)在窗口初始化函数中设置一个时钟,在该时钟的响应函数中发送和接收数据包,并刷
新显示窗口。

4)在发送函数中调用sendto函数发送数据,然后调用select函数监听该SOCKET。

如果在
指定时间内没有监听到数据,则在窗口显示超时;如果有数据,则调用接收函数,分析接收的数据,从中提取发送时间并与现在的时间做对比,得到相应时间。

题目8:Ping程序的实现报告

题目8:Ping程序的实现报告

计算机网络课程设计报告题目:Ping程序的实现姓名:学号:班级:指导老师:湖南科技大学计算机科学与工程学院二零一四年六月目录1、课程设计任务描述 (1)2、设计原理及相关知识 (1)2.1设计原理 (1)2.2相关知识 (2)3、需求分析 (2)3.1功能需求 (2)3.2性能需求 (3)3.3界面需求 (3)4系统设计及实现 (3)4.1系统设计 (3)4.2系统实现 (4)5、设计总结 (13)5.1 完成的工作及评价 (14)5.2 遇到的问题及解决过程 (14)5.3 心得体会及建议 (14)6、使用说明 (15)参考文献 (15)1、课程设计任务描述另写一个程序,取代windows下的Ping程序命令,可以Ping指定主机、一批主机,并显示输出结果。

2、设计原理及相关知识2.1设计原理ping命令的工作原理[1] 是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,通过返回的信息来判断网络的连接状况。

要实现直接对IP和ICMP包进行操作,设计采用RAW 模式的SOCKET编程,实现网络的连通性测试,探测主机到主机之间是否可以通信,如果不能ping到某台主机,表明不能和这台主机建立连接。

Ping程序是面向向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。

2.2相关知识了解ping命令实现原理[2] ,就要了解ping命令所使用到的TCP/IP协议。

PING利用ICMP协议包来测试另一个主机是否可达。

原理是用类型码为0的ICMP 发送请求,收到请求主机则用类型码为8 的ICMP回应。

Ping程序来计算时间间隔,并计算有多少个包被送达。

用户就可以判断网络的大致情况。

ICMP协议是IP层的一个协议,但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP 协议来发送。

ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开始
定义及初始化各个全局变量
否 输出调用失败
判断 WSAStartup 函数是 否调用成功
是 创建套接字以及设置 socket 接收 超时,发送超时选项;
输入 PING 的 IP 地址
解析输入内容,设置 PING 参数
创建及填充 ICMP 数据报文
判断是否已发送 四次
是 Break;
否 发送,接收以及解析数据包
time=%d
icmp_seq
= %d\n",inet_ntoa(from->sin_addr),
icmpcount++;
结束 图 2.3 数据报解析模块
5
五、课程设计小结
1.运行操作结果:在 vc 里运行之后界面:
2.输入本机 ip 地址:
3.输入网上 ip 看结果: 4. 但是当网络连不通时,就会出现下图结果
四、课程设计过程
1.Ping 主模块 Ping()函数是本程序的核心部分,它基本是调用其他模块的函数来实现最终
功能,其主要布骤包括:定义及初始化各个全局变量、打开 socket 动态库、设置 接收和发送超时值、域名地址解析、分配内存、创建及初始化 ICMP 报文、发送 ICMP 请求报文、接收 ICMP 应答报文以及解读应答报文和输出 Ping 结果,最
//校验和
7
USHORT i_id;
//惟一的标识符
USHORT i_seq;
//序列号
ULONG timestamp;
//时间戳
} IcmpHeader;
#define DEF_PACKET_SIZE 32
//默认数据报大小
#define MAX_PACKET
1024
// 最大的 ICMP 数据报大小
#include <stdio.h>//标准输入输出函数
#include <stdlib.h>//实用程序库函数
#include <string.h>
typedef struct iphdr
{
unsigned int h_len:4;
// 头长度
unsigned int version:4;
// IP 版本
输出不是我们所要;
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
2
后释放占用的资源其流程如下页图 2.1 所示。 注释:
(1) 该模块并非只有处理还包括判断及输出判断结果的含义; (2) 程序没运行一次就只能输出四行结果(前提是输入的地址有效),欲
再次 PING 其他地址必须要重新启动程序。 (3) 输入时不能输入目标主机名,不然 ping 结果为 TIMEOUT;
计算机网络工程课程设计报告
题 目: 学生姓名: 学 号: 专业班级: 同组姓名: 指导教师:
设计时间:
Ping 程序的实现 计科专业 10102 班 2013 年下学期第 16 周
指导老师意见:
评定成绩:
签名: 日期: 年 月 日
目录
一、课程设计的目的和意义...................................................... 2 二、课程设计的内容和要求...................................................... 2 1.内容:...................................................................................... 2 2.要求:...................................................................................... 2 三、课程设计的相关技术.......................................................... 2 四、课程设计过程...................................................................... 2 1.Ping 主模块............................................................................. 2 2.功能控制模块.......................................................................... 4 3.数据报解析模块...................................................................... 5 五、课程设计小结...................................................................... 6 六、参考文献.............................................................................. 7 七、附 录(程序清单)........................................................ 7 八、心得体会............................................................................ 11
三、课程设计的相关技术
由于 Ping 程序是面向用户的应用程序,该程序使用 ICMP 的封装机制,通过 IP 协议来工作。为了实现直接对 IP 和 ICMP 包进行操作,实验中使用 RAW 模式 的 socket 编程。首先定义 IP 数据报首部,在 IP 数据报的基础上定义 ICMP 数据 报首部,并初始化一些全局变量。接着自定义填充 ICMP 数据报字段函数 FillICMPData()、校验和函数 checksum()、解读 ICMP 报首部函数 DecodeICMPHeader()、释放资源函 Cleanup()。最后主函数通过调用这些函数来 实现 Ping 命令功能。IP 头与 ICMP 头的设置分别参照 RFC791 及 RFC792 的标准, 包含所有必要信息。主程序设置 main()函数,主函数用库函数实现套接字编 程用于数据包发送及接收,其中,数据包发送调用 sendto(),数据包接收调用 recvfrom( ),由于发送数据包时可能会遇到阻塞或者目标主机不通,造成超时, 因此需要在发送数据包后调用一个函数判断是否超时,此处调用库函数 setsockopt()来实现超时判断;其次,校验和函数采用移位方法进行计算。 套 接字所 需要的文 件有 头文件 Winsocket2.h、库文 件 WS2_32.LIB、动态 库 W32_32.DLL。创建套接字的时候参数的以及在创建套接字之前必须首先使用 WSAStartup 函数。
1
一、课程设计的目的和意义
利用 ICMP 数据包、C 语言实现 Ping 命令程序,能实现基本的 Ping 操作, 发送 ICMP 回显请求报文,用于测试—个主机到只一个主机之间的连通情况。通 过本程序的训练,使学生熟悉 ICMP 报文结构,使学生对 ICMP 有更深的理解,掌 握 Ping 程序的设计方法,掌握网络编程的方法和技巧,从而编写出功能更强大 的程序。
unsigned char service;
// 服务类型
unsigned short total_len;
// 包的总长度
unsigned short ident;
// 包标示身份
unsigned short frag_and_flags; // 标志
unsigned char ttl;
// 包生命周期
释放占用资源 清 除 ICMP 包 数 据 以及接受缓冲区
WSACleanup();
结束
结束
图 2.2 功能控制模块
注释: a.illICMPData 是由一系列的初始化的语句在流程图中不再画出; b.Cleanup()函数中的 WSACleanup(),HeapFree(),closesocket()都是一些库函数。 checksum()校验和函数是冗余校验的一种形式。 它是通过错误检测方法,对经 过空间(如通信)或者时间(如计算机存储)传送的数据的完整性进行检查的一种 简单方法。
6
六、参考文献
【1】Visual C++网络通信编程实用案例精选(第二版)曹衍龙 刘海英 编著; 【2】Windows 网络编程技术 (美);
七、附 录(程序清单)
#pragma comment(lib,"ws2_32.lib")
#include <winsock2.h>//创建套接字头文件
#include <ws2tcpip.h>
Checksum 开始
Cleanup 开始
定义初始化 cksum
(size > 1) 是
确定 cksum 及 size 大小
if (size) 否
cksum += *(UCHAR*) buffer;
计算校验 cksum,获得结果
if (m_hSocket != INVALID_SOCKE
关闭
套接
F

注释: a.判断是否为我们所要的数据报回应之前,还有一些判断回应多少内容的语
相关文档
最新文档