ping是大家所熟悉的網絡延遲監測工具。ping基於ICMP協議,這是一個基於IP的三層協議。在Windows Azure上,所有服務的對外接口都僅支持TCP和UDP協議,因此,我們無法使用ping從外部監測Azure上的虛擬機,也無法從Azure虛擬機監測外部延遲。爲了能夠實現對網絡延遲的監測,我們可以使用TCP協議進行ping,其原理是,先在客戶端和服務端建立一個tcp連接,然後發出一個檢測包,測量響應時間。它和ping的普通區別,是在測量前要建立一個tcp連接。因此,測試的對象必須開放一個tcp端口。另外,tcp ping工具沒有在os裏面提供,必須自己開發或者下載工具。
在windows 上,微軟提供了一個工具叫psping。可以從這裏下載:http://technet.microsoft.com/en-us/sysinternals/jj729731
下載後,進行安裝。然後在命令行就可以執行ping命令,比如 psping www.sina.com:80. 。它與ping的區別,是需要在測試目標後面增加一個端口號,否則,psping會使用ping進行檢測
下面是一個進行psping和普通ping的對比。我們發現二者的輸出基本一致,psping並沒有因爲tcp協議增加網絡延遲。同時,我們發現psping的精度更高一些,支持0.01毫秒精度。
在Linux上,也有類似工具。下面,我們看下CentOS/Redhat上如何進行Tcp ping
1. 首先下載tcptraceroute http://pkgs.repoforge.org/tcptraceroute/tcptraceroute-1.5-0.beta7.el6.rf.x86_64.rpm 其他版本的rpm可以在http://pkgs.repoforge.org/tcptraceroute/下載
2. 安裝下載的rpm包
3. 下載tcpping工具 http://www.vdberg.org/~richard/tcpping
4. 修改該文件權限:chmod 755 tcpping
5. 執行tcpping命令:tcppingnews.sina.com