詳解常用測試機器(服務)是否可用的兩種方式
背景描述
在網路模型中有一層非常重要的一環,它實現了端到端之間的通訊,而傳輸層最主要用的到協議是tcp和udp,而tcp協議作為一種可靠的面向連線的傳輸層協議,被廣泛應用,所以本文所描述的幾種方式都是基於基於傳輸層的tcp協議的。
ping
相信一說到測試兩臺機器是否能通訊,第一時間想到的就是ping,的確如此,下面將講述它的原理及使用方式。
為什麼可以?
在這之前必須先了解一下網際控制報文協議(ICMP),這是一個屬於IP層的協議。ICMP報文作為IP層資料報的資料,加上資料報的首部,組成IP資料報傳送出去ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告出去。ICMP不像HTTP,FTP應用層擁有傳輸層的埠號。ICMP報文有兩種,即ICMP差錯報告報文和ICMP詢問報文。
ICMP的一個重要的應用就是分組網路探測Ping(Packet InterNet Groper),它利用網路上機器ip地址的唯一性來測試兩臺網路機器是否連線相通,時延是多少。Ping使用的是ICMP回送請求與回送回答報文。Ping是應用層直接使用網路層ICMP的一個例子。它沒有經過傳輸層的TCP或UDP。
如何使用?
Ping是Windows,Unix,Linux下都能使用的命令。使用用格式為
ping hostname
成功 ping通
注意事項
有些病毒木馬會強行大量遠端執行ping命令搶佔你的網路資源,導致系統變慢,網速變慢。所以主機的防火牆都會有一個嚴禁ping的基本功能提供給使用者選擇。
所以如果ping不通主機,也有一種可能是對方主機將ping給禁用了。
telnet
telnet絕對是你需要掌握的另外一種手段,它是用來測試服務埠是否可訪問的神器。
為什麼可以?
telnet命令遵循的是TELNET協議(終端模擬協議)。它和FTP,HTTP一樣是屬於應用層的協議,是屬於TCP/IP協議族裡面的一員,是Internet遠端登入服務的標準協議和主要方式。使用者通過TELNET就可以在其所在地通過TCP連線註冊(即登入)到遠地的另外一個主機上(使用主機名或者IP地址)。
如何使用
telnet hostname #預設訪問機器hostname的 23號埠
telnet hostname port_id #連線機器hostname的 prot_id埠
連線失敗
連線成功
注意事項
同樣的主機的防火牆也提供禁用telnet功能的選項。還有就是,telnet是可以針對某個埠是否可用進行測試,因為是依賴tcp協議的,所以如果防火牆對某個埠進行了限制那麼使用telnet命令會連線不上去的。
常用服務層所對應的的tcp埠號
應用程式 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SSH | MYSQL |
---|---|---|---|---|---|---|---|---|
熟知埠 | 20,21 | 23 | 25 | 53 | 69 | 80 | 22 | 3306 |