计算机网络-DNS协议, ICMP协议,DDoS攻击
DNS协议, ICMP协议,DDoS攻击
DNS协议简介
DNS(Domain Name System,域名系统)是将域名解析为IP地址的网络协议,它是互联网的基础服务之一,使用最多的端口是53端口,默认使用UDP协议。
工作原理
DNS主要负责把人类易记的域名(如 www.example.com
)转化为计算机能识别的IP地址(如 93.184.216.34
),一般查询过程如下:
-
浏览器向本地DNS服务器发起递归查询。
-
本地DNS服务器如果没有缓存,会发起迭代查询,流程如下:
- 向根DNS服务器请求,得到顶级域(如
.com
)服务器地址。 - 向顶级域服务器请求,得到权威DNS服务器地址。
- 向权威DNS服务器请求,获取最终的IP地址。
- 向根DNS服务器请求,得到顶级域(如
-
返回解析结果,并在本地DNS服务器缓存。
DNS报文结构
DNS消息通常由五部分组成:
- Header(头部):包括事务ID、标志、问题数等(共12字节)。
- Question(问题):客户端查询的域名信息。
- Answer(回答):查询结果(IP地址等)。
- Authority(权威信息):权威服务器的域名信息。
- Additional(附加信息):提供额外信息(如服务器IP地址等)。
常见DNS记录类型
类型 | 含义 | 说明 |
---|---|---|
A | IPv4地址记录 | 将域名解析为IPv4地址 |
AAAA | IPv6地址记录 | 将域名解析为IPv6地址 |
CNAME | 别名记录 | 将一个域名别名映射到另一个域名 |
MX | 邮件交换记录 | 指定邮件服务器 |
NS | 名称服务器记录 | 指定权威DNS服务器 |
PTR | 反向解析记录 | IP地址映射为域名 |
TXT | 文本记录 | 存储任意文字信息,常用于验证 |
DNS的安全问题与解决方案
常见风险包括:
- DNS劫持:将请求重定向到错误IP
- DNS缓存投毒:篡改缓存中的解析结果
- 中间人攻击:伪造DNS应答
解决方法:
- DNSSEC:为DNS记录加签名,防止被篡改
- DoH(DNS over HTTPS):通过HTTPS加密DNS请求
- DoT(DNS over TLS):通过TLS加密DNS请求
常见公共DNS服务
服务商 | IPv4地址 | 特点 |
---|---|---|
8.8.8.8 / 8.8.4.4 | 稳定快速 | |
Cloudflare | 1.1.1.1 | 注重隐私保护 |
阿里DNS | 223.5.5.5 / 223.6.6.6 | 适合国内使用 |
百度DNS | 180.76.76.76 | 国内可用 |
ICMP协议简介
ICMP(Internet Control Message Protocol,互联网控制报文协议)是TCP/IP协议族中的一个网络层协议,用于在主机和路由器之间传递控制消息,如差错报告、诊断信息等。它通常与IP协议配合使用,用来增强IP协议的功能。
参考B站这个视频
ICMP的作用
-
差错报告
- 告知发送端在传输过程中发生的错误。
- 例如:目的地不可达、时间超时、参数问题等。
-
网络诊断
- 支持诸如
ping
、traceroute
等网络测试工具。 - 帮助用户检测目标主机是否可达及路径信息。
- 支持诸如
ICMP报文类型分类
ICMP报文分为两大类:
-
差错报文
- 目的不可达(Type 3)
- 源抑制(Type 4)
- 时间超时(Type 11)
- 参数问题(Type 12)
-
查询报文
- 回显请求与应答(Type 8 和 Type 0,ping使用)
- 路由器发现
- 时间戳请求与应答
常见ICMP报文类型示例如下:
类型号 | 类型名称 | 用途说明 |
---|---|---|
0 | Echo Reply | 回显应答 |
3 | Destination Unreachable | 目的不可达 |
5 | Redirect | 重定向(告诉主机更优路径) |
8 | Echo Request | 回显请求(ping命令使用) |
11 | Time Exceeded | 生存时间TTL耗尽 |
ICMP报文结构(以Echo为例)
ICMP回显请求/应答报文结构如下:
0 8 16 24 31
+---------------+---------------+---------------+---------------+
| Type | Code | Checksum |
+---------------+---------------+-------------------------------+
| Identifier | Sequence Number |
+------------------------------+-------------------------------+
| Payload(可选) |
+--------------------------------------------------------------+
- Type:报文类型编号(如 Echo Request 为 8)
- Code:具体子类型(如目的不可达的具体原因)
- Checksum:校验和
- Identifier/Sequence Number:用于匹配请求和应答
- Payload:可以是任意数据,一般用于测试连通性
ICMP与IP协议的关系
- ICMP协议本身依赖于IP协议进行传输,协议号为1。
- ICMP报文是封装在IP数据包中的,不属于TCP或UDP。
- ICMP报文不会跨越传输层,不具备端口号等概念。
安全性注意事项
- 由于ICMP提供了很多网络信息,它也可能被用于攻击(如 Ping Flood、Smurf Attack)。
- 某些服务器/防火墙会屏蔽 ICMP Echo,导致不能
ping
,但主机仍然在线。 - 防火墙和安全策略中经常对ICMP做限制或过滤。
DDoS攻击
DDoS 攻击,全称为 Distributed Denial of Service(分布式拒绝服务)攻击,是网络安全中一种非常常见且破坏性极强的攻击方式。它通过大量恶意流量同时向目标发起攻击,使目标服务器无法响应正常请求,进而“瘫痪”。
什么是DDoS攻击
DDoS 攻击的核心思想是:
利用多个分布在不同位置的攻击源(通常是被控制的肉鸡、僵尸网络),在同一时间向目标系统发送大量请求或流量,耗尽目标的带宽、CPU、内存等资源,最终让目标无法为正常用户提供服务。
这与普通的 DoS(Denial of Service,拒绝服务)攻击相比,其“分布式”让它更难防御。
DDoS攻击的常见类型
类型 | 简介 | 举例说明 |
---|---|---|
流量型攻击 | 利用大量的数据包耗尽带宽 | UDP Flood、ICMP Flood、DNS放大攻击 |
协议型攻击 | 消耗服务器处理连接的资源 | SYN Flood、Ping of Death |
应用层攻击 | 模拟正常用户操作,但请求频率高 | HTTP GET Flood、慢速POST攻击(Slowloris) |
下面是一些具体的攻击方式:
-
UDP Flood
- 不断发送大量UDP包,使目标处理不过来。
-
SYN Flood
- 利用TCP三次握手过程中“未完成的连接”堆积,耗尽连接资源。
-
ICMP Flood
- 发送大量ping请求,消耗CPU处理ICMP回应。
-
DNS放大攻击
- 攻击者向开放的DNS服务器伪造源地址为目标的请求,DNS服务器向目标返回大数据,从而造成“流量放大”。
-
HTTP Flood
- 模拟真实用户发送大量GET/POST请求,耗尽Web服务器的处理能力。
僵尸网络(Botnet)
DDoS攻击的执行基础往往是“僵尸网络”:
- 攻击者通过病毒、木马控制大量被感染设备(家庭路由器、摄像头、服务器等)。
- 这些设备被组成一个分布式网络,由攻击者统一指挥发动DDoS。
- 著名的僵尸网络:Mirai(曾使GitHub、Netflix、Twitter短时间瘫痪)
DDoS攻击的危害
- 导致网站或应用不可访问,造成经济损失;
- 干扰业务系统运行,破坏用户信任;
- 作为掩护,用于隐藏更复杂的入侵行为;
- 给网络提供商和安全团队带来极大压力。
如何防御DDoS攻击
-
高防服务
- 使用云防护平台,如阿里云高防、Cloudflare、腾讯云DDoS防护。
-
流量清洗
- 在运营商或边缘节点过滤恶意流量。
-
限流与黑白名单
- 设置IP访问频率限制,封禁异常请求。
-
CDN加速
- 将流量分散至多个边缘节点,减轻源站压力。
-
异常检测
- 使用入侵检测系统(IDS)识别异常行为。
-
隐藏源站
- 源服务器IP地址不公开,防止直接攻击。