引言:
1:CC攻擊是正常的業務(wù)邏輯,大并發讓你處理(lǐ)不過來(lái),處理(lǐ)XP SP2,以上(shàng)的系統都封了(le)RAW格式協議(yì)封包自定義,除了(le)基于應用層改協議(yì),之外都是模拟或請求來(lái)測試傳輸層
2:UDP不會粘包,不會少包,除非緩存區滿
3:TCP主要特征有:
3次握手連接
4次揮手斷開
擁塞控制
重傳控制
流傳輸方式,服務(wù)端需要額外解析方面有:協議(yì)粘包,協議(yì)少包,協議(yì)丢包、異常協議(yì)響應、正常協議(yì)響應
UDP主要特征有:
包傳輸方式
無粘包錯包
且無連接,無擁塞控制,無重傳機制
4:TCP主要特征有:
1.3次握手連接:
一(yī)測試用例:壓力機在請求大量握手鏈接後迅速關(guān)閉,需要大并發操作(zuò)
一(yī)測試邏輯點:測試服務(wù)端底層邏輯關(guān)閉socket的同時(shí),又來(lái)新(xīn)的socket鏈接請求,服務(wù)端底層邏輯這(zhè)部分(fēn)是否處理(lǐ)正常
我測試的項目BUG:創建ID為(wèi)5000的socket端口後,由于壓力機關(guān)閉socket,導緻服務(wù)端回收這(zhè)個(gè)ID為(wèi)5000的SOCKET,新(xīn)來(lái)的TCP連接請求,由于5000的釋放(fàng)又使用上(shàng)這(zhè)個(gè)SOCEKT,這(zhè)時(shí)服務(wù)端報(bào)錯:新(xīn)的SOCKET無法使用
二測試用例:壓力機在請求大量握手鏈接,需要大并發操作(zuò)
二測試邏輯點:測試服務(wù)端最大連接SOCKET數量,以保證服務(wù)端有可用的SOCKET資源分(fēn)配,
我測試的項目BUG:服務(wù)端創建5000個(gè)SOCKET後無法創建成功,因配置的JAVA内存不夠及系統開放(fàng)的端口數不夠
上(shàng)述兩點的測試工具實現(xiàn):隻有IOCP和AIO底層測試驗證最有效,測試同時(shí)觀察在 N并發/秒(miǎo) 得出瓶頸拐點
5:4次揮手斷開:
測試用例:壓力機設置SOCKET選項,在請求大量握手鏈接後迅速關(guān)閉,需要大并發操作(zuò)
//快(kuài)速關(guān)閉socket ::setsockopt(pUsoc, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(bool));//複用端口 ::setsockopt(pUsoc, SOL_SOCKET, SO_DONTLINGER, (const char*)&off, sizeof(bool));//打開LINGER ::setsockopt(pUsoc, SOL_SOCKET, SO_LINGER, (const char*)&m_sLinger, sizeof(linger));//設置強制關(guān)閉SOCKET
測試邏輯點:測試因壓力機器(qì)人(rén)修改Socket配置,客戶端主動斷開,服務(wù)端無法得到4次揮手的通知包,導緻需要N時(shí)間(jiān)節點才關(guān)閉Socket/不關(guān)閉Socket
項目測試BUG:因無法得到4次揮手包,服務(wù)端存在大量異常長連接,導緻拒絕服務(wù)
6:擁塞控制-簡單理(lǐ)解為(wèi),堵死汽車排氣孔,同時(shí)踩油門
測試用例:壓力機客戶端設置1字節接受協議(yì)或1字節緩存區,同時(shí)請求需要響應的大數據:例如(rú)排行榜
測試邏輯點:由于擁塞控制特殊性,TCP會開辟内存緩存這(zhè)部分(fēn)數據,簡單說(shuō),服務(wù)端産生(shēng)的協議(yì)多,但(dàn)有效發出的少,系統緩存剩餘協議(yì)越來(lái)越多,硬件監控服務(wù)端内存暴漲
項目測試BUG:同上(shàng),設置好(hǎo)(hǎo)SOCKET參數後,請求排行榜數據,服務(wù)端内存暴漲,直接崩潰
7:重傳控制
測試用例:搭建測試代理(lǐ)工具,對包傳輸順序/丢包進行參數配置轉發
測試邏輯點:由于重傳的特殊性是傳輸層控制,所以在應用層模拟丢包和亂序請求
大家常用的kugou音(yīn)樂(yuè)的APP通過工具模拟重傳控制,在試聽(tīng)音(yīn)樂(yuè)的時(shí)候,進行丢包和亂序測試,APP崩潰
8:流傳輸方式,内容比較多,慢(màn)慢(màn)看
測試用例:協議(yì)粘包 - 通過代理(lǐ)工具自動*N倍,既123變123123123123123123
測試邏輯點:
1)測試服務(wù)端最大可分(fēn)割的數據包上(shàng)限,
2)測試服務(wù)端是否并發執行協議(yì),如(rú)領取任務(wù)、購(gòu)買物品、創建角色等等
項目BUG:創建N個(gè)123角色在數據庫中,且完整協議(yì)分(fēn)割最大上(shàng)限為(wèi)4,後期調至20份/Max緩存區
測試用例:協議(yì)少包 - 通過工具1字節發送
1)高速
2)慢(màn)速
測試邏輯點:
1)高速發送1字節,服務(wù)端讀取處理(lǐ)協議(yì),來(lái)消耗CPU資源,
2)占用服務(wù)端緩存區長時(shí)間(jiān)消耗資源,以上(shàng)2點測試服務(wù)端對協議(yì)讀取健壯性
測試用例:服務(wù)端私有協議(yì) - 構造異常數據及有效數據進行測試
測試邏輯點:
1)有效數據
包體(tǐ) - 這(zhè)裏用的有效數據既為(wèi)超大包體(tǐ),如(rú)喊話(huà)等可變協議(yì),超過服務(wù)端緩存器(qì)上(shàng)限
協議(yì)接口 - 對于已知的服務(wù)端協議(yì)響應接口遍曆,遍曆測試是否有未開放(fàng)的或頻繁調用
協議(yì)參數 - A使用B的參數如(rú)用戶ID、數值類的:0 負數 邊界值 正數溢出
2)異常數據
包體(tǐ) - 修改包體(tǐ)邊界值或自定義數據,既包體(tǐ)過短或超長數值
協議(yì)接口 - 遍曆服務(wù)端接口,既不存在的接口,自動+N修改
協議(yì)參數 - 遍曆字節既協議(yì)自動+N修改
特殊協議(yì) - 及發送非正常的協議(yì)如(rú)1字節 00 11 22 33 - FF
項目BUG:
1)協議(yì)包體(tǐ):移動協議(yì)修改包體(tǐ)數據,包體(tǐ)修改為(wèi)8字節,既無協議(yì)接口的參數,服務(wù)端報(bào)錯崩潰
2)協議(yì)參數:
A用戶使用B用戶ID登陸,強制踢B下(xià)線、
購(gòu)買數量*金(jīn)額超服務(wù)端變量上(shàng)限,數值溢出倒貼錢(qián)給玩(wán)家、
負數不用多說(shuō),賣東西(xī)-1,多送一(yī)件給玩(wán)家、
有除法計算(suàn)的地方使用0數值,服務(wù)端崩潰
3)協議(yì)接口:
副本調用怪自爆協議(yì),秒(miǎo)殺所有怪、
角色在監獄中調用傳送接口越獄
攻擊類,并發N/秒(miǎo)請求大數據的協議(yì)接口,服務(wù)端内存Cpu暴漲,後期限制請求頻率
10:UDP主要特征有:包傳輸、無粘包、錯包、無連接,無擁塞控制、無重傳機制
測試用例:
應用層
1)協議(yì)測試同TCP
2)大并發請求(性能(néng)測試同TCP)
測試邏輯點:
1)由于傳輸層無特殊處理(lǐ),即傳輸層在協議(yì)測試上(shàng)隻有丢包、亂序、延遲等3項,測試方案同TCP的測試用例
2)應用層的方案延用TCP中測試用例:
有效數據
異常數據
1)有效數據
包體(tǐ) - 這(zhè)裏用的有效數據既為(wèi)超大包體(tǐ),如(rú)喊話(huà)等可變協議(yì),超過服務(wù)端緩存器(qì)上(shàng)限
2)異常數據
包體(tǐ) - 修改包體(tǐ)邊界值或自定義數據,既包體(tǐ)過短或超長數值
Copyright © 2013-2016 WWW.VZIDC.COM . All Rights Reserved. 微子(zǐ)網絡 版權所有 江蘇微子(zǐ)網絡科技有限公司