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

深入理解 DNS:互联网的“电话簿”

当我们在浏览器中输入一个网址,比如 www.baidu.com,背后到底发生了什么?这其实离不开一个关键的网络基础设施 —— DNS(域名系统)。本篇博客将围绕以下四个关键问题,带你深入理解 DNS 的原理与实际运作:

  1. DNS 是什么?
  2. DNS 域名解析的流程?
  3. DNS 劫持和污染?
  4. DNS 用了什么传输协议?(TCP 还是 UDP)

一、DNS 是什么?

DNS(Domain Name System)即“域名系统”,是互联网中的分布式数据库系统,主要功能是将域名映射为 IP 地址,也就是我们常说的“域名解析”。

因为人类更容易记住域名,而计算机之间通信只能使用 IP 地址,所以 DNS 的存在大大提升了互联网的可用性。

举个例子:

当你访问 www.taobao.com,DNS 服务器会将它解析为一个 IP 地址,比如 140.205.220.96,然后你的计算机就可以和这个 IP 建立连接,实现网页访问。


二、DNS 域名解析的流程

域名解析其实是一个分层递归查询的过程,下面是完整流程的详解:

1. 浏览器缓存

浏览器会首先查找本地是否缓存过该域名对应的 IP,如果找到了,就直接使用,节省解析时间。

2. 操作系统缓存

若浏览器缓存中没有,系统会检查操作系统维护的 DNS 缓存(如 ipconfig /displaydns 可以查看 Windows 下的 DNS 缓存)。

3. 本地 DNS 服务器(递归解析器)

如果本地没有缓存,系统会将请求发送到 ISP(网络运营商)配置的本地 DNS 服务器,这个服务器会负责递归查询过程。

举个例子:你访问 www.baidu.com

  1. 浏览器将请求发给本地 DNS;
  2. 本地 DNS 向根服务器、TLD 服务器、权威服务器等一步步查询;
  3. 拿到结果后返回给浏览器。

➡️ 客户端“只问一次”,本地 DNS“跑断腿”。

4. DNS 服务器之间迭代查询过程

本地 DNS 服务器依次向以下服务器查询:

  • 根域名服务器(Root DNS):返回顶级域服务器地址(如 .com 的服务器);
  • 顶级域名服务器(TLD DNS):返回权威域服务器地址;
  • 权威 DNS 服务器(Authoritative DNS):返回最终 IP 地址。

最终本地 DNS 服务器将 IP 返回给客户端,同时缓存结果以加快下次查询。

例如,你要访问“www.apple.com”,就要进行下面的三次查询:

  1. 访问根域名服务器,它会告诉你“com”顶级域名服务器的地址;
  2. 访问“com”顶级域名服务器,它再告诉你“apple.com”域名服务器的地址;
  3. 最后访问“apple.com”域名服务器,就得到了“www.apple.com”的地址。

虽然核心的 DNS 系统遍布全球,服务能力很强也很稳定,但如果全世界的网民都往这个系统里挤,即使不挤瘫痪了,访问速度也会很慢。

所以在核心 DNS 系统之外,还有两种手段用来减轻域名解析的压力,并且能够更快地获取结果,基本思路就是“缓存”。

➡️ 每一层“只指路”,最终结果靠发起者拼出来。


三、DNS 劫持和污染

DNS 的开放性和明文传输方式,使其成为攻击者的目标。两种常见的攻击方式是:

1. DNS 劫持(DNS Hijacking)

攻击者通过篡改 DNS 查询路径,将原本访问的域名重定向到恶意网站或广告页面。

常见方式:
  • 修改本地 hosts 文件
  • 路由器被篡改
  • 运营商劫持 DNS 响应
后果:
  • 访问网站被篡改
  • 中毒、丢失账户信息

2. DNS 污染(DNS Spoofing / DNS Cache Poisoning)

攻击者向 DNS 缓存中注入虚假解析记录,让你访问的是一个伪造的 IP 地址。

特点:
  • 通常发生在 DNS 服务器之间的数据传输过程中;
  • 伪造响应比真正的响应先到达 DNS 服务器,就会被错误缓存;
  • 用户即使访问正确的域名,也会被导向错误的地址。

🔐 防御措施:

  • 使用可信 DNS,如 8.8.8.8(Google)、1.1.1.1(Cloudflare);
  • 开启 DNS 加密传输协议(DoH、DoT);
  • 检查路由器安全配置,避免被第三方劫持;
  • 避免连接来路不明的 WiFi 网络。

四、DNS 用了什么传输协议?(TCP 还是 UDP)

DNS 查询本质上是客户端与服务器之间的通信。那么它是用哪种传输协议完成的呢?

✅ 默认使用 UDP 协议(端口号 53)

  • DNS 查询对实时性要求高,UDP 是无连接协议,速度快;
  • 普通 DNS 查询的数据包较小,UDP 能够胜任;
  • 无需建立连接,效率高、资源占用低。

📦 什么时候使用 TCP?

  • 当 DNS 响应的数据超过 512 字节(如带有大量记录的响应);
  • 使用 DNSSEC 或长记录时;
  • 执行 区域传输(Zone Transfer) 操作;
  • UDP 查询失败,自动回退为 TCP。

📊 协议对比表:

场景

协议

端口

普通查询(A记录、CNAME等)

UDP

53

响应过大 / 安全验证

TCP

53

加密 DNS(DoH、DoT)

HTTPS/TLS

443/853


✍️ 总结

DNS 是互联网背后最基础的“翻译官”,帮助我们用文字记住网站,用 IP 建立连接。掌握它的工作机制、安全隐患以及通信协议,不仅有助于理解网络底层原理,也能帮助我们提升网络安全意识。

相关文章:

  • 【DPI】精讲深度数据包检测技术基础
  • Oracle数据库数据编程SQL<3.3 PL/SQL 游标>
  • 关于中文编程的一些思考
  • 使用 Cheerio 和 Node.js 进行网络抓取
  • 数据结构初阶:单链表
  • golang strings包常用方法
  • [MySQL] 库的操作 表的操作
  • Unity光线传播体积(LPV)技术实现详解
  • 基于Java(SSM)+Mysql实现移动大厅业务办理(增删改查)
  • 行业智能体大爆发,分布式智能云有解
  • 视觉风格提示词:Visual Style Prompting with Swapping Self-Attention(风格迁移)
  • Dubbo(24)如何配置Dubbo的监控中心?
  • 深度学习之卷积
  • 【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2DEffector效应器
  • Rust 所有权与引用
  • 要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目
  • RabbitMQ--延迟队列事务消息分发
  • 全面守护关键基础设施!Fortinet OT 安全平台功能与服务再扩展
  • Level DB --- TableCache
  • 【Elasticsearch入门到落地】10、初始化RestClient
  • 网站备案网址/荥阳seo
  • 网站制作知名公司/关键词推广操作
  • 深圳网站建设大概多少钱/国外seo工具
  • 网站主页设计要点/seo网络推广有哪些
  • 易云巢做网站公司/花钱推广的网络平台
  • 常州网站建设方案/上海优化seo