欢迎来到天天文库
浏览记录
ID:37053982
大小:218.50 KB
页数:15页
时间:2019-05-15
《网络协议编程报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、网络协议编程课程设计指导教师:张有为学生班级:网络10802学生姓名:孙寒学号:200805792班内序号:21课设日期:2011/7/5~2011/7/1215第页(共15页)目录一、课程设计目的与任务3二、设计任务及要求31、RAW模式的SOCKET编程32、具体内容3三、需求分析4四、总体设计(流程图)5五、详细设计与实现6六、实现结果及结果分析11七、使用说明14八、课设小结1415第页(共15页)一、课程设计目的与任务网络协议编程课程设计是学习《TCP/IP协议分析》课程后的一个重要实践环节,是对学生进行的一次较为全面的网络协议分析应用程序设计训练。其基
2、本目的是:(1)培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中基本问题的能力,从而使基础理论知识得到巩固和加深。(2)训练学生运用软件工程的原理、方法和工具完整地设计并开发一个网络应用系统,历练软件工程常规设计过程和基本方法。为将来的实际应用开发打好基础。(3)深层次掌握TCP/IP协议的基本原理与数据格式。(4)熟悉并掌握网络通信协议Socket编程的方法。二、设计任务及要求1、RAW模式的SOCKET编程PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作为了实现直接对IP和ICM
3、P包进行操作,实验中使用RAW模式的SOCKET编程。熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等。2、具体内容1)定义数据结构需要定义好IP数据报、ICMP包等相关的数据结构2)程序实现在WINDOWS环境下实现PING程序3)程序要求在窗体文本框中输入:PINGΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ其中ΧΧΧ为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次响应。返回信息显示在窗体上:REPLYFROMΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ或REQUESTTimeOut(无法PING通的情况)(3)实验步骤
4、和注意事项1、熟悉IP以及ICMP协议的工作机制2、熟悉RAW模式的SOCKET编程3、编写PING的实现程序4、编译环境中需要包括SOCKET库WS2_32.lib5、在模拟实现环境下调试并运行自己编写的PING程序15第页(共15页)三、需求分析在带界面的PING程序中最基本的需要是用以输入IP的文本框,显示reply的文本框和几个基本按钮。这个要事先知道在PINGΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ后的reply要返回哪些内容,上面已经要求返回4次响应,每次相应的reply就以我们平时在doc下ping的结果为模板REPLYFROMΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ:
5、Bytes=XXTTL=XXXTime=XXms.虽然要求ΧΧΧ为目的主机的IP地址,不要求支持域名但域名的转换还是蛮简单的固定代码就加上去了。也添加了两个清空的按钮以便于用户使用。15第页(共15页)四、总体设计(流程图)ApingB结束将ICMP封装到IP数据报中并发送给B计算校验和、获取ip封装ICMP接受B的回复判断接受字节数是否为0解析收到的报文核实收到的ID号和发送的是否一致丢弃返回目地IP、字节数、TTL值、时间戳是否不一致一致15第页(共15页)五、详细设计与实现1.用vc新建一个MFC对话框工程,从控件中拖入静态文本右击属性修改id和标题,类似的
6、再拖入其他的编辑框和按钮,在显示reply的编辑框的属性中要勾选只读,这样既可以无法修改reply又可以节省复制粘贴的代码。在界面大致完成的时候界面如下:图一:完成界面结构因为默认的是白色所以在Initlnstance()中添加SetDialogBkColor(RGB(128,184,223),RGB(0,0,150));使得界面的背景色变为蓝色。图二:改变背景15第页(共15页)BOOLCPingApp::InitInstance(){SetDialogBkColor(RGB(128,184,223),RGB(0,0,150));觉得通用的.ico图片不是我想要
7、的便换了一张。在此时运行得到的界面效果是:图三:没有任何的功能的蓝色界面效果2.接下来就是在.cpp文件中添加相应的代码以实现老师和自己的要求。首先是定义ip和icmp的首部,这些代码是固定的所以直接复制粘贴了。typedefstructip_hdr//定义IP首部{unsignedcharh_verlen;//4位首部长度,4位IP版本号unsignedchartos;//8位服务类型TOSunsignedshorttotal_len;//16位总长度(字节)unsignedshortident;//16位标识unsignedshortfrag_and_flag
8、s;//3
此文档下载收益归作者所有