当前位置: 首页 > news >正文

DNS协议

目录
  • 基本概念
  • 递归和迭代
  • 域名缓存
  • 域名解析过程
  • DNS安全问题
  • HTTPDNS
  • 命令

基本概念

DNS(Domain Name System,域名系统)是互联网的核心基础设施之一,它的主要作用是将人类易于记忆的域名(如www.baidu.com)转换为计算机能够识别的IP 地址(如180.101.50.242),从而实现网络设备之间的通信。
img
img
img

根域名服务器:提供顶级域名服务器(TLD)的地址,不直接解析具体域名
顶级域名服务器:返回该顶级域名下二级域名对应的权威域名服务器地址
权威域名服务器:仅管理特定域名(如example.com、baidu.com)及其子域名(如blog.example.com)的解析记录。

递归和迭代

img

域名缓存

  1. 浏览器缓存:有固定的缓存时间
  2. 操作系统缓存:hosts文件
    在浏览器中进行访问的时候,会优先查询浏览器缓存,如果未命中则继续查询操作系统缓存,最后再查询本地域名服务器,然后本地域名服务器会递归查找域名记录,最后返回结果。主机和本地域名服务器之间的查询方式是递归查询,也就是说主机请求本地域名服务器,那么本地域名服务器作为请求的接收者一定要给主机想要的答案。

域名解析过程

当本地 DNS 首次解析 www.qq.com 时

理论上:
本地 DNS 不知道 .com 服务器的地址,会先查询根服务器;
根服务器返回 .com 顶级域名服务器的地址列表;
本地 DNS 再向 .com 服务器查询 qq.com 的权威服务器地址,以此类推。

实际上:
本地 DNS 早已通过初始化配置或历史查询,缓存了所有顶级域名(.com、.cn 等)对应的根服务器返回结果(即 TLD 服务器的地址)
当解析域名时,本地 DNS 会直接使用缓存的 TLD 服务器地址,跳过 “查询根服务器” 这一步,直接向 TLD 服务器发起请求。

针对www.qq.com,对 TLD 发起 NS 查询的结果如下:
相当于是去问com. qq.com. 的权威服务器在哪里?

; <<>> DiG diggui.com <<>> @b.gtld-servers.net www.qq.com NS  # 使用 dig 工具,强制向 .com 顶级域名服务器之一(e.gtld-servers.net)发送查询,请求获取 www.qq.com 的 SOA 记录
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40384
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 17
;; WARNING: recursion requested but not available;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qq.com.			IN	NS;; AUTHORITY SECTION:
qq.com.			172800	IN	NS	ns1.qq.com.
qq.com.			172800	IN	NS	ns2.qq.com.
qq.com.			172800	IN	NS	ns3.qq.com.
qq.com.			172800	IN	NS	ns4.qq.com.;; ADDITIONAL SECTION:
ns1.qq.com.		172800	IN	A	101.227.218.144
ns1.qq.com.		172800	IN	AAAA	2402:4e00:c050:7a00::3
ns2.qq.com.		172800	IN	A	111.230.158.42
ns2.qq.com.		172800	IN	AAAA	240e:9f:c600::8
ns3.qq.com.		172800	IN	A	117.184.232.216
ns3.qq.com.		172800	IN	A	120.233.255.187
ns4.qq.com.		172800	IN	A	125.39.202.11
ns4.qq.com.		172800	IN	A	170.106.32.66;; Query time: 34 msec
;; SERVER: 2001:503:231d::2:30#53(2001:503:231d::2:30)
;; WHEN: Thu Jul 24 07:50:38 UTC 2025
;; MSG SIZE  rcvd: 391

告诉查询者:www.qq.com 属于 qq.com 的子域,qq.com 的权威服务器是 ns1.qq.com 到 ns4.qq.com,你应该去问它们

针对www.qq.com,对 权威服务器 ns1.qq.com 发起 A 查询的结果如下:

