【计算机网络】一文带你弄懂DNS解析过程(最强详解!!)

news2024/11/19 5:17:17

目录

首先了解一下什么是DNS协议吧

 域名的结构

顶级域名

二级域名

根域名

DNS的查询方式

递归查询

迭代查询

 完整域名解析系统


首先了解一下什么是DNS协议吧

        DNS(Domain Name System)是一个用于将域名(例如www.example.com)转换为对应 IP 地址的协议。它起到了“互联网电话簿”的作用,让我们可以使用简单易记的域名来访问网站,而不需要记住复杂的数字 IP 地址。

        通俗地说,DNS 协议就像是一个大型的电话簿系统,它帮助我们找到互联网上的网站。假设你想要访问一个网站,比如谷歌(google.com),你会在浏览器中输入这个域名。然后,浏览器会向你所使用的网络提供商的 DNS 服务器发送一个请求,询问:“你们知道谷歌的 IP 地址吗?”

        接下来,DNS 服务器会开始进行查找。它首先会检查自己的记录,看是否已经有谷歌的 IP 地址缓存。如果有,它会立即返回给浏览器。如果没有,它会向其他 DNS 服务器询问,直到找到能提供谷歌 IP 地址的服务器。

        一旦 DNS 服务器找到了谷歌的 IP 地址,它会将这个信息返回给浏览器。然后,浏览器就知道了谷歌的真实地址,可以开始建立连接,并向该 IP 地址发送请求,获取网页内容。

 域名的结构

域名具有一定的层次结构,从上到下依次为:根域名、顶级域名(top level domain,TLD)、二级域名、(三级域名)

 

顶级域名

        顶级域名是域名的最后一个部分,例如www.baidu.com的顶级域名就是.com。顶级域名可以分为两类:

  • 通用顶级域名,比如.com、.net、.edu、.org、.xxx等等
  • 国家顶级域名,代表不同的国家和地区,比如.cn(中国)、.io(英属印度洋领地)、.cc(科科斯群岛)等。

每个顶级域名有一个托管商,托管商负责管理该顶级域名的所有事项。


二级域名

二级域名在通用顶级域名和国家顶级域名下具有不同的意义:

  • 通用顶级域名下的二级域名:一般指域名注册人选择使用的网上名称,如yahoo.com、baidu.com。
  • 国家顶级域名下的二级域名:一般指类似于通用顶级域名的表示注册人类别和功能的标识。例如.com.cn域名中,.com是置于国家顶级域名.cn下的二级域名,表示中国的商业性组织。
     

        三级域名是形如www.baidu.com的域名,可以当作是二级域名的子域名,特征为域名包含两个.。对于域名所有者/使用者而言,三级域名都是二级域名的附属物而无需单独费用。三级域名甚至不能称为域名,一般称之为域名下的“二级目录”。

根域名

有时,www.xxx.com被写成www.xxx.com,即最后还会多出一个点,这个点就是根域名。

 

DNS的查询方式

DNS查询方式有两种:

  • 递归查询
  • 迭代查询

递归查询

  1. 客户端向本地DNS服务器发送查询请求,包含要解析的域名,比如"www.example.com"。

  2. 如果本地DNS服务器的缓存中已经有了对应的解析结果,它会直接返回解析结果给客户端,并结束查询过程。

  3. 如果本地DNS服务器的缓存中没有对应的解析结果,它会向根DNS服务器发送迭代查询请求。

  4. 根DNS服务器收到请求后,会根据请求的域名后缀(例如".com")告诉本地DNS服务器负责该域名后缀的顶级域名服务器的地址。

  5. 本地DNS服务器再向顶级域名服务器发送迭代查询请求。

  6. 顶级域名服务器收到请求后,根据请求的域名(例如"example.com")告诉本地DNS服务器负责该域名的权威域名服务器的地址。

  7. 本地DNS服务器再向权威域名服务器发送迭代查询请求。

  8. 权威域名服务器收到请求后,检查自己是否有该域名的解析记录。如果有,它会将解析结果返回给本地DNS服务器。

  9. 本地DNS服务器收到解析结果后,将其缓存,并将解析结果返回给客户端。

  10. 客户端接收到解析结果后,便可以使用该IP地址与目标服务器建立连接,并进行网站访问等操作。

