2024年4月16日发(作者:)
实验六 基于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
3
4
5
8
9
10
11
12
13
14
15
16
17
18
描述
回应应答(Ping应答,与类型8的Ping请求一起使用)
目的不可达
源消亡
重定向
回应请求(Ping请求,与类型8的Ping应答一起使用)
路由器公告(与类型10一起使用)
路由器请求(与类型9一起使用)
超时
参数问题
时标请求(与类型14一起使用)
时标应答(与类型13一起使用)
信息请求(与类型16一起使用)
信息应答(与类型15一起使用)
地址掩码请求(与类型18一起使用)
地址掩码应答(与类型17一起使用)
ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型


发布评论