1:CC攻擊是正常的業務邏輯,大並發讓你處理不過來,處理XP SP2,以上的系統都封了RAW格式協議封包自定義,除了基於應用層改協議,之外都是模擬或請求來測試傳輸層
2:UDP不會粘包,不會少包,除非緩存區滿
3:TCP主要特征有:
1、3次握手連接
2、4次揮手斷開
3、擁塞控制
4、重傳控制
5、流傳輸方式,服務端需要額外解析方面有:協議粘包,協議少包,協議丟包、異常協議響應、正常協議響應
UDP主要特征有:
1、包傳輸方式
2、無粘包錯包
3、且無連接,無擁塞控制,無重傳機制
4:TCP主要特征有:
1、3次握手連接:
一測試用例:壓力機在請求大量握手鏈接后迅速關閉,需要大並發操作
一測試邏輯點:測試服務端底層邏輯關閉socket的同時,又來新的socket鏈接請求,服務端底層邏輯這部分是否處理正常
我測試的項目BUG:創建ID為5000的socket端口后,由於壓力機關閉socket,導致服務端回收這個ID為5000的SOCKET,新來的TCP連接請求,由於5000的釋放又使用上這個SOCEKT,這時服務端報錯:新的SOCKET無法使用
二測試用例:壓力機在請求大量握手鏈接,需要大並發操作
二測試邏輯點:測試服務端最大連接SOCKET數量,以保證服務端有可用的SOCKET資源分配,
我測試的項目BUG:服務端創建5000個SOCKET后無法創建成功,因配置的JAVA內存不夠及系統開放的端口數不夠
上述兩點的測試工具實現:只有IOCP和AIO底層測試驗證最有效,測試同時觀察在 N並發/秒 得出瓶頸拐點
5:4次揮手斷開:
測試用例:壓力機設置SOCKET選項,在請求大量握手鏈接后迅速關閉,需要大並發操作
//快速關閉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));//設置強制關閉SOCKET
測試邏輯點:測試因壓力機器人修改Socket配置,客戶端主動斷開,服務端無法得到4次揮手的通知包,導致需要N時間節點才關閉Socket/不關閉Socket
項目測試BUG:因無法得到4次揮手包,服務端存在大量異常長連接,導致拒絕服務
6:擁塞控制-簡單理解為,堵死汽車排氣孔,同時踩油門
測試用例:壓力機客戶端設置1字節接受協議或1字節緩存區,同時請求需要響應的大數據:例如排行榜
測試邏輯點:由於擁塞控制特殊性,TCP會開辟內存緩存這部分數據,簡單說,服務端產生的協議多,但有效發出的少,系統緩存剩余協議越來越多,硬件監控服務端內存暴漲
項目測試BUG:同上,設置好SOCKET參數后,請求排行榜數據,服務端內存暴漲,直接崩潰
7:重傳控制
測試用例:搭建測試代理工具,對包傳輸順序/丟包進行參數配置轉發
測試邏輯點:由於重傳的特殊性是傳輸層控制,所以在應用層模擬丟包和亂序請求
大家常用的kugou音樂的APP通過工具模擬重傳控制,在試聽音樂的時候,進行丟包和亂序測試,APP崩潰
8:流傳輸方式,內容比較多,慢慢看
測試用例:協議粘包 - 通過代理工具自動*N倍,既123變123123123123123123
測試邏輯點:1)測試服務端最大可分割的數據包上限,2)測試服務端是否並發執行協議,如領取任務、購買物品、創建角色等等
項目BUG:創建N個123角色在數據庫中,且完整協議分割最大上限為4,后期調至20份/Max緩存區
測試用例:協議少包 - 通過工具1字節發送,1)高速、2)慢速
測試邏輯點:1)高速發送1字節,服務端讀取處理協議,來消耗CPU資源,2)占用服務端緩存區長時間消耗資源,以上2點測試服務端對協議讀取健壯性
9:測試用例:服務端私有協議 - 構造異常數據及有效數據進行測試
測試邏輯點:
1)有效數據
包體 - 這里用的有效數據既為超大包體,如喊話等可變協議,超過服務端緩存器上限
協議接口 - 對於已知的服務端協議響應接口遍歷,遍歷測試是否有未開放的或頻繁調用
協議參數 - A使用B的參數如用戶ID、數值類的:0 負數 邊界值 正數溢出
2)異常數據
包體 - 修改包體邊界值或自定義數據,既包體過短或超長數值
協議接口 - 遍歷服務端接口,既不存在的接口,自動+N修改
協議參數 - 遍歷字節既協議自動+N修改
特殊協議 - 及發送非正常的協議如1字節 00 11 22 33 - FF
項目BUG:
1)協議包體:移動協議修改包體數據,包體修改為8字節,既無協議接口的參數,服務端報錯崩潰
2)協議參數:1、A用戶使用B用戶ID登陸,強制踢B下線、2、購買數量*金額超服務端變量上限,數值溢出倒貼錢給玩家、3、負數不用多說,賣東西-1,多送一件給玩家、4、有除法計算的地方使用0數值,服務端崩潰
3)協議接口:1、副本調用怪自爆協議,秒殺所有怪、2、角色在監獄中調用傳送接口越獄
4)攻擊類,並發N/秒請求大數據的協議接口,服務端內存Cpu暴漲,后期限制請求頻率
10:UDP主要特征有:包傳輸、無粘包、錯包、無連接,無擁塞控制、無重傳機制
測試用例:應用層 - 1)協議測試同TCP 、2)大並發請求(性能測試同TCP)
測試邏輯點:1)由於傳輸層無特殊處理,即傳輸層在協議測試上只有丟包、亂序、延遲等3項,測試方案同TCP的測試用例、2)應用層的方案延用TCP中測試用例:1)有效數據、2)異常數據
1)有效數據
包體 - 這里用的有效數據既為超大包體,如喊話等可變協議,超過服務端緩存器上限
2)異常數據
包體 - 修改包體邊界值或自定義數據,既包體過短或超長數值