迭代查询

  1. 客户端向本地DNS服务器发送查询请求,包含要解析的域名,比如"www.example.com"。

  2. 如果本地DNS服务器的缓存中已经有了对应的解析结果,它会直接返回解析结果给客户端,并结束查询过程。

  3. 如果本地DNS服务器的缓存中没有对应的解析结果,它会向根DNS服务器发送迭代查询请求。

  4. 根DNS服务器收到请求后,会根据请求的域名后缀(例如".com")告诉本地DNS服务器负责该域名后缀的顶级域名服务器的地址。

  5. 本地DNS服务器再向顶级域名服务器发送迭代查询请求。

  6. 顶级域名服务器收到请求后,根据请求的域名(例如"example.com")告诉本地DNS服务器负责该域名的权威域名服务器的地址。

  7. 本地DNS服务器再向权威域名服务器发送迭代查询请求。

  8. 权威域名服务器收到请求后,检查自己是否有该域名的解析记录。如果有,它会将解析结果返回给本地DNS服务器。

  9. 如果权威域名服务器没有该域名的解析记录,它会返回一个"域名不存在"的响应。

  10. 本地DNS服务器接收到解析结果或"域名不存在"的响应后,将其返回给客户端。

  11. 如果得到的是解析结果,客户端就可以使用该IP地址与目标服务器建立连接,并进行网站访问等操作。

 完整域名解析系统

1、首先搜索浏览器中的DNS缓存,缓存中维护一张域名与IP地址的对应表
2、若没有命中,则继续搜索操作系统的DNS缓存。
3、若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,查找成功则返回结果。(主机和本地域名服务器之间的查询方式是递归查询)
4、若本地域名服务器的DNS缓存没有命中,则本地域名服务器向上级域名服务器进行查询,通过以下方式迭代查询(防止根域名服务器压力过大)

  • 首先本地域名服务器向根域名服务器发起请求,根域名服务器是最高层次的,它并不会直接指明这个域名对应的IP地址,而是返回顶级域名服务器的地址。
  • 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址。
  • 本地域名服务器拿到这个权限域名服务器的地址后,就向其发起请求,最终得到该域名对应的IP地址。

5、本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来
6、操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来
7、至此,浏览器就得到了域名对应的IP地址,并将IP地址缓存起来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BTC价格预测:灰度突如其来的胜利是否会打破“九月魔咒”?

加密市场即将进入第三季度交易的最后阶段,由于9月份被视为是比特币的下跌时期,大多数投资者都预测加密货币之王将会进一步下跌。然而,事情却发生了逆转,灰度突如其来的胜利是否会打破“九月魔咒”? 受该事件影响&#…

15.坐标添加带箭头的线

ol的官网示例中有绘制带箭头的线的demo&#xff0c;那个是交互式绘制&#xff0c;而不是根据经纬度坐标添加&#xff0c;在其基础上稍作修改&#xff0c;即可转为通过经纬度添加带箭头的线的功能&#xff0c;线和箭头的粗细大小样式都可以自定义 代码如下 <!DOCTYPE HTML P…

【工程实践】使用git clone 批量下载huggingface模型文件

前言 经常需要下载模型到服务器&#xff0c;使用git clone方法可以快速实现模型下载。 1.选定要下载的模型 以下载moka-ai/m3e-base为例&#xff0c;切换到Files and versions。 2.更改下载网页的url 如上图所示&#xff0c;当前要下载模型网页的url为&#xff1a; https://hu…

【C++初阶】反向迭代器的实现

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

【高阶产品策略】策略价值量化之数据指标

文章目录 1、数据指标概述2、通用指标3、WEB端常用指标4、移动端常用指标5、如何选择一个合适的数据指标 1、数据指标概述 2、通用指标 3、WEB端常用指标 4、移动端常用指标 5、如何选择一个合适的数据指标

无涯教程-Android - Style Demo Example函数

下面的示例演示如何将样式用于单个元素。让我们开始按照以下步骤创建一个简单的Android应用程序- 步骤说明 1 您将使用Android Studio IDE创建一个Android应用程序,并在 com.example.saira_000.myapplication 包下将其命名为 myapplication ,如中所述您好世界Example一章。 2 …

《高效职业人》考试试题及答案截图

中电金信新员工入职培训选修课《高效职业人》考试答案截图

稳恒电路直观理解

图v0 图v1 图v2 图v3 图v4 自由正电荷s&#xff0c;定向移动过程中&#xff0c;在任何一位置处受力都是平衡的&#xff0c;即s所受总合力为0&#xff0c; 即s处于匀速运动&#xff1a;直导体中匀速直线运动、拐弯处匀速圆周运动 起初t0时刻, s的势能是最高的E0&#xff0c;之…

