網路異常測試初探
開發或者測試網際網路產品的過程中,同學們一定遇到過connection timed out和socket read timed out兩種和網路相關的異常。今天我們並不分析引起這些異常的原因,也不談發生異常以後的解決辦法,我們來說說如何製造這類異常,從而模擬對應的異常場景。
瞭解tcp協議就知道connection即建立連線的過程,其實和socket read即傳輸資料的過程並沒有太大的差別,兩者都是請求應答模式,而只是前者的請求資料量很小而已。要使兩者超時,我們可以採用相同的方法即限制網路傳輸的頻寬來達到目的。
Tc即traffic control就是這樣一款能夠限制網路流量的工具。Tc中主要的概念包括類class和過濾器filter。
我們可以用class把網路裝置的頻寬劃分成不同的區間
tc class add dev $DEV parent 1: classid 1:11 htb rate 90mbps ceil 100mbps
tc class add dev $DEV parent 1: classid 1:12 htb rate 90bps ceil 100bps
如上,11這個class對應的頻寬為90到100mbps,12這個class對應的頻寬只有90到100bps。劃分好了class,我們就可以用filter把符合特定條件的資料包歸入不同的class中
tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip sport $PORT 0xffff match ip dst $IP flowid 1:12
如上就把源埠是$PORT,目的地址是$IP的資料包歸入12這個class中了,這樣就把符合該條件的資料流量限制到了90到100bps。在正在執行的系統中開啟上述tc限制,即把特定資料流限制到一個極小值,我們就能模擬出connection timed out異常了。關於tc更詳細的教程可以參考1、2。
那麼socket read timed out異常又該如何模擬呢,我們怎麼才能區分建立連線和資料傳輸這兩個過程,tc工具還能滿足我們的需求嗎?在尋找問題答案的過程中,另一個linux核心元件iptables進入了我們的視野。
Iptables是linux系統中常用的防火牆元件,功能十分強大,網上有十分豐富的資料。由於其能夠識別資料包中的syn、ack等標誌位,故能把建立連線和後續的資料傳輸過程區分開來。
iptables -A INPUT -p tcp --src $IP --dport $PORT ! --syn -j DROP
如上,在目的機器上加入該條iptables規則,可以實現將未設定syn標誌位的資料包丟棄的功能,這樣連線能夠建立完成但後續的資料傳輸將無響應。
另外,Iptables具有一種連線跟蹤機制,即能夠記錄連線的狀態。這些狀態分別是NEW、ESTABLISHED、RELATED和INVALID。我們可以利用該特性實現相同的效果。
iptables -A INPUT -p tcp -m state --state ESTABLISHED -s $IP --dport $PORT -j DROP
如上,在目的機器上加入該條iptables規則,當匹配了ip和埠,並且資料包所對應的連線狀態是ESTABLISHED時將其丟棄。
至此read timed out異常也能輕鬆模擬了。Tc和Iptables是linux網路模組中強有力的工具,除了能夠利用它們開發功能,也能夠在網路異常測試中發揮關鍵的作用。
51Testing軟體測試論壇聖誕活動期待您的參與~ipadmini 惠普平板 京東購物卡等你來搶!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11323760/viewspace-1064161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常見網路測試命令使用
- 異常-自定義異常的實現和測試
- 異常測試實踐與梳理
- junit 使用JUnit測試預期異常
- MV-Sketch介紹--網路流量異常檢測
- 網路測試
- muduo網路庫Exception異常類Exception
- Java異常及相關呼叫效能測試Java
- Java中測試異常的多種方式Java
- 如何實現介面異常場景測試?測試方法探索與測試工具實現
- 【彙總】網路安全滲透測試常見面試題!面試題
- UDP網路測試UDP
- 異常檢測
- 【NFS】linux NFS "unmatched host" 異常小測試NFSLinux
- windows 打補丁後網路異常Windows
- 網路網賭系統注單異常賬戶異常提款不了怎麼辦?
- 軟體測試管理初探
- 網路安全滲透測試常見的7種型別!型別
- Python異常處理機制、除錯、測試Python除錯
- IPERF 網路效能測試
- 網路流量測試工具
- 網路效能測試-perf
- 電網會否因網路問題而異常?
- 序列異常檢測
- 軟體為什麼要做異常測試?測試員必知的22個測試點總結!
- 第5章 基於K均值聚類的網路流量異常檢測聚類
- 初探軟體測試心理學
- 【MySQL】Tokudb安裝測試初探MySql
- (一) 初探 iOS 單元測試iOS
- Web 端滲透測試初探Web
- python自動化測試之異常及日誌Python
- Junit mockito 測試Controller層方法有Pageable異常MockitoController
- 阿里雲異常流量及異常網路連線的安全解決過程阿里
- 香港地域ECS網路延遲異常通知公告
- 測試開發之網路篇-網路路由路由
- 雲網路效能測試流程
- 伺服器網路測試伺服器
- 網路安全滲透測試