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

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

ID:19459053

大小:289.00 KB

页数:17页

时间:2018-10-02

题目8:ping程序的实现报告_第1页
题目8:ping程序的实现报告_第2页
题目8:ping程序的实现报告_第3页
题目8:ping程序的实现报告_第4页
题目8:ping程序的实现报告_第5页
资源描述:

《题目8:ping程序的实现报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机网络课程设计报告题目:Ping程序的实现姓名:学号:班级:指导老师:湖南科技大学计算机科学与工程学院二零一四年六月目录1、课程设计任务描述12、设计原理及相关知识12.1设计原理12.2相关知识23、需求分析23.1功能需求23.2性能需求33.3界面需求34系统设计及实现34.1系统设计34.2系统实现45、设计总结135.1完成的工作及评价135.2遇到的问题及解决过程135.3心得体会及建议146、使用说明14参考文献141、课程设计任务描述另写一个程序,取代windows下的Ping程序命令,可以Ping指定主机、一批主机,并显示

2、输出结果。2、设计原理及相关知识2.1设计原理ping命令的工作原理[1]是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,通过返回的信息来判断网络的连接状况。要实现直接对IP和ICMP包进行操作,设计采用RAW模式的SOCKET编程,实现网络的连通性测试,探测主机到主机之间是否可以通信,如果不能ping到某台主机,表明不能和这台主机建立连接。Ping程序是面向向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。2.2相关知识了解ping命令实现原理[2],就要了解ping命

3、令所使用到的TCP/IP协议。PING利用ICMP协议包来测试另一个主机是否可达。原理是用类型码为0的ICMP发送请求,收到请求主机则用类型码为8的ICMP回应。Ping程序来计算时间间隔,并计算有多少个包被送达。用户就可以判断网络的大致情况。ICMP协议是IP层的一个协议,但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。TCP/IP应用于传输层之上,TCP/IP应

4、用程序需要调用传输层的接口才能实现应用程序之间的通讯。15应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。套接字[3]接口是对网络中不同主机之间应用进程双向通信端点的抽象。提供了应用进程利用协议栈交换数据的机制。两个应用进程只要分别连接自己的套接字,就能方便通过计算机网络进行通信,不用去管网络的复杂结构,

5、也不用管数据传送是复杂过程。3、需求分析3.1功能需求实现的ping命令,能用于测试一个主机到另一个主机间的联通情况。程序能实现基本的ping操作,发送ICMP回显请求报文(可以更改发送的报文数目),接收显应答报文。显示发送数据包个数;接收数据包个数;丢失包个数,最大时间,最小时间以及平均时间。3.2性能需求能真实的的反映两台主机的联通情况3.3界面需求界面需要显示明确,当联通失败时能让人一眼就看出问题所在。4系统设计及实现4.1系统设计创建通信的套接字-->将地址、端口信息与套接字绑定-->构建IP包头与ICMP包头-->发送构建的数据包--

6、>接收对方主机的回应-->给出程序反馈信息系统执行的流程图如下图4.1所示:15是开始输入ping的主机IP判断WSAStartup函数是否初始化成功创建套接字,设置套接字属性构建IP包头与ICMP包头循环发送4次数据包接收并解析数据包显示Ping的结果关闭清除结束否初始化协议图4.1154.2系统实现(1)模块或函数功能描述voidping(intargc,char*argv[]):ping()函数是本程序的核心部分,它通过调用其他模块的函数来实现,其主要步骤包括初始化winsock,初始化协议,创建套接字,名字解析。intpack(intp

7、ack_no):构建数据报voidsend_packet(void):发送数据报voidrecv_packet(void):接收数据报intunpack(unsignedchar*buf,intlen):剥去ICMP报头加显示unsignedshortcal_checksum(unsignedshort*buffer,intsize);//求校验和函数voidfree():用于释放占用的资源,包括关闭套接字和释放winsock(2)关键的代码IP报头字段数据结构structIP{unsignedcharip_hl:4;//首部长度unsigne

8、dcharip_ver:4;//IP版本号unsignedcharip_tos;//服务类型unsignedshortip_len;//总长度unsi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。