网络流量基础:看懂正常,才能识别异常

做DDoS防护,说白了就是跟流量打交道。你连正常流量长什么样都不知道,怎么抓得出攻击?

我经常跟团队说一句话:“先学会看正常,再谈检测异常”。这一章,我们就从最基础的流量模型开始,把TCP/IP协议栈、UDP/TCP/HTTP/HTTPS/DNS这些常见流量的特征,一个一个捋清楚。

核心观点:正常流量有规律、有比例、有特征。攻击流量往往在这些维度上出现“突变”。你掌握了基线,就能一眼看出不对劲。

2.1 正常网络流量模型

正常流量不是随机乱跳的。它有几个明显特征:

  • 周期性:上班时间流量高,凌晨流量低。工作日和周末也有差异。
  • 比例稳定:TCP占大头(通常70%-90%),UDP次之,ICMP很少。
  • 包长分布集中:TCP以小包(ACK、SYN)和大包(数据段)为主,UDP包长相对固定。
  • 连接行为正常:三次握手完整,四次挥手正常,没有大量半连接或重传。

我个人习惯,在部署任何DDoS检测系统之前,先抓一周的流量做基线。你想想看,没有基线,你怎么定义“异常”?

实战技巧:用tcpdump抓24小时流量,统计各协议占比、包长分布、连接速率。把这些数据画成图,就是你最原始的“正常模型”。

2.2 TCP/IP协议栈回顾

TCP/IP协议栈,说白了就是四层模型。每一层干每一层的活,各司其职。

层级 名称 典型协议 核心作用
第4层 应用层 HTTP, HTTPS, DNS, FTP 为用户提供网络服务
第3层 传输层 TCP, UDP 端到端通信,数据分段与重组
第2层 网络层 IP, ICMP 路由寻址,包转发
第1层 网络接口层 以太网, Wi-Fi 物理传输,帧封装

我记得刚入行时,有个老工程师跟我说:“你只要把传输层搞透了,DDoS检测就学会了一半。” 这话一点不假。因为大部分DDoS攻击,都集中在传输层和应用层。

2.3 UDP与TCP流量特征

这两个协议,是流量分析的重中之重。它们的区别,直接决定了攻击手法的不同。

TCP流量特征

  • 面向连接:三次握手建立连接,四次挥手断开连接。
  • 可靠传输:有确认、重传、滑动窗口机制。
  • 流量特征明显:SYN包、SYN-ACK包、ACK包、数据包、FIN包,每种包都有固定大小和标志位。
  • 正常比例:SYN包约占所有TCP包的5%-10%,数据包占60%-70%,ACK包占20%-30%。

注意:如果SYN包占比突然飙升到30%以上,且大量SYN包没有对应的SYN-ACK响应,这基本就是SYN Flood攻击。我曾经在客户现场遇到过,业务直接瘫痪,连ssh都连不上去。

UDP流量特征

  • 无连接:发出去就不管了,没有确认机制。
  • 包长固定:很多UDP应用(如DNS、NTP、游戏)的包长是固定的。
  • 正常场景:DNS查询、视频流、VoIP、游戏数据。
  • 异常信号:UDP流量突然暴增,且源端口随机、目的端口固定,大概率是UDP Flood。

说白了,TCP攻击靠“耗尽连接资源”,UDP攻击靠“填满带宽”。两种攻击的检测思路完全不同。

2.4 HTTP/HTTPS流量特征

Web流量是DDoS攻击的重灾区。我处理过的攻击案例里,超过一半是冲着HTTP/HTTPS来的。

HTTP流量特征

  • 请求-响应模型:客户端发请求,服务器回响应。
  • 方法多样:GET、POST、PUT、DELETE等,正常业务中GET占绝大多数(70%-80%)。
  • 状态码分布:正常情况2xx占90%以上,4xx和5xx很少。
  • User-Agent:正常请求的User-Agent是浏览器或合法客户端,攻击流量往往用伪造或空User-Agent。
  • 请求间隔:正常用户有思考时间,攻击流量往往是毫秒级连续请求。

避坑指南:我曾经遇到一个案例,攻击者用大量GET请求刷一个静态页面,QPS飙到10万+。表面看是CC攻击,但仔细分析发现所有请求的Referer都一样,而且没有Cookie。这就是典型的“低慢速”攻击变种。

HTTPS流量特征

  • 加密传输:内容不可见,但TLS握手过程可见。
  • TLS握手特征:Client Hello、Server Hello、证书交换、密钥协商。
  • 攻击难点:加密流量让传统特征检测失效,但握手阶段的异常仍然可识别。
  • 常见攻击:HTTPS Flood、TLS重协商攻击、慢速攻击。

你想想看,HTTPS流量虽然加密了,但握手次数、证书大小、加密套件这些元数据还是暴露的。检测思路要从“看内容”转向“看行为”。

2.5 DNS流量特征

DNS流量平时不起眼,但一旦被利用,破坏力惊人。DNS放大攻击就是典型例子。

正常DNS流量特征

  • 查询类型:A记录(IPv4)占绝大多数,AAAA(IPv6)、MX、CNAME次之。
  • 包长:正常DNS查询包约50-60字节,响应包约100-500字节。
  • 频率:客户端对同一域名的查询有缓存,不会频繁请求。
  • 源端口:随机高位端口(1024-65535)。

DNS攻击流量特征

  • 查询量暴增:每秒数万甚至数百万次查询。
  • 源IP分散:攻击者伪造源IP,导致响应流量放大数十倍。
  • 查询类型异常:大量ANY或TXT查询,响应包特别大。
  • 目的端口固定:通常指向53端口。

严重警告:DNS放大攻击的放大倍数可以达到50-100倍。攻击者用1Mbps的伪造查询,就能打出50-100Mbps的响应流量。我曾经见过一个案例,攻击者利用开放DNS服务器,直接把客户的上行带宽打满,整个网络瘫痪。

2.6 知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作流量分析的“地图”。

网络流量基础知识体系 网络流量基础 · 知识体系 网络流量分析 正常流量模型 TCP/IP协议栈 UDP/TCP特征 HTTP/HTTPS特征 DNS特征 周期性 · 比例稳定 包长分布集中 连接行为正常 应用层 · 传输层 网络层 · 网络接口层 各层协议与封装 TCP:面向连接 · 可靠 UDP:无连接 · 不可靠 包长 · 标志位 · 比例 请求-响应模型 方法 · 状态码 · UA TLS握手 · 加密行为 查询类型 · 包长 频率 · 源端口 放大攻击特征 💡 核心思路:先建立正常基线,再通过“比例突变、包长异常、 连接行为异常”三大信号识别DDoS攻击

这张图把五个核心知识点串成了一个整体。你从“网络流量分析”出发,往五个方向展开,每个方向又有自己的子特征。做DDoS检测时,就是在这五个维度上同时做“偏差分析”。

个人建议:把这五个维度的正常基线做成仪表盘,实时监控。一旦某个维度出现“跳变”,立刻告警。我自己的团队就是这么干的,效果很好。

好了,这一章的内容就到这里。流量基础打牢了,后面讲攻击检测和应急响应,你才能听得懂、用得上。