← 返回题目列表

什么是 DDoS 攻击?有哪些类型?如何防御?

高频 中等 第 6 / 27 题 更新于 2026/07/28
DDoS网络安全流量攻击CC攻击

简化版

DDoS(分布式拒绝服务攻击)是用大量被控制的机器(僵尸网络)同时向目标发起海量请求/流量,把目标的带宽、连接数或服务器资源耗尽,导致正常用户无法访问。它和 DoS 的区别就是「分布式」——攻击源是成千上万个 IP,很难靠封 IP 挡住。防御靠流量清洗、CDN/高防 IP、限流、弹性扩容等多层手段。

详细版

DDoS 的本质:不是「攻破」系统,而是「压垮」系统——用超出承载能力的请求量把资源占满,让服务不可用。因为攻击流量来自大量分散的真实/伪造 IP,防御方很难区分「攻击流量」和「正常流量」,也没法简单封几个 IP 了事。

常见类型(按攻击的资源层次分):

  • 流量型(网络层/传输层):用海量流量塞满目标带宽。如 UDP Flood、ICMP Flood、SYN Flood(伪造 SYN 塞满半连接队列,详见「TCP 半连接队列」那道题)、反射放大攻击(利用 DNS/NTP 等把小请求放大成大流量)。
  • 应用层(七层):模拟正常请求消耗服务器资源。如 CC 攻击(大量 HTTP 请求打向消耗大的接口,如复杂查询)、慢连接攻击(Slowloris)(故意慢慢发请求,长期占住连接不释放)。应用层攻击流量小但更难识别(看起来像正常用户)。

防御手段

  • 流量清洗:把流量牵引到清洗中心,过滤掉攻击流量、放行正常流量后再回源;
  • CDN / 高防 IP:用 CDN 分散流量、隐藏源站真实 IP,高防 IP 提供大带宽和清洗能力扛住流量;
  • 限流与验证:对单 IP/用户限流、加验证码/人机验证区分真人和机器;
  • SYN Cookie:抵御 SYN Flood(不占半连接队列);
  • 弹性扩容:云环境下自动扩容分摊压力(但成本高,非长久之计)。

完整版教学

一、DoS vs DDoS:分布式带来的质变

先分清两个概念:

  • DoS(拒绝服务)单个攻击源发起攻击。防御相对简单——封掉那个源 IP 就行。
  • DDoS(分布式拒绝服务):攻击者控制成千上万台被入侵的设备(僵尸网络 Botnet,包括被感染的电脑、IoT 设备)同时发起攻击。

「分布式」带来了质变:攻击源是海量、分散、且往往是真实的 IP(被控的正常设备),防御方无法靠封几个 IP 解决,也很难区分「攻击流量」和「正常用户流量」。这就是 DDoS 难防的根本原因——它把「几个坏人」变成了「淹没一切的人海」。

二、攻击的三个层次:打带宽、打连接、打应用

DDoS 攻击瞄准的是系统的不同「瓶颈资源」,理解这个才能对症防御:

  • 打带宽(流量型):用巨大的流量(几十上百 Gbps)把目标的网络带宽塞满,正常流量挤不进来。如 UDP Flood、反射放大攻击。防御要靠大带宽 + 流量清洗,普通服务器扛不住,得靠高防/CDN。
  • 打连接(协议型):耗尽连接资源。如 SYN Flood 塞满半连接队列(详见「TCP 半连接队列」那道题)、大量 TCP 连接占满连接数。防御靠 SYN Cookie、连接数限制。
  • 打应用(应用层):用看起来正常的请求消耗服务器/数据库资源。如 CC 攻击专打消耗大的接口(复杂搜索、报表导出),Slowloris 用慢请求长期占住连接。流量不大但很阴险——难和真实用户区分。

三、反射放大攻击:小流量撬动大流量

流量型 DDoS 里有一类特别高效的反射放大攻击,值得单独理解:

  • 攻击者伪造受害者的源 IP,向一些「请求小、响应大」的公开服务(DNS、NTP、Memcached 等)发请求;
  • 这些服务把巨大的响应发给了「源 IP」——也就是受害者
  • 一个小请求能放大成几十上百倍的响应流量(如 Memcached 放大可达上万倍)。

