计算机网络课程设计_培训.docVIP

  • 7
  • 0
  • 约2.08万字
  • 约 34页
  • 2018-10-30 发布于浙江
  • 举报
计算机网络课程设计_培训

PING程序设计 实验目的 PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。 课程设计中选取PING程序的设计,其目的是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的认识。 实验内容和要求 1、RAW模式的SOCKET编程 PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。 熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等; 2、具体内容 定义数据结构 需要定义好IP数据报、ICMP包等相关的数据结构; 程序实现 在WINDOWS环境下实现PING程序; 程序要求 在命令提示符下输入: PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ 其中ΧΧΧ为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次响应。 返回信息的格式: REPLY FROM ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ 或 REQUEST TimeOut (无法PING通的情况)。 实验主要仪器设备和材料 联网计算机,VC++ 6.0, Window 7操作系统平台 实验方法、步骤及结构测试 1、本程序主要是通过main()函数调用自定义函数以及其本身的一些功能,例如:打开socket动态库、设置接收和发送超时值、域名地址解析、分配内存、创建及初始化ICMP报文、发送ICMP请求报文、接收ICMP 应答报文以及解读应答报文和输出Ping结果。程序流程图如下: 开始 开始 定义及初始化各个全局变量 定义及初始化各个全局变量 判断WSAStartup函数是否调用成功 判断WSAStartup函数是否调用成功 否 输出调用失败 是 输出调用失败 创建套接字以及设置socket接收超时,发送超时选项 创建套接字以及设置socket接收超时,发送超时选项 输入PING的IP地址 输入PING的IP地址 解析输入内容,设置PING参数 解析输入内容,设置PING参数 创建及填充ICMP数据报文 创建及填充ICMP数据报文 判断输入的ip地址没有-t并且已发四次 判断输入的ip地址没有-t并且已发四次 是 B Break 否 清除残余 清除残余 否 发送,接收以及解析数据包结束 发送,接收以及解析数据包 结束 输出PIING结果 输出PIING结果 2、校验和函数、释放资源函数流程图如下: cleanup开始Checksu开始 cleanup开始 Checksu开始 if (m_hSocket != INVALID_SOCKE定义初始化cksum if (m_hSocket != INVALID_SOCKE 定义初始化cksum (size 1) 是 (size 1) 关闭套接字 否 是 否 关闭套接字 定cksum及size大小 定cksum及size大小 释放占用资源 释放占用资源 清除ICMP包数据以及接受缓冲区 if (size) if (size) WSACleanup(); 是 WSACleanup(); cksum+=*(UCHAR*)buffer; 否 cksum+=*(UCHAR*)buffer; 结束 结束 计算校验cksum,获得结果 计算校验cksum,获得结果 结束 结束 3、ICMP报首部函数流程图如下: DecodeICMPHeader DecodeICMPHeader 定义相关变量以及初始化 定义相关变量以及初始化 tick = GetTickCount() tick = GetTickCount() 我们所要

文档评论(0)

1亿VIP精品文档

相关文档