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

DNS协议解析过程

一、什么是DNS协议

DNS是域名系统(Domain Name Service)的缩写,我们通常用来识别主机的方式有两种,一种是通过主机名,另外一种是通过IP地址。主机名便于我们的记忆,而路由器则更喜欢定长的、有着层次结构的IP地址。所以需要一个能将域名转变到IP地址的目录服务,这就是域名服务器存在的意义。

二、DNS解析过程

1. 浏览器缓存检查

浏览器会先检查自己是否有 www.example.com 的DNS缓存记录。如果有,直接使用。

2. 操作系统缓存检查

如果浏览器没有,操作系统(OS)会查看本机的DNS缓存。

3. hosts 文件检查(可选)

某些操作系统(如Windows和Linux)会检查本地的 hosts 文件,看是否有该域名的静态映射。

4. 发送DNS请求给本地域名服务器(递归DNS服务器)

如果本机没有缓存,系统会将查询请求发送给配置的 本地DNS服务器(通常是你路由器、ISP或设置的公共DNS,如8.8.8.8)。

此时,本地DNS服务器会开始递归查询

5. 查询根DNS服务器

  • 本地DNS服务器先向 根DNS服务器 请求 www.example.com。
  • 根DNS服务器不负责解析具体域名,但会告诉你:“.com 顶级域名的TLD服务器地址是 XX”。

6. 查询顶级域(TLD)DNS服务器

  • 本地DNS服务器向 .com 的 TLD DNS服务器 发送查询请求。
  • .com 的TLD服务器会回应:“example.com 的权威DNS服务器地址是 YY”。

7. 查询权威DNS服务器

  • 本地DNS服务器向 权威DNS服务器 请求 www.example.com 的 IP 地址。
  • 权威DNS服务器返回对应的 IP,比如:93.184.216.34。

8. 本地DNS服务器将结果缓存,并返回给客户端

  • 本地DNS服务器把这个IP地址保存到本地缓存中(根据TTL时间),并返回给你的电脑。

9. 客户端接收到IP地址,开始访问网站

  • 你的浏览器使用这个IP地址向服务器发起HTTP或HTTPS连接,请求网页内容。

三、DNS的查询方式

1. 递归查询 (Recursive Query)

在递归查询中,DNS 客户端(通常是本地 DNS 解析器)向 DNS 服务器发出查询请求。该服务器如果无法直接回答客户端的问题,它会代表客户端进行查询,直到找到最终的答案并返回给客户端。

  • 流程

    1. 客户端发送查询请求给本地 DNS 服务器。

    2. 如果本地 DNS 服务器知道答案,它直接返回。如果不知道,它会通过其他 DNS 服务器查询。

    3. 递归查询通常从根 DNS 服务器开始,然后逐级向下查询,直到获得答案。

    4. 最后,解析结果返回给客户端。

  • 特点

    • 客户端只需要等待最终的结果,不需要知道具体的查询路径。

    • 负担主要由 DNS 服务器承担。

2. 迭代查询 (Iterative Query)

在迭代查询中,DNS 客户端向 DNS 服务器发送查询请求。如果该服务器无法直接回答请求,它不会继续向下查询,而是返回一个指向其他 DNS 服务器的建议地址(通常是下级 DNS 服务器)。

  • 流程

    1. 客户端向本地 DNS 服务器发送查询请求。

    2. 本地 DNS 服务器检查是否有答案。如果没有,它会返回一个上级 DNS 服务器的地址给客户端。

    3. 客户端再向上级 DNS 服务器发出查询请求,依此类推,直到获得最终的答案。

  • 特点

    • 客户端需要知道如何进行多次查询,并且需要解析中间返回的服务器地址。

    • 每个 DNS 服务器只负责给出下一个可能的答案,而不是递归查找。

http://www.lryc.cn/news/586715.html

相关文章:

  • 前端进阶之路-从传统前端到VUE-JS(第五期-路由应用)
  • 开发语言中关于面向对象和面向过程的笔记
  • 【Qt开发】Qt的背景介绍(一)
  • docker容器高级管理-dockerfile创建镜像
  • RabbitMQ面试精讲 Day 2:RabbitMQ工作模型与消息流转
  • Netty主要组件和服务器启动源码分析
  • EWSGAN:自动搜索高性能的GAN生成器架构
  • Kotlin 类和对象
  • JS红宝书pdf完整版
  • HarmonyOS组件/模板集成创新活动-开发者工具箱
  • 2025.7.13总结
  • Nature子刊 |HERGAST:揭示超大规模空间转录组数据中的精细空间结构并放大基因表达信号
  • 直流/直流电源模块:无干扰布线,避免电磁干扰的技术方案
  • C++高级编程,类模版成员函数类外实现
  • 第三章-提示词-探秘大语言基础模型:认知、分类与前沿洞察(9/36)
  • 《Linux篇》自动化构建-make/Makefile
  • 咪咕盒子Mgv3200_mgv3201九联UNT403G_UNT413G烽火HG680-GC通刷优盘强刷包及TTL线刷烧录救砖包 当贝纯净版固件
  • 基于SpringBoot3集成Kafka集群
  • CentOS 7 升级系统内核级库 glibc 2.40 完整教程
  • docker运行redis指定配置+jdk17安装在centos7
  • C#单例模式管理全局变量
  • 【Linux 学习指南】网络基础概念(一):从协议到分层,看透计算机通信的底层逻辑
  • 【源力觉醒 创作者计划】文心开源大模型ERNIE-4.5私有化部署保姆级教程与多功能界面窗口部署
  • 文心一言大模型4.5系列开源测评
  • 开源链动2+1模式、AI智能名片与S2B2C商城小程序在私域运营中的协同创新研究
  • 笔记-极客-DDD实战-基于DDD的微服务拆分与设计
  • mysql复合条件匹配的查询优化
  • jeepay开源项目开发中金支付如何像其他支付渠道对接那样简单集成,集成服务商模式,极简集成工具。
  • (dp、贪心)洛谷 P8179 Tyres 题解
  • 012_PDF处理与文档分析