文章目录

  • 3.1 DNS服务器基本工作
  • 3.2 寻找相应的DNS服务器并获取ip地址
  • 3.3 通过缓存加快DNS服务器的响应

3.1 DNS服务器基本工作

DNS服务器的基本工作就是接收来自客户端的查询消息,然后根据消息的内容返回响应。

其中,来自客户端的查询消息包含以下3种信息:

  • 域名 : 服务器、邮件服务器(邮件地址中@后面的部分)的名称;
  • Class:在最早设计DNS方案时,DNS在互联网以外的其他网络中的应用也被考虑到了,而Class就是用来识别网络的信息。不过,如今除了互联网并没有其他的网络了,因此Class的值永远是代表互联网的IN;
  • 记录类型:表示域名对应何种类型的记录。例如,当类型为A时,表示域名对应的是IP地址;当类型为MX时,表示域名对应的是邮件服务器,而记录类型不止这两种,还比如代表域名属性的SOA,别名的CNAME等;

DNS服务器上事先保存有前面这3种信息对应的记录数据,然后根据这些记录便可以对客户端(DNS解析器)做出响应

例如,如果要查询www.lab.glasscom.com这个域名对应的IP地址,客户端就会向DNS服务器发送查询消息: 域名=www.lab.glasscom.com,Class = IN,记录类型=A,DNS根据这些信息,就能从图中第一行找到,然后返回IP地址192.0.2.226

如果我们要查询邮件服务器(例如tone@glasscom.com)时则要使用MX类型,客户端就会向DNS服务器发送查询消息:域名=glasscom.com,Class = IN,记录类型=MX,根据这些信息,就能从图中第二行找到,然后返回优先级和其域名;而我们还可以根据其返回的邮件服务器域名查找到其IP地址,例如第三行

因此DNS的基本工作就是

DNS服务器的基本工作就是根据需要查询的域名和记录类型查找相关的记录,并向客户端返回响应消息;

#3.2 域名和DNS的层次结构

上面的讲解中,我们是假设要查询的信息已经保存在DNS服务器(适用于内部网络web等服务器数量有限环境)。然而,互联网中存在着不计其数的服务器,将这些服务器的信息全部保存在一台DNS服务器中是不可能的,因此一定会出现在DNS服务器中找不到要查询的信息的情况。

那怎么解决这种情形呢

将信息分布保存在多台DNS服务器中,这些DNS服务器相互接力配合,从而查找出要查询的信息,至于怎么查询稍后再说,先看下信息是怎么在DNS上注册的

首先,DNS服务器中的所有信息都是按照域名以分层次的结构来保存的。层次结构类似于公司中的事业集团、部门、科室这样的结构,能够帮助我们更好地管理大量的信息。DNS中的域名都是用句点来分隔的,在域名中,越靠右的位置表示其层级越高,比如www.lab.glasscom.com这个域名如果按照公司里的组织结构来说,大概就是“com事业集团,glasscom部,lab科的www”。其中,相当于一个层级的部分称为域。因此,com域的下一层是glasscom域,再下一层是lab域,再下面才是www这个名字。

其中一个域是作为一个整体存储在DNS服务器上面,且不可拆分分别存储在不同的DNS服务器;因此,按照这种方式DNS服务器也就具有了层次结构,每个域的信息都存放在相应层级的DNS服务器

如果我们想给某团体的子团体配备一台DNS服务器,可以在域的下面创建下级域,然后再将它们分别分配给各个子团体,比如,假设公司的域为example.co.jp,我们可以在这个域的下面创建两个子域,即sub1. example.co.jp和sub2.example.co.jp;通过实际的域名可能更容易理解,比如www.nikkeibp.co.jp这个域名,最上层的jp代表分配给日本这个国家的域;下一层的co是日本国内进行分类的域,代表公司;再下层的nikkeibp就是分配给某个公司的域;最下层的www就是服务器的名称