出口管制升级!限制英伟达向中东地区出口AI芯片 | 百能云芯

8月31日消息&#xff0c;根据1份监管报告显示&#xff0c;原先美国限制英伟达先进人工智能芯片出口至中国&#xff0c;现在拟计划进一步扩大到中国以外的其他地区&#xff0c;包括中东一些国家。 据《路透》报道&#xff0c;美国通常是出于国家安全原因&#xff0c;实施出口管制…

头歌MYSQL——课后作业6 函数

第1关&#xff1a;数值函数 任务描述 本关任务&#xff1a;对表达式取整 相关知识 四舍五入的函数 ROUND(X,D) 返回X&#xff0c;其值保留到小数点后D位&#xff0c;而第D位的保留方式为四舍五入。 若D的值为0,则对小数部分四舍五入。 若将D设为负值&#xff0c;保留X值小数…

Threejs里执行对象的多个动画

承接上文&#xff0c;本文讲述如何在Threejs里播放对象的多个动画&#xff0c;这也是研究了很久才解决的… 一 导出模型 在Blender里按照File->Export&#xff0c;选择glTF2.0 然后在弹框的右上角选择导出为glTF Embedded (.gltf) 这样就把模型导出来了&#xff0c;该模…

Revit SDK:Selections 选择

前言 Revit 作为一款成熟的商业软件&#xff0c;它将自己的UI选择功能也通过 API 暴露出来。通过 API 可以按照特定的过滤规则来选择相应的元素&#xff0c;能力和UI基本上是等价的。这个 SDK 用四个例子展示了 API 的能力&#xff0c;内容如下。 内容 PickforDeletion 核心…

RabbitMQ快速上手及讲解

前言&#xff1a;在介绍RabbitMQ之前&#xff0c;我们先来看下面一个场景&#xff1a; 1.1.1.1 异步处理 场景说明&#xff1a; 用户注册后&#xff0c;需要发注册邮件和注册短信&#xff0c;传统的做法有两种 1.串行的方式 (1)串行方式&#xff1a;将注册信息写入数据库后&a…

数据是如何存储在内存中的?听我慢慢道来

数据的存储 1. 前言2. 数据类型2.1 整形家族2.2 浮点数家族2.3 构造类型&#xff08;自定义类型&#xff09;2.4 指针类型2.5 空类型&#xff08;无类型&#xff09; 3. 整数在内存中的存储4. 大小端5. 浮点数在内存中的存储 1. 前言 大家好&#xff0c;我是努力学习游泳的鱼。…

2023年高压快充行业研究报告

第一章 行业概况 1.1 行业定义 高压快充行业是指专注于为电动汽车、移动设备等提供高功率、高效率充电服务的行业。高压快充技术旨在通过采用更高的电压和更大的电流&#xff0c;缩短充电时间并提高充电效率。这种技术可以使电动汽车在短时间内充满电&#xff0c;从而提高其可…

JavaScript基础语法02——JS书写位置

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 今天继续学习JavaScript基础语法&#xff0c;JS的书写位置&#xff0c;俗话说&#xff1a;好记性不如烂笔头&#xff0c;边学边记&#xff0c;方便回顾。 1、行内JavaScript 代码写在标签内部 示例&#xff1a; <…

dubbo项目traceId链路传递(MDC方案及重复traceId处理)

1.traceId用途 主要用于项目dubbo接口调用链日志追踪使用&#xff0c;可以获取完整的链路日志&#xff0c;协助排查问题。 2.traceId传递及代码实现 本方案是基于 org.slf4j.MDC 进行实现&#xff0c;会出现线程池中线程复用导致traceId重复问题&#xff0c;后面会说解决方案。…

unity 发布apk,在应用内下载安装apk(用于更大大版本)

*注意事项&#xff1a; 1&#xff0c;andriod 7.0 和 android 8.0是安卓系统的分水岭&#xff0c;需要分开来去实现相关内容2&#xff0c;注意自己的包名&#xff0c;在设置一些共享文件的时候需要放自己的包名3,以下是直接用arr包放入unity中直接使用的&#xff0c;不需要导入…

QTday2(信号与槽机制——很重要!!!)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.信号与槽 class Widget : public QWidget {Q_OBJECT //信号与槽的元对象signals:void my_signal(); //自定义信号函数public slots:void my_slot(); //自定义的槽函数public:Widget(Q…