; <<>> DiG diggui.com <<>> @ns1.qq.com www.qq.com A
; (5 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49244
;; flags: qr rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 18
;; WARNING: recursion requested but not available;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qq.com.			IN	A;; AUTHORITY SECTION:
www.qq.com.		86400	IN	NS	ns-cnc1.qq.com.
www.qq.com.		86400	IN	NS	ns-tel1.qq.com.;; ADDITIONAL SECTION:
ns-cnc1.qq.com.		3600	IN	A	157.255.6.102
ns-cnc1.qq.com.		3600	IN	AAAA	240e:e1:aa00:2002::3
ns-tel1.qq.com.		3600	IN	A	14.116.238.220
ns-tel1.qq.com.		3600	IN	AAAA	240e:e1:aa00:2002::3;; Query time: 212 msec
;; SERVER: 2402:4e00:c050:7a00::3#53(2402:4e00:c050:7a00::3)
;; WHEN: Thu Jul 24 08:38:46 UTC 2025
;; MSG SIZE  rcvd: 446

告诉查询者:www.qq.com 的权威服务器是 ns-cnc1.qq.com 到 ns-tel1.qq.com,你应该去问它们 www.qq.com 的 A 记录

针对www.qq.com,对 权威服务器 ns-cnc1.qq.com 发起 A 查询的结果如下:

; <<>> DiG diggui.com <<>> @ns-tel1.qq.com www.qq.com A
; (4 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19965
;; flags: qr aa rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qq.com.			IN	A;; ANSWER SECTION:
www.qq.com.		300	IN	CNAME	www.qq.com.eo.dnse2.com.;; Query time: 207 msec
;; SERVER: 240e:e1:aa00:2002::3#53(240e:e1:aa00:2002::3)
;; WHEN: Thu Jul 24 08:42:52 UTC 2025
;; MSG SIZE  rcvd: 73

告诉查询者:www.qq.com.的cname记录为www.qq.com.eo.dnse2.com

针对www.qq.com.eo.dnse2.com,对 TLD 发起 NS 查询,结果如下:
dnse2.com. 172800 IN NS ns1.qeodns.com.

针对www.qq.com.eo.dnse2.com,对权威服务器 ns1.qeodns.com 发起 A 查询的结果如下:
www.qq.com.eo.dnse2.com. 60 IN A 43.152.182.103

img
img

DNS安全问题

DNS是明文传输,容易被窃听、篡改和劫持。

DNS劫持:发送DNS请求被中间人拦截,并返回给你一个恶意网址的IP或者重定向到其他DNS服务器。
从DNS的请求路径来看,
第一步是浏览器,如果是不正经的浏览器,可以拦截DNS请求,并返回恶意网址的IP。
第二步是Hosts文件,如果被恶意修改了Hosts文件,也可以返回恶意网址的IP。
第三步是本地DNS服务器,比如连上了黑客的免费wifi,也可能会被劫持。

DDOS攻击
攻击者利用开放 DNS 解析器的功能产生大量流量,使目标服务器或网络不堪重负,导致服务器及其周围基础设施无法访问。

DNS缓存污染
攻击者可以仿冒权威DNS服务器向缓存DNS服务器发送伪造应答包,力争抢先完成应答以污染DNS缓存。

HTTPDNS

HTTPDNS是一种基于 HTTP 协议的域名解析服务,其核心原理是通过绕过本地 DNS 服务器,直接向云端 HTTPDNS 服务器发送解析请求,从而解决传统 DNS 协议在安全性、精准性和稳定性上的不足。

HTTPDNS 的核心工作流程

  1. 客户端初始化
    SDK 接入:移动应用集成 HTTPDNS SDK(如阿里云、腾讯云提供的 SDK),SDK 内置 HTTPDNS 服务器的初始 IP 列表(如http://httpdns.aliyun.com)
    动态更新 IP 列表:SDK 首次运行时,通过 HTTP 请求从服务端获取最新的 HTTPDNS 服务器 IP 列表,并缓存到本地,确保后续请求能连接到可用节点

  2. 域名解析请求
    请求封装:客户端通过 SDK 发起 HTTP 请求,参数包含待解析的域名(如www.qq.com)和鉴权信息(如签名、Token)。
    协议选择:
    HTTP:默认使用 HTTP 协议,端口 80,适合对安全性要求较低的场景。
    HTTPS:通过 TLS 加密传输,端口 443,防止数据被窃听或篡改,适用于金融、政务等敏感场景

  3. 服务端智能调度
    HTTPDNS 服务器集群(通常部署在多运营商、多地域节点)执行以下操作:
    递归查询:通过自建 DNS 集群或权威 DNS 服务器获取域名的真实 IP 地址(如 A 记录、CNAME 记录)
    智能决策:
    IP 定位:根据客户端请求的源 IP,识别其地理位置(如中国广东深圳)、运营商(如中国移动)
    负载均衡:结合服务器负载、网络质量(如延迟、丢包率)和业务策略(如优先返回 CDN 节点 IP),筛选出最优 IP 地址
    动态调整:若某个节点故障或延迟过高,自动切换到备用节点,确保服务可用性

  4. 响应与缓存管理
    结果返回:HTTPDNS 服务器以 JSON/XML 格式返回解析结果
    客户端缓存:
    内存缓存:SDK 将解析结果缓存在内存中,有效期由服务端返回的 TTL 控制,下次查询直接命中缓存,实现 “0ms 解析延迟”。
    持久化存储:解析结果同时写入本地文件或数据库,APP 重启后可快速加载常用域名的 IP,减少重复请求。
    缓存更新策略:
    主动更新:当服务端检测到域名解析结果变更时,通过推送或定时任务通知客户端刷新缓存。
    懒更新:缓存过期后,客户端在下次请求时自动触发更新,确保解析结果的实时性

命令

sudo yum install bind-utils -y
dig @8.8.8.8 www.qq.com A

www.qq.com. 300 IN SOA ns-tel1.qq.com. webmaster.qq.com. 1380440321 300 600 86400 300

SOA(Start of Authority,起始授权记录)是 DNS 区域文件(权威服务器存储域名解析记录的配置文件)中的第一条记录,仅存在于权威 DNS 服务器中,用于标识 “这个服务器是该域名的权威管理者”,并定义该域名的管理规则(如主从服务器同步机制、记录版本号等)。
当其他服务器(如递归 DNS 服务器)查询某个域名的解析记录时,若需要确认 “谁是该域名的权威服务器”,或需要获取该域名的管理元数据(如版本号、刷新时间),会向权威服务器请求并获取 SOA 记录。
简单说:SOA 记录是权威服务器 “自证身份” 的凭证 —— 通过 SOA 记录,其他服务器能确认 “这个服务器确实有权管理该域名”,以及 “如何与它同步记录”。

主服务器是域名解析数据的 “原创者”,其他 NS 服务器(主要是从服务器)是 “同步者” 和 “备份者”。它们通过 SOA 记录定义的规则(刷新时间、序列号等)保持数据一致,共同被 NS 记录声明为该域名的权威服务器,协作提供稳定、高效的解析服务。

---未完待续---

http://www.sczhlp.com/news/1037.html

相关文章:

  • Python数据结构(列表、字典、元祖)
  • C#调用邮箱应用发送带附件的邮件
  • Air780EGH定位开发速成指南:源代码公开,即学即用
  • Splunk Enterprise 10.0.0 发布,新增功能简介
  • Studio 3T 2025.13 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-24- 操作Select下拉选择框 - 上篇(详细教程) - 北京
  • delphi7 中文企业版编译minipad2
  • 【PCIE725-1 】基于 PCIe x16 总线架构的 JFM9VU9P FPGA 高性能数据预处理平台(100%国产化)
  • Prometheus源码专题【左扬精讲】—— 监控系统 Prometheus 3.4.0 源码解析:Discovery 动态服务发现机制
  • 在运维工作中,Docker的运行状态有哪些?
  • BZOJ 4641 题解
  • APP UI自动化元素定位高频问题
  • 通义灵码保姆级教程:从数据读取、清洗、结合大模型分析、可视化、生成报告全链路
  • 在运维工作中,docker file 用什么构建容器的?
  • 一维光栅结构严格耦合波分析(RCWA)求解器
  • rust学习笔记之基础:类型系统和类型转换
  • 在运维工作中,Docker的基本命令有哪些?
  • 云原生周刊:2025年的服务网格
  • 故障处理:troubleshooting Cluster Time Synchronization Service
  • 在运维工作中,镜像启动一个容器的命令的什么?
  • python命令行解析模块argparse
  • 学习笔记:一次RMAN还原慢的分析
  • 抖音Next-User Retrieva:生成式冷启动召回
  • 求两个自然数a和b的最大公约数(递归算法)
  • nginx压缩字体ttf的有关配置
  • 如何选择工业电脑?
  • 教你创业SUS
  • 使用 nacos-sdk-csharp 服务订阅机制动态更新Yarp配置的简易Demo
  • Three.js 的第一个工程-创建一个场景
  • nginx配置文件生产环境优化