常見方式
流量型:大量封包淹沒頻寬(如 UDP Flooding)。
資源型:消耗伺服器 CPU、記憶體、最大連線數(如 TCP 連線洪流、Slowloris)。
應用層型:針對網站頁面不斷發起請求,消耗服務端資源。
DoS 與 DDoS 差異
DoS:單一來源發起攻擊(單人單機執行腳本)。
DDoS:透過多台機器或殭屍網路(Botnet)發動分散式攻擊,來自多來源,壓力更大,更難防禦。
建立目標測試伺服器
本地端搭建 http://127.0.0.1:80 作為目標。
執行腳本測試效果
1.引入 socket 網路套件,讓 Python 可以建立 TCP 連線,也引用 time 來控制每次攻擊的間隔。
2.dos_attack 是 DoS 攻擊主函式,接收目標 IP、端口、攻擊次數。
3.進入迴圈 for,每次攻擊都:
建立 TCP Socket。
連線至目標 IP 與端口。
傳送 HTTP GET 請求(可以換任意字串當封包)。
關閉連線。
顯示封包編號和「Packet sent」。
用 sleep 稍微延遲,避免全部封包瞬間發送導致效能問題。
4. 若出現錯誤會被 except 捕捉並回報(例如 WinError 10061 代表目標沒運行服務)
觀察是否有「Packet sent」及伺服器資源消耗。
嘗試用瀏覽器存取伺服器,觀察有無感覺變慢或無回應。
(但這次的效果是無法顯示的,因為單純 DoS 對現代伺服器影響有限,可升級為多執行緒、多進程或分散式)
用 python -m http.server 80(或 5000) 開本地伺服器。
啟動此 DoS 腳本,輸入對應的 IP、port、數量即可測試。
觀察瀏覽器存取或工作管理員裡的服務資源消耗。