zoukankan      html  css  js  c++  java
  • DNS 客户端查询过程

    DNS客户端的注册信息在DNS服务器中是以记录的方式体现出来的,那么客户端就可以用一些方式进行查询各类记录。相对应的,服务器会对这些查询进行响应,我们称之为解析,至于DNS内部的工作机制,我们不得而知,但可以通过一些命令和方法间接地了解DNS查询过程。为了更好的描述这个问题,我做了一张简单的TOPO图,其中DNS1为DNS服务器,主机XP3是一个DNS客户端。拓扑图如下:

      学DNS系列(八)DNS 客户端查询过程

      在客户端向DNS服务器提交一个查询消息中,通常都会包含3条基本信息,1、需要制定查询的DNS域名;2、指定查询请求的基本类型;3、DNS域名的指定类别。对于windows系统的DNS服务器而言,第三条即DNS域名的指定类别总是Internet,即我们常说的IN类别,这个关键字无论是在正向还是反向区域的DNS文件中都可以看的到,我们以正向查找区域的DNS文件为例,如下图:

      学DNS系列(八)DNS 客户端查询过程

      所以,通常我们在提交一个查询时只需要包含DN S域名和查询请求的类型这两部分内容就可以了,通过一个实例来讲解吧。在a.com区域内存在2条A记录,如下图:

      学DNS系列(八)DNS 客户端查询过程

      那么我们在XP3上查询DNS1的A记录。为了更好的理解整个过程,我们依然会使用wireshark来进行辅助分析。整个过程如下图:

      学DNS系列(八)DNS 客户端查询过程

      在上图中用到几个命令 ,如nslookup、set 等,这些命令在DNS应用和排错中用的很普遍。所以后面会单独有一节来讲这部分内容。我们再来看看wireshark都发生了什么,整个过程经历了2个步骤。如下图:

      数据包1的分析过程:

      学DNS系列(八)DNS 客户端查询过程

      数据包2的分析过程:

      学DNS系列(八)DNS 客户端查询过程

      上面是查询A记录的过程分析,同理,在查询NS记录或者PTR指针记录时也是类似的过程,只是查询的类型和结果不同而已,这里不再熬述。

      DNS客户端在第一次查询某条记录时,会按照上述的过程进行,当再次查询时则会首先使用本地缓存信息来解析查询请求,如果有对应的记录则完成此次解析,否则就会向自身的DNS服务器发起查询。而这样的本地解析依据来源于2个地方,如下:

      1、即为本地预先配置的主机名到地址的映射关系,也就是我们常提的HOSTS文件。

      2、以及系统保存在查询缓存中的记录。

      其实,从上面不难看出,客户端解析的过程也就是记录匹配的过程,如果有匹配的选项,则会返回相应信息给客户端,反之则提示无法找到相应记录。

      但对于互联网上的DNS的查询和解析,就比这个复杂许多,下节会讨论有关迭代和递归查询的内容,敬请期待!

  • 相关阅读:
    云小课 | 华为云KYON之VPC终端节点
    华为云专家向宇:工欲善其事必先利其器,才能做数据的“管家”
    NB-IoT四大关键特性及实现告诉你,为啥NB
    Base64 原理
    netty系列之:轻轻松松搭个支持中文的服务器
    轻松让你的nginx服务器支持HTTP2协议
    是的你没看错,HTTP3来了
    HTTP协议之:HTTP/1.1和HTTP/2
    netty系列之:在netty中使用protobuf协议
    protocol buffer的高效编码方式
  • 原文地址:https://www.cnblogs.com/kscnchina/p/3077032.html
Copyright © 2011-2022 走看看