DDoS,全称是 Distributed Denial of Service,中文通常叫“分布式拒绝服务攻击”。
它的核心目的不是窃取数据,而是让服务不可用。攻击者会通过大量请求或异常流量,耗尽目标系统的某类资源,让正常用户无法访问网站或接口。
常见被耗尽的资源包括:
- 网络带宽
- TCP 连接数
- 防火墙或负载均衡状态表
- Web 服务器连接池
- 应用线程池
- CPU 和内存
- 数据库连接池
- Redis、搜索服务等后端依赖
DDoS 通常可以分成三类:
1. 流量型 DDoS
2. 协议型 DDoS
3. 应用层 DDoS

图 1:DDoS 三种类型总览
一、流量型 DDoS:把路堵住
流量型 DDoS 的目标是 **网络带宽**。
可以把服务器理解成一家店,公网带宽就是通往这家店的路。如果这条路只能承载 `100 Mbps` 的流量,而攻击流量达到 `5 Gbps`,那么正常用户的请求还没到服务器,入口链路就已经被堵住了。
正常访问链路大概是:
正常用户请求
↓
公网入口带宽
↓
服务器
攻击时变成:
大量攻击流量
↓
公网入口带宽被打满
↓
正常用户请求进不来很多人容易误解一点:服务器不返回资源,是不是就不会占用带宽?
答案是否定的。
因为流量分为两个方向:
用户 -> 服务器:服务器入站流量
服务器 -> 用户:服务器出站流量服务器拒绝响应,最多只能减少出站流量。但攻击流量已经从外部网络打到了服务器入口,这部分入站流量已经占用了链路。
所以对于大规模流量型 DDoS,如果流量已经到了你的服务器,本机防火墙再丢弃往往已经太晚。正确的防御位置应该更靠上游,比如 CDN、高防节点、云厂商清洗中心或运营商侧。
典型特征
流量型 DDoS 常见表现包括:
公网带宽突然打满
正常用户访问超时
应用服务本身可能还没明显处理请求
流量来源分散
入站流量远超平时水平
常见防御方式
防御流量型 DDoS,核心是 上游清洗:
CDN
高防 IP
云厂商 DDoS 防护
运营商流量清洗
Anycast 网络
黑洞路由或流量牵引
二、协议型 DDoS:把门口登记系统挤爆
协议型 DDoS 攻击的是 网络协议和连接状态资源。
要理解它,先要理解 TCP 连接。
大多数 Web 请求都基于 TCP。浏览器访问网站时,不是直接发送 HTTP 请求,而是先建立 TCP 连接。TCP 建立连接需要三次握手:
客户端 -> 服务器:SYN
服务器 -> 客户端:SYN-ACK
客户端 -> 服务器:ACK连接建立后,浏览器才会发送真正的 HTTP 请求:
GET /index.html HTTP/1.1问题在于,服务器在连接建立过程中需要维护状态,比如:
来源 IP 和端口
连接进行到了哪一步
超时时间
socket 信息
半连接队列
防火墙状态表
负载均衡连接表
协议型 DDoS 的思路就是制造大量异常连接或半连接,让服务器、网关、防火墙或负载均衡器忙于维护这些连接状态,最终正常用户无法建立连接。
可以用一个类比理解:
流量型 DDoS:把通往店铺的路堵住
协议型 DDoS:很多人在门口登记到一半就不动,登记台被占满
应用层 DDoS:进店后疯狂要求工作人员处理复杂业务典型特征
协议型 DDoS 不一定会把带宽打满,但会出现:
新连接建立失败
半连接数量异常升高
连接队列被占满
防火墙或负载均衡状态表压力变大
业务代码可能还没开始处理请求,连接层已经出问题
常见防御方式
协议型 DDoS 的防御重点是 连接保护:
SYN cookies
连接数限制
缩短异常连接超时
单 IP 或单网段限流
防火墙状态表保护
负载均衡层防护
CDN / 高防清洗
其中 SYN cookies 可以简单理解为:服务器先不急着保存完整连接状态,而是把必要信息编码进响应里,等客户端真的完成握手后,再正式建立连接。这样可以降低半连接资源被耗尽的风险。
三、应用层 DDoS:拖垮业务系统
应用层 DDoS 攻击的是 Web 应用和后端业务逻辑。
这类攻击请求通常已经进入了 Web 服务,甚至进入了后端代码和数据库。
典型链路是:
互联网
↓
CDN / 负载均衡
↓
Nginx / 网关
↓
Java / Node / Python 后端
↓
MySQL / Redis / 搜索服务应用层 DDoS 的请求可能看起来很正常,例如:
GET /api/search?keyword=phone
POST /login
GET /api/report/export
GET /api/products?filter=...问题在于,这些接口背后可能非常消耗资源:
搜索接口会查搜索引擎或数据库
登录接口会校验密码、创建 session
报表接口会进行大量统计计算
商品筛选接口可能触发复杂 SQL
下单接口可能涉及库存、优惠券、风控、支付等多个系统
所以应用层 DDoS 不一定需要很大的带宽。它可能只用相对较小的流量,就能把 CPU、线程池、数据库连接池或缓存系统拖垮。
典型特征
应用层 DDoS 常见表现包括:
带宽不一定很高
HTTP 请求量突然暴涨
某些 URL 被集中访问
CPU 升高
数据库慢查询增多
数据库连接池耗尽
Redis 或搜索服务压力异常
5xx 错误和超时明显增加
常见防御方式
应用层 DDoS 的防御更偏 业务和架构层:
WAF
接口限流
账号风控
验证码或挑战页面
Redis 缓存热点数据
页面和接口缓存
数据库查询优化
高成本接口排队
熔断和降级
异步任务
权限校验
请求行为分析
比如搜索、登录、注册、短信验证码、报表导出这类接口,通常都应该做更严格的限流和风控。
四、三种 DDoS 的核心区别
可以用一张表总结:
一个实用的判断方式是看哪个资源先被打满:
带宽满了:偏流量型
连接数/半连接/状态表满了:偏协议型
CPU/线程池/数据库满了:偏应用层
多个资源都满:混合型现实中的 DDoS 攻击经常不是单一类型,而是混合型。攻击者可能同时制造大流量、异常连接和高成本业务请求。因此防御也不能只靠某一个手段。
五、真实系统如何防御 DDoS
一个比较完整的防御体系通常是分层的:
用户 / 攻击流量
↓
CDN / 高防 / 云厂商清洗
↓
WAF
↓
负载均衡
↓
Nginx / API 网关
↓
后端服务
↓
数据库 / Redis / 搜索服务每一层解决不同问题:
CDN 和高防负责吸收大流量
WAF 负责识别异常 HTTP 请求
负载均衡负责分摊流量
网关负责限流、鉴权和熔断
后端负责业务级风控
数据库和缓存负责抗压优化
真正有效的 DDoS 防御,不是某一个配置项,而是一套体系:
上游清洗 + 连接保护 + WAF + 限流 + 缓存 + 监控告警 + 熔断降级六、总结
DDoS 的本质是 资源耗尽攻击。
三种常见类型可以这样记:
流量型 DDoS:堵路,让正常流量进不来
协议型 DDoS:卡门,让正常连接建不起来
应用层 DDoS:进门后消耗业务系统,让请求处理不了如果只是个人博客、小型网站或普通业务系统,最现实的防护方式通常是:
使用成熟云厂商
接入 CDN
开启基础 DDoS 防护
对登录、搜索、短信、报表等接口做限流
尽量缓存静态资源和热点数据
做好监控告警
遇到异常流量时能快速降级
理解 DDoS 不只是为了知道攻击怎么发生,更重要的是理解系统中哪些资源是瓶颈,以及应该在哪一层做防护。