攻击者用很小的成本(少量伪造请求)就能砸出巨大的流量。防御方看到的是「来自大量正常服务器的响应流量」,更难处理。这也是为什么运营商要治理这些可被利用的开放服务。

四、应用层攻击为什么更难防

流量型攻击「看流量大小」就能识别,但**应用层攻击(CC)**流量不大、每个请求都像正常用户:

  • 它发的是合法的 HTTP 请求(如反复请求一个耗数据库的搜索接口);
  • 单看某个请求,和真实用户毫无区别;
  • 但大量这样的请求叠加,就能把数据库/应用线程池打满。

所以应用层防御要靠行为分析:单 IP 请求频率、访问模式是否异常、人机验证(验证码、JS 挑战)区分真人和脚本,以及对昂贵接口做限流和缓存。

五、防御体系:没有银弹,只有纵深

DDoS 没有「一招防死」的办法,靠的是多层纵深

  1. 前置分散:用 CDN 把流量分散到全球节点、隐藏源站真实 IP(攻击者找不到源站就打不准);
  2. 流量清洗 / 高防 IP:超大带宽承接流量,在清洗中心识别并过滤攻击流量,把干净流量回源;
  3. 协议层加固:SYN Cookie、连接数/速率限制;
  4. 应用层防护:接口限流、缓存、人机验证、WAF 识别异常请求;
  5. 弹性与预案:云上弹性扩容分摊、准备应急预案(虽然扩容是「烧钱换时间」,不是终极方案)。

核心思路:能扛的扛(大带宽清洗)、能挡的挡(识别过滤)、能藏的藏(隐藏源站)、能限的限(限流验证)。

六、常见误区

  • ❌ 以为 DDoS 能靠封 IP 解决——攻击源是海量分散的真实 IP,封不过来。
  • ❌ 以为 DDoS 是「攻破」系统——它是「压垮」资源让服务不可用,不一定拿到权限。
  • ❌ 以为流量小就不是 DDoS——应用层 CC 攻击流量不大但能打垮数据库/应用。
  • ❌ 以为弹性扩容就能防——扩容是烧钱换时间,扛不住大流量且成本失控,要配合清洗/CDN。

六、常见误区与追问

考点正确口径
容量型消耗带宽,如 UDP Flood
协议型消耗网络/传输层状态,如 SYN Flood
应用层消耗业务资源,如 HTTP 慢请求或高成本接口
botnet -> CDN/cleaning center -> origin
L3/L4: filter traffic patterns
L7: rate limit, challenge, cache, degrade expensive APIs

DDoS 防护不是单点代码优化,而是带宽、清洗、限流、缓存和降级的组合拳。

  • 误区:加几台应用服务器就能抗所有 DDoS。 容量型攻击先打满带宽,应用服务器还没机会处理请求。
  • 误区:DDoS 都是 HTTP 请求。 攻击可发生在网络层、传输层和应用层,形态差异很大。
  • 误区:限流越严格越安全。 过严限流会误伤正常用户,必须结合画像、挑战和分级策略。
  • 追问:SYN Flood 怎么缓解? 可用 SYN Cookie、调大队列、清洗设备和连接限速等组合。
  • 追问:CDN 为什么能抗一部分 DDoS? CDN 分散入口、缓存静态内容,并可在边缘做清洗和限流。
  • 追问:应用层 DDoS 难在哪里? 请求看起来像正常业务流量,需要识别异常成本、频率和行为模式。

七、加强记忆

DDoS 是用僵尸网络的海量分散 IP 同时发请求/流量,压垮目标的带宽、连接或服务器资源使服务不可用;和 DoS 的区别是「分布式」导致无法靠封 IP 解决。类型分流量型(UDP/SYN Flood、反射放大,打带宽)、协议型(打连接)、应用层(CC/Slowloris,打应用,流量小难识别)。防御靠 CDN 隐藏源站 + 流量清洗/高防 IP + 限流验证 + 协议加固的纵深体系,没有银弹。