- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络基础Ping程序的实现
计算机网络工程课程设计报告
题 目: Ping程序的实现
学生姓名:
学 号:
专业班级: 计科专业10102班
同组姓名:
指导教师:
设计时间: 2013年下学期第16周
指导老师意见:
评定成绩: 签名:
日期: 年 月 日
目录
一、课程设计的目的和意义 2
二、课程设计的内容和要求 2
1.内容: 2
2.要求: 2
三、课程设计的相关技术 2
四、课程设计过程 2
1.Ping主模块 2
2.功能控制模块 4
3.数据报解析模块 5
五、课程设计小结 6
六、参考文献 7
七、附 录(程序清单) 7
八、心得体会 11
一、课程设计的目的和意义
利用ICMP数据包、C语言实现Ping命令程序,能实现基本的Ping操作,发送ICMP回显请求报文,用于测试—个主机到只一个主机之间的连通情况。通过本程序的训练,使学生熟悉ICMP报文结构,使学生对ICMP有更深的理解,掌握Ping程序的设计方法,掌握网络编程的方法和技巧,从而编写出功能更强大的程序。
二、课程设计的内容和要求
1.内容:
用C语言实现Ping命令程序,能实现基本的Ping操作,发送ICMP回显请求报文,用于测试—个主机到只一个主机之间的连通情况。
2.要求:
独立完成程序的设计、编码和调试。
系统利用C语言实现,程序调试环境为Turbo C或VC;
按照课程设计规范书写课程设计报告。
采用VC环境进行调试运行。
三、课程设计的相关技术
由于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.Ping主模块
Ping()函数是本程序的核心部分,它基本是调用其他模块的函数来实现最终功能,其主要布骤包括:定义及初始化各个全局变量、打开socket动态库、设置接收和发送超时值、域名地址解析、分配内存、创建及初始化ICMP报文、发送ICMP请求报文、接收ICMP 应答报文以及解读应答报文和输出Ping结果,最后释放占用的资源其流程如下页图2.1所示。
注释:
该模块并非只有处理还包括判断及输出判断结果的含义;
程序没运行一次就只能输出四行结果(前提是输入的地址有效),欲再次PING其他地址必须要重新启动程序。
输入时不能输入目标主机名,不然ping结果为TIMEOUT;
2.功能控制模块
功能控制模块主要是为其他模块提供可调用的函数,该模块主要包括参数获取功能、计算ICMP数据报文检验和、清除SOCKET,ICMP包数据以及接受缓冲区、占用资源释放功能和显示用尸帮助功能。该模块一共包含三个函数来实现。,流程如图2.2所示。
图2.2 功能控制模块
注释:
a.illICMPData是由一系列的初始化的语句在流程图中不再画出;
b.Cleanup()函数中的WSACleanup(),HeapFree(),closesocket()都是一些库函数。checksum()校验和函数是冗余校验的一种形式。 它是通过错误检测方法,对经过空间(如通信)或者时间(如计算机存储)传送的数据的完整性进行检查的一种简单方法。
3.数据报解析模块
数据报解析模块提供了解读IP选项和解读IcMP报文的功能。从本机收到目的主机返回的1cMP回显应答
您可能关注的文档
- 装修毕业论文浅谈建筑装饰地面工程.doc
- 装载机 轮式装载机的典型.docx
- 装配件的工艺设计及数控编程.doc
- 装配式钢筋混凝土简支T梁桥计算(GM法).doc
- 装饰经验汇总.doc
- 西南政法大学本科商法学课件:保险法 培训课件.ppt
- 西安三桥华宇凤凰城项目营销战略提案62PPT.ppt
- 西安交通大学MBA市场营销PPT09.ppt
- 西安亚建高尔夫别墅整合推广策略执行提案80PPT.ppt
- 西安交通大学MBA市场营销PPT05.ppt
- 招生宣传与社交媒体策略.pptx
- 2025-2030橙汁产业规划专项研究报告.docx
- 2025-2030散装盐行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
- 2025-2030板鞋行业发展分析及投资价值研究咨询报告.docx
- 2025-2030数码文化设备产业市场深度调研及发展趋势与投资研究报告.docx
- 2025-2030气体燃料内燃机行业发展分析及投资价值研究咨询报告.docx
- 2025-2030氯化锌干电池行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
- 2025-2030核磁共振设备市场前景分析及投资策略与风险管理研究报告.docx
- 2025-2030棉花行业风险投资运行分析及运作模式与投融资研究报告.docx
- 2025-2030殷瓦钢行业市场深度调研及前景趋势与投资研究报告.docx
文档评论(0)