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不通主機時的運行界面