Ping程序设计实验指导书.pdf
文本预览下载声明
网络编程-PING 程序设计实验指导书
一.实验目的
(1)熟悉原始套接字编程。
(2)了解网络的结构。
(3)了解网络传输底层协议。
二.实验要求
PING 程序是用于测试网络连通性的程序。要求在WINDOWS 环境下实现基本
的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 协议包来侦测另一个主机是否可达。原理是用类型码为8 的
ICMP 发请求,受到请求的主机则用类型码为0 的ICMP 回应。ping 程序来计算
间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。
2、RAW 模式的SOCKET 编程
PING 程序是面向用户的应用程序,该程序使用ICMP 的封装机制,通过IP 协
议来工作。为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET
编程。
熟悉SOCKET 的编程,包括基本的系统调用如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、最后提交源程序,撰写实验报告
参考资料:
【1】 Winsock Programmers FAQ Examples: Ping: Raw Sockets Method ,
/wskfaq/examples/rawping.html
【2】 透析ICMP 协议: 协议原理,/f?kz
【3】 ping 原理与ICMP 协议,
/_ioini/blog/item/a64de1a75d34eb91d1435811.html
附录:SOCKET 编程
1、SOCKET 规范概述
Windows Sockets 规范以U.C. Berkeley 大学BSD UNIX 中流行的Socket 接
口为范例定义了一套Micorosoft Windows 下网络编程接口。它不仅包含了人们
所熟悉的Berkeley Socket 风格的库函数;也包含了一组针对Windows 的扩展库
函数,以使程序员能充分地利用Windows 消息驱动机制进行编程。
Windows Sockets 规范本意在于提供给应用程序开发者一套简单的API,并
让各家网络软件供应商共同遵守。此外,在一个特定版本 Windows 的基础上,
Windows Sockets 也定义了一个二进制接口(ABI),以此来保证应用 Windows
So
显示全部