javascript
JS模拟的Ping程序 (Web Ping)
? ? ? JS雖然發送不了真正Ping的ICMP數據包,但Ping的本質仍然是請求/回復的時間差,我們可以試圖去請求站點的某個不存在資源,根據返回錯誤的時間,我們就可以計算出延時的時間差了。在本例,我們嘗試訪問指定站點下的一個不存在的圖片文件(文件名是個隨機數),以致onerror事件發生,這個過程大致就是網絡上的延時差。
? ? ? 當然,實際過程中會復雜的多。HTTP1.1協議第一次訪問時需要一個TCP連接的過程,要經過3次握手之后才開始HTTP通信,因此第一次就要慢一些。如果是ping一個域名,那還要包括域名解析的時間;其次,在理論上,之后的Request和Response是一個TCP-AP包和TCP-ACK包。但如果訪問的是一個不存在的資源,服務器有可能會返回一個HTTP重定向,這時客戶端就要再請求一次,直到重定向的頁面數據收到后,才觸發onerror事件,這其中的時間就要長的多了。?如果服務器404的數據長度大于數據包的MTU值,IP協議還會分包傳輸,這樣延時就會成倍的增加。
? ? ? 另外一個可能的情況就是,請求一個不存在的主機,理應超時才對。但有可能運營商的DNS返回一個廣告網站的IP,例如互聯星空,以至于ping的很流暢。(2009/6/21)
DEMO:
轉載于:https://www.cnblogs.com/index-html/archive/2011/03/10/js_ping.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JS模拟的Ping程序 (Web Ping)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: castle 学习
- 下一篇: asp.net操作IIS主机头的问题总结