利用Visual C#实现ICMP网络协议

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 14:34 点击:
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通主机时的运行界面

  如果返回字符中有"Request timeout",一般情况此主机不在线,具体如图02:


图02:Ping不通主机时的运行界面

  二.Ping命令、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报文。ICMP报文的具体组成结构如图04所示:


图04:ICMP报文组成结构图


  2. ICMP协议没有固定的端口号。

  ICMP协议和其他协议不同,其他协议基本都对应固定的端口号,如HTTP协议是通过80端口号来交换数据的。

  了解上面的二点对后面在Visual C#实现Ping命令是非常有用的。因为在下面的在编写Visual C#实现Ping命令的程序中,程序中定义一个名称为"IcmpPacket"类,通过这个类来构造ICMP报文,而定义"IcmpPa

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 用C#制作屏幕捕获程序
    • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
    • 遍历ArrayList易犯错误
    • C#对XML操作:一个处理XML文件的类(1)
    • .NET简谈反射(动态调用)
    • 使用C#编写LED样式时钟控件
    • DataList嵌套问题 如何删除内层子DataList的记录
    • 怎样用C#实现完整文档打印功能
    • .NET简谈自定义事务资源管理器
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1