预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

网络编程-PING程序设计实验指导书 一.实验目的 (1)熟悉原始套接字编程。 (2)了解网络的结构。 (3)了解网络传输底层协议。 二.实验要求 PING程序是用于测试网络连通性的程序。要求在WINDOWS环境下实现基本的PING程序功能. 在命令提示符下输入: PING***.***.***.*** 其中***为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次响应。 返回信息的格式: REPLYFROM***.***.***.*** 或 REQUESTTimeOut(无法PING通的情况) 三.实验原理 1、PING的工作原理 ping程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议,它发送ICMP回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。因此,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在IP层以上的协议是可能做到安全的原因。ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。而前16bit就组成了ICMP所要传递的信息。 PING利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。 2、RAW模式的SOCKET编程 PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。 熟悉SOCKET的编程,包括基本的系统HYPERLINK"http://blog.mop.com/diary/main/diarySearchMore.jsp?v=调用"\t"_blank"调用如SOCKET、BIND等. 3、具体内容 (1)定义数据结构 需要定义好IP数据报、ICMP包等相关的数据结构 (2)程序实现 在WINDOWS环境下实现PING程序 四.实验步骤和注意事项 1、熟悉IP以及ICMP协议的工作机制 2、熟悉RAW模式的SOCKET编程 3、编写PING的实现程序 4、编译环境中需要包括SOCKET库WS2_32.lib 5、在模拟实现环境下调试并运行自己编写的PING程序 6、最后提交源程序,撰写实验报告 参考资料: WinsockProgrammer'sFAQExamples:Ping:RawSocketsMethod,HYPERLINK"http://tangentsoft.net/wskfaq/examples/rawping.html"http://tangentsoft.net/wskfaq/examples/rawping.html 透析ICMP协议:协议原理,HYPERLINK"http://tieba.baidu.com/f?kz=70599632"http://tieba.baidu.com/f?kz=70599632 ping原理与ICMP协议, http://hi.baidu.com/_ioini/blog/item/a64de1a75d34eb91d1435811.html 附录:SOCKET编程 SOCKET规范概述 WindowsSockets规范以U.C.Berkeley大学BSDUNIX中流行的Socket接口为范例定义了一套MicorosoftWindows下网络编程接口。它不仅包含了人们所熟悉的BerkeleySocket风格的库HYPERLINK"http://blog.mop.com/diary/main/diarySearchMore.jsp?v=函数"\t"_blank"函数;也包含了一组针对Windows的扩展库HYPERLINK"http://blog.mop.com/diary/main/diarySearchMore.jsp?v=函数"\t"_blank"函数,以使程序员能充分地利用Windows消息驱动机制进行编程。WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基