日期:2011-05-07 浏览次数:20470 次
ICMP就是所谓的Internet控制报文协议(Internet Control Message Protocol),在网络中,一般用它来传递差错报文以及其他应注意的信息。ICMP一般被认为是和IP协议同一层的协议,IMCP报文通常被IP层或者更高层的协议(如:TCP或者UDP)使用,ICMP对于互联网以及其他基于IP协议的网络的正常运行起着非常重要的作用。有许多重要的网络程序都是基于ICMP协议上的,最为著名如Ping和Tracert等。本文就来介绍用Visual C#实现基于ICMP协议重要的网络命令Ping的方法。
Ping命令是可以说是一个"跨平台"程序,这是因为Ping命令不仅存在Windows系统上,在Unix系统上也有Ping命令,其实对其他只要是支持网络的操作系统,一般也都存在该命令。Ping命令的主要作用是检测网络上主机的状态。要是在几年前,我们还可以下如此断言,如果不能Ping通某台主机,那么也就无法Telnet或者FTP到这台主机,但随着互联网的安全意识的增加,出现了访问控制清单的路由器和防火墙,由于ICMP报文是在IP数据包中被传输的,而到达一台主机不仅取决于IP层是否到达,还取决于使用何种协议和端口。譬如金山公司的金山网镖就可以禁止其他机器Ping通这台主机。所以在现在的情况下,即时Ping不通某台机器,但也有可能FTP登陆到这台机器,或者通过HTTP来浏览这台机器上的Web页面。
一.Ping命令简介
首先进入Windows系统中的命令提示符,输入"Ping/?"后,单击回车键,您就可以了解Ping命令的各种参数的使用方法。最为常见的使用方法是"Ping 远程计算机名称(或者远程计算机的IP地址)",如果在Ping命令的返回字符中有"Reply from",说明此主机在线,具体如图01:
图01:Ping通主机时的运行界面 |
图02:Ping不通主机时的运行界面 |
图03:IP数据包的组成结构图 |
图04:ICMP报文组成结构图 |
属性 | 说明 |
AddressFamily | 获取Socket的地址族。 |
Available | 获取已经从网络接收且可供读取的数据量。 |
Blocking | 获取或设置一个值,该值指示Socket是否处于阻塞模式。 |
Connected | 获取一个值,该值指示Socket是否已连接到远程资源。 |
Handle | 获取Socket的操作系统句柄。 |
LocalEndPoint | 获取本地终结点。 |
ProtocolType | 获取Socket的协议类型。 |
RemoteEndPoint | 获取远程终结点。 |
SocketType | 获取Socket的类型。 |
方法 | 说明 |
Accept | 创建新的Socket以处理传入的连接请求。 |
BeginAccept | 开始一个异步请求,以创建新的Socket来接受传入的连接请求。 |
BeginConnect | 开始对网络设备连接的异步请求。 |