3.2 寻找相应的DNS服务器并获取ip地址

知道了域名和DNS的层次结构以后,我们就可以提前在上层域的DNS中注册下层域的DNS的IP地址;例如负责管理lab.glasscom.com这个域的DNS服务器的IP地址需要注册到glasscom.com域的DNS服务器中,而glasscom.com域的DNS服务器的IP地址又需要注册到com域的DNS服务器中这样我们就可以通过上级DNS服务器查询出下级DNS服务器的IP地址,也就可以向下级DNS服务器发送查询请求了;

这里有个注意点,com,jp这些域并不是最高级的,在此之上还有个最高域,我们称为根域;它一般是域名末尾最后一个点,只是为了方便书写省略了它,比如百度的真实域名应该是www.baidu.com.,最后会有一个句号.;根域的DNS服务器中保管着com、jp等的DNS服务器的信息。由于上级DNS服务器保管着所有下级DNS服务器的信息,所以我们可以从根域开始一路往下顺藤摸瓜找到任意一个域的DNS服务器。

因此为了能够准确查找到信息,我们需要给每一个DNS服务器中都配置上根域的DNS服务器信息(根域服务器仅仅只有13个IP地址),这样客户端就能通过任意一台DNS服务器找到根域,然后顺藤摸瓜找到所要查询的域名IP;

假设我们要查询www.lab.glasscom.com这台Web服务器的相关信息,由于最近的DNS没有注册该域名信息,就转问根域,然后根域根据层次结构回复去找com域服务器,同样道理,com回复去找glasscom域服务器,依次往下走,然后就能在lab域服务器找到www.lab.glasscom.com的IP地址,然后最近DNS就把该地址返回个客户端计算机,客户端计算机再通过该IP去找Web服务器查看相关信息(上图);

现在我们把上一章中的浏览器向DNS解析器要IP的过程和DNS服务器中查询IP过程结合起来,图内容如下:

3.3 通过缓存加快DNS服务器的响应

有时候DNS服务器并不需要从最上级的根域开始查找,因为DNS服务器有一个缓存功能,可以记住之前查询过的域名(比如上面查找的www.lab.glasscom.com的IP地址,下次在查找就不用去根域服务器了)。如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行。

相比每次都从根域找起来说,缓存可以减少查询所需的时间。并且,当要查询的域名不存在时,“不存在”这一响应结果也会被缓存。这样,当下次查询这个不存在的域名时,也可以快速响应。这个缓存机制中有一点需要注意,那就是信息被缓存后,原本的注册信息可能会发生改变(比如百度域名是www.baidu.com,但一段时间后它更名为黑度www.heidu.com了呢,那么原先被缓存的这个域名就会失效),这时缓存中的信息就有可能是不正确的。因此,DNS服务器中保存的信息都设置有一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。而且,在对查询进行响应时,DNS服务器也会告知客户端这一响应的结果是来自缓存中还是来自负责管理该域名的DNS服务器。

==========================上一章=============================

==========================下一章=============================

