- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]实验六 基于ICMP协议的ping程序设计实验
实验六 基于ICMP协议的ping程序设计实验
一、实验目的
分析ICMP协议报文,理解和掌握ICMP协议报文头各字段的含义和作用;
熟悉原始套接字编程;了解网络结构与网络传输底层协议。
二、实验时数:4小时
三、实验环境
连通的局域网络、若干PC机、Windows XP /2000等操作系统、Visual C等编程软件等。
四、实验要求
掌握ICMP协议报文格式和各字段含义;
在WINDOWS环境下设计与实现基于ICMP协议的PING程序,该程序可以用于测试网络连通性。具体要求如下:
在命令提示符下输入:
PING ***.***.***.***
其中***为目的主机的IP地址;不要求支持域名,对是否带有开关变量也不做要求,当不带开关变量时,要求返回4次响应。
返回信息的格式:
REPLY FROM ***.***.***.***
或
REQUEST TimeOut (无法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的编程,包括基本的系统调用如SOCKET、BIND等。
3、ICMP协议
网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。位于网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈。
ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议,它的报头长8字节,结构如下图所示:?
比特0 7 8 ???????15? 16 ??? ???????? ?比特31
类型(0或8) 代码(0) 检验和 标识符 序号 数据 ?
ICMP协议提供的诊断报文类型如下表所示:
类型 描述 0 回应应答(Ping应答,与类型8的Ping请求一起使用) 3 目的不可达 4 源消亡 5 重定向 8 回应请求(Ping请求,与类型8的Ping应答一起使用) 9 路由器公告(与类型10一起使用) 10 路由器请求(与类型9一起使用) 11 超时 12 参数问题 13 时标请求(与类型14一起使用) 14 时标应答(与类型13一起使用) 15 信息请求(与类型16一起使用) 16 信息应答(与类型15一起使用) 17 地址掩码请求(与类型18一起使用) 18 地址掩码应答(与类型17一起使用) ??
ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型可以归纳为以下5个大类:
诊断报文(类型8,代码0;类型0,代码0);
目的不可达报文(类型3,代码0-15);
重定向报文(类型5,代码0-4);
超时报文(类型11,代码0-1);
信息报文(类型12-18)。
六、实验步骤及注意点
熟悉IP以及ICMP协议的工作机制;
熟悉RAW模式的SOCKET编程;
编写PING的实现程序;
在模拟实现环境下调试并运行自己编写的PING程序;
编译环境中需要包括SOCKET库 WS2_32.lib。
七、实验报告要求
提交源程序,并撰写实验报告。
八、相关参考资料
Winsock Programmers
文档评论(0)