DNS (Domain Name System)
一、引入为什么需要 DNS我们先回顾前置知识点在TCP/IP体系中依靠IP地址 端口号才能精准定位网络中一台主机上运行的具体程序。这时候有些同志就会产生疑问日常上网打开浏览器访问网站我们输入的是www.qq.com、www.baidu.com这类域名全程既没有手动填写IP地址也没输入端口号这背后是什么原理1. 端口号默认省略的原因浏览器访问网页时端口号和传输协议是强绑定的浏览器会自动补齐因此用户感知不到 比如HTTPS协议默认绑定443端口浏览器会自动带上该端口发起请求。2. 域名的本质作用我们输入的www.baidu.com这类字符串就是域名网络底层通信只能识别数字格式的IP地址域名必须经过转换解析翻译成对应的IP地址之后才能正常建立网络访问。结合套接字的基础知识点网络访问的必要条件一定是「IP地址 端口号」域名只是搭建在IP地址体系之上的上层配套生态。这套生态的核心工作把人类易记的字符串域名自动换算成机器识别的数字IP地址。设计 DNS 的核心初衷优化用户体验纯数字IP地址对普通用户极不友好普通人无法通过一串数字判断网站归属陌生IP地址用户不敢随意点击访问换成www.baidu.com、www.taobao.com这类域名用户一眼就能识别平台主体记忆、使用、辨别风险都更轻松。 所以DNS 存在的核心意义就是优化普通用户的上网使用体验。3. 域名与 IP 的映射关系域名最终必须和对应的IP地址建立绑定映射关系理想状态下域名与IP可以双向索引查找而DNS 的核心工作是接收域名查询匹配对应的IP地址。市面上的云服务商、运营商、权威域名管理机构已经提前搭建好了全球分布式的域名解析服务我们后续结合流程逐步理解。4. 域名映射方案的演进从本地hosts文件到 DNS 系统早期方案hosts本地映射文件最开始人们为了解决IP难记忆的问题设计了「主机名」本质就是一串字符依靠本机hosts文件维护「主机名 —IP地址」一对一映射。 早期全网统一由互连网信息中心 (SRI-NIC) 统一维护全局公用hosts文件最初通过互连网信息中心 (SRI-NIC) 来管理这个hosts文件的.如果一个新计算机要接入网络或者某个计算机IP变更都需要到信息中心申请变更hosts文件其他计算机也需要定期下载更新新版本的hosts文件才能正确上网。cat /etc/hostslfzU22:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 U22 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters这套方案的致命缺陷互联网规模扩张后完全无法落地。百度、腾讯、阿里、字节、快手等海量企业、个人站点都需要配置专属域名频繁修改、同步全局文件的工作量爆炸人工维护完全不现实因此分布式的DNS 系统应运而生。DNS 分布式系统的运行逻辑由对应组织机构的运维管理机构独立维护自身体系内所有主机「IP地址 — 域名」的映射关系新服务器、新站点接入网络时需要把自身域名与对应IP地址录入解析系统的数据库国内上线正式网站的完整流程举例 假设站点IP为1.2.3.4仅有IP无法合规上线必须完成域名备案① 在云服务商处购买专属域名② 将域名与自身服务器IP做绑定配置③ 向国内监管部门提交备案审核④ 审核通过后这条「域名 —IP」的绑定关系正式录入全网 DNS 解析数据库。整个备案流程本质就是把域名、IP的映射关系录入公共域名解析系统。用户侧完整解析流程当我们在浏览器、手机 APP 等客户端输入域名时客户端会自动向就近的本地 DNS 服务器发起解析请求DNS 服务器检索数据库拿到域名对应的目标IP地址将IP地址原路返回客户端客户端拿着解析得到的IP地址 默认端口和目标服务器建立网络通信。核心总结只需牢记这句日常使用域名访问网站底层一定会经过 DNS 解析把域名转换成机器识别的IP地址。DNS 是一整套从域名映射到IP的系统至今我们的计算机上仍然保留了hosts文件。在域名解析的过程中仍然会优先查找hosts文件的内容。二、域名层级结构详解以www.baidu.com举例域名是典型的树形分层结构从右向左层级依次升高.com顶级一级域名代表站点属性分类com商业盈利型企业站点net网络服务提供商org非营利公益组织edu教育院校机构 比如开源项目官网常用org后缀学校官网大多使用edu后缀。baidu二级域名一般对应企业、机构自身的专属名称是企业自主注册的核心标识。www行业习惯性前缀用法早期行业约定俗成的命名规范用来标识该主机对外提供网页HTTP/HTTPS服务 实际上访问baidu.com本身也可以正常打开百度首页www只是约定习惯不是域名的必要组成部分。整体一条完整域名从右至左依次是顶级域名→二级域名还可以继续向下拆分三级、四级子域名。三、完整域名递归解析全流程以本机浏览器访问www.baidu.com为例拆解一整条解析链路1. 发起请求的客户端浏览器、各类 APP、手机端应用都属于 DNS 解析客户端解析执行优先级顺序① 先查询本机缓存浏览器自身 DNS 缓存、操作系统级 DNS 缓存② 缓存命中直接取出IP地址无需后续网络查询③ 缓存失效 / 无缓存向就近本地 DNS 服务器发送解析请求。2. 本地 DNS 服务器全国各省、市都部署了专属本地 DNS 节点一般由运营商、阿里云、腾讯云、百度云这类大厂搭建维护距离用户网络近解析响应更快。 本地 DNS 服务器自身也会缓存解析记录命中缓存直接返回结果未命中则继续向上递归查询。3. 四级递归查询链路树形层级逐级向上根域名服务器用.标识全球最高层级的域名服务器不会直接返回目标站点IP只会告知当前域名归属的顶级域名服务器地址。示例本地 DNS 询问根服务器www.baidu.com的IP根服务器识别后缀是.com返回.com顶级域名服务器的IP地址让本地 DNS 继续去查询.com服务器。.com顶级域名服务器识别域名主体为baidu.com返回百度自家权威 DNS 服务器的地址指引本地 DNS 继续向百度权威服务器查询。百度自建权威 DNS 服务器大型互联网企业都会搭建自有权威解析服务器企业机房遍布全国用户量巨大解析需求高自建解析服务稳定性更强同时云厂商也会把这套解析能力对外开放作为增值业务售卖。 权威服务器中完整记录了www.baidu.com对应的真实服务器IP将该IP返回给本地 DNS 服务器。4. 结果回传与缓存落地本地 DNS 拿到最终IP后先把这条解析记录存入自身缓存后续同域名请求可直接复用将IP地址下发给用户本机客户端客户端本机也会把这条域名 —IP映射存入系统 DNS 缓存 整个完整解析过程对用户完全透明用户全程无感知。域名树形结构本质从根服务器→顶级域名服务器→二级域名权威服务器一层一层向下分发解析任务域名后缀决定归属的顶级分类企业域名对应自身权威节点整体构成一颗以根服务器为顶点的分布式树形体系。如上图所示域名结构是树状结构树的最顶端代表根服务器根的下一层就是由我们所熟知的.com、.net、.cn等通用域和.cn、.uk等国家域组成称为顶级域。网上注册的域名基本都是二级域名比如http://baidu.com、http://taobao.com等等二级域名它们基本上是归企业和运维人员管理。接下来是三级或者四级域名这里不多赘述四、实操工具dig命令观测完整 DNS 解析过程1. 工具安装CentOS/RHEL系统yum install bind-utilsUbuntu/Debian系统sudo apt update sudo apt install bind9-utils2. 执行解析查看指令dig www.baidu.com3. 返回结果关键字段解读lfzU22:~$ dig www.baidu.com ; DiG 9.18.39-0ubuntu0.22.04.4-Ubuntu www.baidu.com ;; global options: cmd ;; Got answer: ;; -HEADER- opcode: QUERY, status: NOERROR, id: 23873 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 303 IN A 36.152.44.132 www.baidu.com. 303 IN A 36.152.44.93 ;; Query time: 115 msec ;; SERVER: 114.114.114.114#53(114.114.114.114) (UDP) ;; WHEN: Tue Aug 04 04:21:52 CST 2026 ;; MSG SIZE rcvd: 74开头字段当前dig工具自身版本号status: NOERROR核心标识代表本次域名解析请求执行成功QUESTION SECTION本次发起的查询域名ANSWER SECTION解析最终返回结果会附带多条备选IP地址浏览器 / APP 会自行选择其中一个建立连接底部统计解析耗时、本次对接的 DNS 服务器地址、数据包大小等附属信息。补充小现状早年可以直接使用解析出来的IP地址访问百度、腾讯这类站点现在大厂服务做了限制仅通过裸IP无法直接打开网页了解这个现象即可。五、DNS 底层传输协议与缓存机制1. DNS 解析默认使用UDP协议端口 53第一层标准答案1句话破题“DNS默认用UDP核心是‘高频轻量’场景下的性能优先但UDP有长度和可靠性天花板所以TCP作为兜底和保障手段。”第二层分层拆解维度话术要点为什么优先UDP① 查询包小通常512字节无需三次握手一收一发即完成延迟最低。② DNS是互联网的“电话本”每分钟亿级查询TCP连接成本太高扛不住。UDP的致命短板①长度限制响应超过512字节如IPv6、DNSSECUDP会截断客户端收到TC标志位后必须重试TCP。②不可靠丢包不重传需要应用层自己设计超时重试DNS默认5秒重试。什么时候切TCP①响应过大截断标志位触发。②区域传送AXFR/IXFR主从DNS同步全量数据要求数据完整、顺序一致必须用TCP。③要求可靠如DNSSEC验证、大EDNS包协商失败时。第三层升华总结“这不是二选一而是策略路由——UDP负责95%的日常解析又快又轻TCP负责5%的异常和重任务又稳又全。真正的工程取舍是用UDP的超时重试机制扛住绝大多数场景用TCP的流控和重传兜底极端情况。”“那具体多大切TCP”“经典阈值是512字节但现代DNS支持EDNS扩展机制协商后可达4096字节。如果响应超过协商值或服务端不支持EDNS就会设置TC标志客户端自动切TCP重查。”2. DNS 多级缓存体系提升解析效率不会每次访问域名都完整走一遍四层递归查询链路全链路多级缓存规避重复查询客户端侧浏览器缓存、操作系统本机 DNS 缓存本地 DNS 服务器缓存各级域名服务器配套缓存、辅助服务器 缓存会设置有效期有效期内再次访问同域名直接读取缓存结果大幅缩短耗时原理和之前学的ARP缓存逻辑相近。Windows 系统查看本机 DNS 缓存实操打开CMD终端执行指令ipconfig /displaydns执行后可以查看系统内已经缓存的「域名 —IP」映射记录。 实操演示在终端ping www.baidu.com系统会自动完成解析并缓存这条记录再次执行查看指令就能在缓存列表中找到百度对应的解析条目。浏览器内部的 DNS 缓存查看方式比较隐蔽大家后面可以自行搜索学习。六、经典面试题浏览器输入 URL 后完整执行流程这是高频经典面试题没有标准答案梳理越细致得分越高梳理思路参考第一步本机多级 DNS 缓存校验未命中则完整执行 DNS 解析拿到目标服务器IP第二步基于解析出的IP与端口在应用层构建HTTP/HTTPS请求向下逐层拆解传输层封装、网络层路由寻址、数据链路层封装、配套ARP地址解析直至数据送达目标服务器可以按照七层网络结构完整梳理整条链路。当你在浏览器地址栏输入一个URL后回车将会发生的事情-CSDN博客文章浏览阅读5.2w次点赞57次收藏171次。本文深入探讨了当你输入网址时网络应用背后发生的详细步骤包括DNS查找、HTTP请求、服务器响应、HTML解析以及动态资源加载等关键环节。重点介绍了动态页面重定向、静态文件缓存、异步请求AJAX处理以及内容分发网络CDN的作用旨在全面展示网络应用的工作原理。https://blog.csdn.net/wuhenliushui/article/details/20038819/七、拓展根域名服务器布局与国内「雪人计划」1. 早期 IPv4 根服务器现状最初全球一共13 组逻辑 IPv4 根域名服务器早期 80% 的物理节点部署在北美地区欧洲、日本仅有少量节点。 互联网整体通信高度依赖根服务器一旦根服务器出现异常全网域名解析会整体瘫痪直播、电商、物流、线上业务等互联网经济体系都会受到严重冲击核心基础设施大量部署在海外存在潜在网络安全风险。2. 国内破局方案雪人计划由我国下一代互联网国家工程中心牵头发起雪人计划面向IPv6体系全球部署 25 台根服务器国内落地 1 台主根服务器 3 台辅根服务器彻底解决我国此前没有自建根服务器的短板完善国内互联网基础设施自主权。