网络是怎样连接的--DNS服务器查询原理相关推荐

  1. 《网络是怎样连接的》第一章第二节:向DNS服务器查询Web服务器的IP地址

    <网络是怎样连接的>第一章:浏览器生成消息 概述:这本书以 "从在浏览器输入网址,到屏幕显示出网页,当中到底发生了什么?"为疑问,探究其中的过程.本章讲的是浏览器怎么把 ...

  2. 【网络是怎么连接的】—— 1.2 向 DNS 服务器查询 Web 服务器的 IP 地址

    目录 1.2 向 DNS 服务器查询 Web 服务器的 IP 地址 1.2.1 IP地址基础知识 1.2.2 域名和 IP 地址并用的理由 1.2.3 Socket 库提供查询 IP 地址的功能 1. ...

  3. 网络知识入门,探讨DNS服务器在网页请求中的作用(二)

    上一篇文章讲到网络请求是基于http协议传输的,消息请求包含了"对什么"和"做什么操作",于是一个网页请求就这么发送出去了.但是在发送消息之前,我们还需要对域名 ...

  4. 使用dig或nslookup指定dns服务器查询域名解析

    使用dig或nslookup指定dns服务器查询域名解析 https://www.cnblogs.com/wjoyxt/p/9198694.html 一般来说linux下查询域名解析有两种选择,nsl ...

  5. Centos7 搭建DNS服务器与原理配置详解

    在搭建我们自己DNS服务器之前,先必须了解下DNS服务器的作用和原理. DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP ...

  6. DNS服务器的原理及搭建

    文章目录 原理 搭建DNS服务器 正向解析 原理 DNS(Domain Name System)是互联网上的一项服务,它作为将 域名 和 IP 地址相互映射的一个分布式数据库,能够使人更方便的访问互联 ...

  7. 网络是怎样链接的--向DNS服务器查询Web服务器的IP地址

    文章目录 2.1 IP地址的基本知识 2.2 域名和IP地址共用理由 2.3 DNS本质是什么 2.4 浏览器如何获取IP 2.5 DNS解析器内部工作原理 2.1 IP地址的基本知识 浏览器能够解析 ...

  8. 电脑网络连接显示DNS服务器未响应,电脑链接网络提示DNS服务器未响应的解决方法(收藏)...

    1 DNS服务器地址错 误1 遇到这样的情况,可以先将电脑.ADSL猫以及路由器都重启一下,如果不行,则右键右下角网络图标--打开网络和共享中心--更改适配器设置,(或者桌面上右键网络--属性--更改 ...

  9. 探索浏览器(二)向DNS服务器查询Web服务器的IP地址

    1.IP地址基础知识 (1)尽管浏览器能解析网址并生成HTTP消息,但它本身是不能发送网络消息的,这必须委托给操作系统来实现.在此之前,我们要查询网址中的服务器域名找到对应的IP地址.所以任务又可以细 ...

最新文章

  1. php mysqli参数,PHP5 mysqli 绑定参数
  2. 【大牛招生】李飞飞的实验室招人了!不限专业,有跨学科研究经验优先
  3. 如何保证电子邮件的安全
  4. 【活动】侬好上海,Microsoft Reactor来啦
  5. 充电提示音_iPhone如何自定义充电提示音,图文教程
  6. 成绩排序(信息学奥赛一本通-T1178)
  7. SpringCloud 从菜鸟到大牛之一 微服务介绍
  8. 建议检察院服务器服务器配置 显示器,切换器 键鼠
  9. apache开源项目--HttpComponents
  10. java 方法互斥_Java 两个互斥方法同时访问一个成员变量
  11. mark点Z3学习资料整理
  12. 戴尔服务器720dx格式化硬盘,戴尔首个基于 Ocarina 的解决方案--DX6000G 存储压缩节点...
  13. 没有文化可以学php吗,宋威龙深夜发文感慨,却被吐槽文化低,学历真的重要吗?...
  14. 2021年下半年软考-网络工程师答案及解析(中级)
  15. solidworks 2018 SP2.0中文版
  16. 微信小程序,模板+按钮+绑定事件
  17. javaweb项目实训总结_JAVA WEB实训总结
  18. Transformer模型简介
  19. Linux命令:reboot
  20. 年审是当月还是当天_车辆年检可以在到期当月进行吗

热门文章

  1. myeclipse数据库逆向hibernate教程 -
  2. 操作系统 第十章 UNIX系统
  3. open-falcon监控实施
  4. SQL语言---数据的查询
  5. 基于ssm的医院病历管理系统SSM医院管理系统
  6. jpg照片怎么压缩?改变jpg文件大小?
  7. 顶点高程_实例|范围线内有高程点CASS也无法生成三角网?98
  8. PCA实验人脸库-人脸识别(四)
  9. HDU 3549 网络流水题
  10. 2023年5种最佳黑客编程语言