- 0
- 0
- 约5.76千字
- 约 11页
- 2019-09-13 发布于山西
- 举报
课程设计(综合实验)报告
( 2012 -- 2013 年度第 2 学期)
名 称: 网络综合实验
题 目:(1)Ping命令的设计与实现
(2)列车时刻表查询程序
院 系: 计算机
班 级: 网络工程1002
学 号: 201009030212
学生姓名: 马聪敏
指导教师: 李丽芬
设计周数: 2周
成 绩:
日期: 2013 年 6月4 日
课程设计的目的与要求
1.1.目的:
1.1.1任务:设计并实现一个Ping程序,以掌握UDP套接字的使用以及ICMP协议中ECHO报文的发送和接受方法
1.1.2目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。
1.1.3要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。
1.1.4学生要求人数:1人。
1.2.要求:
用标准的UDP套接字和ECHO报文实现一个简单的基于UDP的Ping程序,要求:
1.2.1发送方发送ECHO报文,远程主机对发送方返回响应;
1.2.2发送方能够确定他和被探测机器之间的往返时延。
二、设计正文
2.1总体设计
2.1.1
本系统共有 4 个模块,分别是初始化模块、功能控制模块、数据控制模块、数据报解读模块和ping测试模块,如图2.1所示。各模块功能描述如下。
Ping程序设计
Ping程序设计
初始化模块
数据报解读模块
功能控制模块
Ping
测试模块
图 2.1
(1) 初始化模块。改模块用于初始化各个全局变量,为全局变量赋初始值;初始化,加载库。
(2)功能控制模块。改模块是被其它模块调用,其功能包括获取参数、计算校验和填充数据报文、释放占用资源和显示用户帮助。
(3)数据报解读模块。改模块用于解读接收到的报文和选项。
(4)测试模块。改模块是本程序的核心模块,调用其他模块实现其功能,主要是实现的功能。
2.1.2系统流程图
系统执行的流程图2.1.2所示。程序首先用AppWizard从VC++中生成一个基于对话框的工程MyPing,界面如下图:
将Ping服务封装成一个类CPing。在Ping.h中,先定义ICMP报数据结构常量:
#define IP_RECORD_ROUTE 0x7
#define DEF_PACKET_SIZE 32
#define MAX_PACKET 1024
#define MAX_IP_HDR_SIZE 60
#define ICMP_ECHO 8
#define ICMP_ECHOREPLY 0
#define ICMP_MIN 8
程序流程图2.1
typedef struct _iphdr定义IP报文格式
typedef struct _icmphdr定义ICMP报文格式
typedef struct _ipoptionhdrIP头选项结构,当socket可选项设置成IP OPTIONS使用这个结构。用classCPing解析。
h-len:4 : 表示IP报头长度,首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4bit 字段,因此首部最长为60个字节,不包括任何选项的IP报头是20个字节。
Version:4: 表示IP的版本号,这里表示Ipv4.。
Top: 表示服务的类型,可以表示最小时延,最大吞吐量,最高可靠性和最小费用。
Total –len: 整个IP数据报的总长度。
Ident: 唯一的标识符,标识主机发送的每一份数据报。
Frag-flags: 分段标志,表示过长的数据报是否要分段。
Ttl: 生存期,表示数据报可以经过的最多路由器数。
Proto: 协议类型(TCP、UDP等)。
Checksum: 校验和。
sourceIP: 源IP地址。
destIP: 目的IP地址。
I_tye : ICMP 报文类型。
I_code : 该类型中的代码号,一种ICMP 报文的类型号和该类型中的代码号共同决定。、
I_cksum: 校验和。
I_seq:
原创力文档

文档评论(0)