clumsy網絡環境模擬工具

clumsy 能在 Windows 平臺下人工模擬不穩定的網絡狀況,方便你調試應用程序在極端網絡狀況下的表現。

簡介

利用封裝 Winodws Filtering Platform 的WinDivert 庫, clumsy 能實時的將系統接收和發出的網絡數據包攔截下來,人工的造成延遲,掉包和篡改操作後再進行發送。無論你是要重現網絡異常造成的程序錯誤,還是評估你的應用 程序在不良網絡狀況下的表現,clumsy 都能讓你在不需要額外添加代碼的情況下,在系統層次幫你達到想要的效果:

特色:        

  • 下載即用,不需要安裝任何東西。

  • 不需要額外設置,不需要修改你的程序的代碼。

  • 系統級別的網絡控制,可以適用於命令行,圖形界面等任何 Windows 應用程序。

  • 不僅僅只支持 HTTP,任何 TCP, UDP 的網絡連接都可以被處理。

  • 支持本地調試(服務器和客戶端都在 localhost)

  • "熱插拔",你的程序可以一直運行,而 clumsy 可以隨時開啓和關閉。

  • 實時調節各種參數,詳細控制網絡情況。

實例

下面的動畫展示了 clumsy 作用於一個本地的基於 netcat 的 UDP 服務器/客戶端的情況。仔細觀察你可以看到數據根據在 clumsy 的影響下產生了相應的變化。           

如果你基本知道了 clumsy 是幹什麼用的,不妨到下載頁面選擇適用於你係統的版本進行下載。

詳細信息

clumsy 首先根據用戶選擇的 filter 來攔截指定的網絡數據。在 filter 中可以設定你感興趣的協議(tcp/udp),端口號,是接收還是發出的端口。你也可以通過簡單的邏輯語句來進一步縮小範圍。當 clumsy 被激活時,只有符合這些標準的網絡數據會被進行處理,而你不感興趣的數據仍然會由系統正常傳輸。

當被 filter 的網絡數據包被攔截後,你可以選擇 clumsy 提供的功能來有目的性的調整網絡情況:

  1. 延遲(Lag),把數據包緩存一段時間後再發出,這樣能夠模擬網絡延遲的狀況。

  2. 掉包(Drop),隨機丟棄一些數據。

  3. 節流(Throttle),把一小段時間內的數據攔截下來後再在之後的同一時間一同發出去。

  4. 重發(Duplicate),隨機複製一些數據並與其本身一同發送。

  5. 亂序(Out of order),打亂數據包發送的順序。

  6. 篡改(Tamper),隨機修改小部分的包裹內容。

儘管當前寬帶網絡連接十分普及,但網絡傳輸其本身在本質上總不是穩定的。如果你的應用程序中沒有應對各種情況的處理,那麼有可能一個丟失的 UDP 包裹都會讓你的程序崩潰。正確的調試這類行爲,顯然需要再代碼結構上進行仔細的設計和處理,還會很花功夫。而且在某些封裝緊密的開發環境(Unity3D 自帶的網絡庫可能是一個例子)下會更麻煩。clumsy 以儘可能減輕程序員負擔爲目標,希望提供一個簡單方便(但並不完美)的解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章