利用visualc#实现icmp网络协议

利用visualc#实现icmp网络协议

ID:35210898

大小:380.50 KB

页数:19页

时间:2019-03-21

利用visualc#实现icmp网络协议_第1页
利用visualc#实现icmp网络协议_第2页
利用visualc#实现icmp网络协议_第3页
利用visualc#实现icmp网络协议_第4页
利用visualc#实现icmp网络协议_第5页
资源描述:

《利用visualc#实现icmp网络协议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、利用VisualC#实现ICMP网络协议ICMP就是所谓的Internet控制报文协议(InternetControlMessageProtocol),在网络中,一般用它来传递差错报文以及其他应注意的信息。ICMP一般被认为是和IP协议同一层的协议,IMCP报文通常被IP层或者更高层的协议(如:TCP或者UDP)使用,ICMP对于互联网以及其他基于IP协议的网络的正常运行起着非常重要的作用。有许多重要的网络程序都是基于ICMP协议上的,最为著名如Ping和Tracert等。本文就来介绍用VisualC#实现基于ICMP协议重要的网络命令Ping的方法。Ping命令是可以说是一

2、个"跨平台"程序,这是因为Ping命令不仅存在Windows系统上,在Unix系统上也有Ping命令,其实对其他只要是支持网络的操作系统,一般也都存在该命令。Ping命令的主要作用是检测网络上主机的状态。要是在几年前,我们还可以下如此断言,如果不能Ping通某台主机,那么也就无法Telnet或者FTP到这台主机,但随着互联网的安全意识的增加,出现了访问控制清单的路由器和防火墙,由于ICMP报文是在IP数据包中被传输的,而到达一台主机不仅取决于IP层是否到达,还取决于使用何种协议和端口。譬如金山公司的金山网镖就可以禁止其他机器Ping通这台主机。所以在现在的情况下,即时Ping

3、不通某台机器,但也有可能FTP登陆到这台机器,或者通过HTTP来浏览这台机器上的Web页面。  一.Ping命令简介  首先进入Windows系统中的命令提示符,输入"Ping/?"后,单击回车键,您就可以了解Ping命令的各种参数的使用方法。最为常见的使用方法是"Ping远程计算机名称(或者远程计算机的IP地址)",如果在Ping命令的返回字符中有"Replyfrom",说明此主机在线,具体如图01:图01:Ping通主机时的运行界面  如果返回字符中有"Requesttimeout",一般情况此主机不在线,具体如图02:图02:Ping不通主机时的运行界面  二.Ping

4、命令、ICMP报文和IP数据包  Ping命令基于的是TCP/IP协议簇中的ICMP协议,在编写基于ICMP协议的网络应用程序时,应注意下面二点:  1.ICMP报文是封装在IP数据包中传输的。  了解这一点对后面编程非常重要,图03是IP数据包的组成结构图:图03:IP数据包的组成结构图  习惯上把IP数据包划分为三个部分:  (1).IP数据包中的前二十个字节的数据,即图03中从【4位版本】到【32位目的地址IP】,这称为IP首部。  (2).选项,即图03中的【选项(如果有)】部分。  (3).数据,即图03中的【数据】部分。  其中后面二个部分组成的就是ICMP报文。

5、ICMP报文的具体组成结构如图04所示:图04:ICMP报文组成结构图  2.ICMP协议没有固定的端口号。  ICMP协议和其他协议不同,其他协议基本都对应固定的端口号,如HTTP协议是通过80端口号来交换数据的。  了解上面的二点对后面在VisualC#实现Ping命令是非常有用的。因为在下面的在编写VisualC#实现Ping命令的程序中,程序中定义一个名称为"IcmpPacket"类,通过这个类来构造ICMP报文,而定义"IcmpPacket"类依据的就是图03所示的ICMP报文组成结构。同样由于ICMP协议没有对应固定的端口号,这就意味着,编写VisualC#实现P

6、ing命令中可以随意选择端口号,本文选择的端口号是"30"。  由于ICMP协议是一个复杂的协议,而本文由于篇幅所限,对ICMP的很多细节,就不能一一介绍,如果你对ICMP协议感兴趣或对上面的介绍的仍然感觉有点模糊,那就请参阅探讨ICMP协议的相关书籍,它们一般介绍的都很详细。三.简介VisualC#实现Ping命令使用的类:  VisualC#实现Ping命令中涉及到很多的类,其中最重要的是Socket类。这是因为程序中发送含有ICMP报文的IP数据包,接收含有ICMP超时或ICMP会显报文的IP数据包和设定IP数据包中的TTL数值都会使用到Socket类。表01和表02是

7、Socket类中的常用属性和方法及其简要说明。属性说明AddressFamily获取Socket的地址族。Available获取已经从网络接收且可供读取的数据量。Blocking获取或设置一个值,该值指示Socket是否处于阻塞模式。Connected获取一个值,该值指示Socket是否已连接到远程资源。Handle获取Socket的操作系统句柄。LocalEndPoint获取本地终结点。ProtocolType获取Socket的协议类型。RemoteEndPoint获取远程终结点。SocketType

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。