1、ping程序的设计与实现计算机网络课程设计任务书 学 院计算机与信息工程专 业网络工程课程名称题 目基于原始套接字实现简单的ping程序完成期限自2014年8月25日至2014年8月30日共1周内容及任务一、项目的目的通过设计Ping程序,理解Ping程序的实现原理,并初步讲解了c语言网络编程技术。二、项目任务的主要内容和要求 实现类似操作系统自带ping程序的基本功能。 支持-t选项的功能,即如果用户不中止则可以不断的ping下去。 能显示IP报头的部分字段,如TTL等。三、项目设计(研究)思路PING的工作原理下,PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。对网络连通
2、性的测试,探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。四、具体成果形式和要求可以实现一个简单的ping程序,并且能显示TTL、支持-t功能。进度安排起止日期工作内容8.25-8.26查阅资料了解ping程序8.26-8.27查阅资料并编写ping程序8.27-8.30完善程序并完成实验报告主要参考资料1. Visual C+网络通信编程实用案例精选(第二版)曹衍龙 编著2. Visual C+网络程序设计实例详解 张越 编著指导教师意见(签字): 年月日系(教研室)主任意见(签字): 年月日计算机网络课程设计说明书学院名称: 计算机与信息工程 班级名称
3、: 学生姓名: 学 号: 题 目:基于原始套间字实现简单的ping程序 指导教师姓 名: 起止日期: 一、选题背景(标题:四号仿宋加粗,顶格,行间距:24磅,上下间距:段前0.5行,段后0.5行)(内容:用小四号仿宋,首行空两格)通过设计Ping程序,理解Ping程序的实现原理,ping程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议,它发送ICMP回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。ICMP协议通过IP协议发送的,IP
4、协议是一种无连接的,不可靠的数据包协议。因此,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。二、方案设计(或概要设计)Ping程序可分为四个模块,分别是:初始化 (图1-1)、功能控制 (图1-2、图1-3、图1-4、)、ping (图1-5)、main测试 (图1-6).1.初始化: 2.功能控制:图1-2图1-3图1-43.ping:图1-54.main()函数:图1-6三、详细设计要实现ping程序,需要实现以下步骤:1.初始化/定义IP首部格式typedef struct _IPHeader u_char VIHL; /版本和首部长度 u
5、_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 C
6、hecksum; /首部校验和 u_short ID; /标识 u_short Seq; /序列号 char Data; /数据ICMPHDR, *PICMPHDR; /定义ICMP回应请求typedef struct _ECHOREQUEST ICMPHDR icmpHdr; DWORD dwTime; char cDataREQ_DATASIZE;ECHOREQUEST, *PECHOREQUEST;/定义ICMP回应答复typedef struct _ECHOREPLY IPHDR ipHdr; ECHOREQUEST echoRequest; char cFiller256;ECHOR
7、EPLY, *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程序/创建原始套接字,ICMP类型实现ping rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_I
8、CMP);/第二个注释函数socket if (rawSocket = SOCKET_ERROR) printf(socket() error:%dn, WSAGetLastError(); return; 四、结果分析(或测试)1.输入ping主机的命令2.输入ping-t命令 3.输入外部网主机命令五、总结刚刚拿到课题时,我对于ping几乎没什么了解。在课程设计过程中遇到过很多一开始看似不可克服的难题。回顾这次课程设计,我感慨颇多。在这段时间内,需要经常从电脑上查询资料,但是这不仅可以帮助我巩固曾经学习过的知识,也让我增长了许多课本上学不到的的知识。在这个过程中,我独立思考的能力得到了很大
9、地提高,更重要的是我也学到了更多学习的方法,让我受益匪浅。同时我也明白查阅资料的重要性,在信息多元化的今天,我们不可能掌握所有的知识,但是面对的复杂的情况又要求我们掌握一些自己专业知识之外的内容,这时候就需要掌握正确的相关信息,学会求助书籍或者网络等是必不可少的。查阅资料也使我们做的一切有理可依,而不是凭空想象。通过这次课程设计我发现了自身存在的许多不足之处,自己感觉理论上已经掌握的东西,却不真正了解它的内涵和工作原理,需要经过一番努力才能解决存在的困惑。这也很大地激发了我以后努力学习的兴趣。通过这次设计,我懂得了学习的重要性,学会了坚持、耐心和努力,为自己以后的学习和工作做最好的铺垫。参考文献1. Visual C+网络通信编程实用案例精选(第二版)曹衍龙 编著;2. Visual C+网络程序设计实例详解 张越 编著学生签名: 填表日期:年月日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1