DNS域名解析系统知识详解

DNS域名解析系统知识详解

起源:实验室换了电脑,需要将MAC绑定一个新的IP地址。在配置静态IP的时候,忘记填写DNS网关
了。然而,此时QQ消息还可以正常地接收,网页却不能正常地访问。于是在群里跟大家一起讨论了
这个现象和原理,也对DNS的工作原理有了更清晰的认识。DNS的系统设计对于ICN名字解析系统的
设计有非常好的借鉴作用。那么什么时候需要进行DNS域名解析,DNS域名解析的工作原理是什么
呢?在下文中会有详细地介绍。

        问题一:qq为什么不需要DNS来解析

       如果你上网页不用www方式,直接访问该网站的ip地址也是通的。用网址访问的方式, 是先到域名服务早该网址对应的服务器的IP地址,再用IP访问的,若DNS故障的话,它就不知道该连接到哪里。也就是,qq消息直接通过IP利用UDP传输协议进行传输,不需要进行域名解,故DNS故障不影响正常地消息发送/接收。


1. DNS系统概述

        从输入的 url,可以解析出主机与端口来确定哪台机器装载了资源,以及在那台机器的什么地方可以找到对目标资源进行访问的服务器。
        该解析方式有两种方式有两种,一种是主机名 + 端口,另一种是 IP 地址 + 端口,如果是主机名 + 端口的形式,需对主机名进行解析成 IP 地址,因为互联网上每一台计算机的唯一标识是它的 IP 地址。这个解析过程,就叫做 DNS 解析。
       DNS(Domain Name System)位于 TCP / IP 协议族的应用层,是一种组织成域层次结构的计算机和网络服务命名系统,它所提供的服务是用来将主机名和域名转换为IP地址的工作。

参考链接:
1.https://bb.08800.top/urla=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0ahUKEwinsJrE4dTZAhXIzbwKHSPiAWUQFgh3MAY&url=https%3a%2f%2fgithub%2ecom%2fjkchao%2fblog%2fissues%2f13&usg=AOvVaw2GnnjWRLNeRM_y21l4_7yr
2. http://imweb.io/topic/55e3ba46771670e207a16bc8


1.1 DNS域名称

  • 根域:DNS 域名中使用时,规定由尾部句点 (.)来指定名称位于根或更高级别的与层次结构。在对 www.qq.com 进行 DNS 解析时,实际主机名为 www.qq.com. ,结尾多出的一个点,即是对应的根域。
  • 顶级域:用来指示某个国家/地区或组织使用的名称的类型名称。如:.com 。
  • 第二层域:个人或组织在 Internet 上使用的注册名称。如:qq.com 。
  • 子域:已注册的二级域名派生的域名,通俗的讲,就是网站名。如 www.qq.com 。
  • 主机名:通常情况下,DNS 域名的最左侧的标签标识网络上的特定计算机,如 h1.www.qq.com 。

        其中,根域名服务器有13台,但是这是错误的观点。根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机。主要通过镜像分布的方式进行维护。


1.2 DNS域名解析的过程

       下图是 DNS解析过程示意图:
DNS解析过程示意图
       查询方式主要分为两种:

Tips:
一种是递归查询,一种是迭代查询。
递归查询:是客户与服务器之间的一种查询方式;
迭代查询:是服务器与服务器之间的一种查询方式。
  • 递归查询:DNS 服务器代表客户机来查询或联系其他 DNS 服务器以完成解析该名称,并随后将应答返回至客户机。

  • 迭代查询:客户机自己也可尝试联系其他的 DNS 服务器来解析名称,如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称为迭代。即 DNS 服务器之间的交互查询就是迭代查询。

       查询步骤如下:

  • 在浏览器中输入 www.qq.com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 ip 地址映射,完成域名解析。
  • 如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  • 如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP / IP 参数中设置的首选 DNS 服务器,在此,我们叫它本地 DNS 服务器,此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  • 如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存里此网址映射关系,则调用这个 ip 地址映射,完成域名解析,此解析不具有权威性。
  • 如果本地的 DNS 服务器,本地区域文件与缓存解析都失效,则根据本地 DNS 服务器的设置,是否设置了转发模式,来进行查询,如果用转发模式,本地 DNS 就把请求发至13台根 DNS 服务器,根 DNS 服务器在收到请求后会判断这个域名(.com)是由谁来管理的,并会返回一个负责该顶级域名服务器的一个 ip 地址。本地 DNS 服务器收到 ip 地址以后,会联系负责.com域的这台服务器,这台负责.com的服务器收到请求后,如果无法解析,会查找下一级的 DNS 服务器比如 qq.com 给本地 DNS 服务器,以此类推,知道找出 ip地址,并缓存到本地。解析过程为从右向左,. => .com => qq.com => www.qq.com => …
  • 如果是转发模式,则与上一步骤相反,从下往上找。www.qq.com => qq.com => .com => .

参考链接:
https://bb.08800.top/urlsa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0ahUKEwinsJrE4dTZAhXIzbwKHSPiAWUQFgh3MAY&url=https%3a%2f%2fgithub%2ecom%2fjkchao%2fblog%2fissues%2f13&usg=AOvVaw2GnnjWRLNeRM_y21l4_7yr


1.3 DNS优化

       DNS 优化主要是缓存,本地缓存,浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,跟域名服务器缓存……,因而对于DNS系统主要做的是缓存优化,通过存储换时延。


1.4 DNS负载均衡(重定向)

       DNS 服务器可以返回一个合适的机器的 IP 给用户,例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过冲就是 DNS 负载均衡,又叫做 DNS 重定向,CDN 即是利用 DNS 重定向技术。DNS 服务器会返回一个根用户最接近的点的 ip 地址给用户,CDN 节点的服务器负责响应用户的请求,提供所需的内容。


1.5 DNS协议传输

       在了解了DNS域名解析系统的基本原理之后,DNS协议是如何进行传输的呢?

        问题2:DNS采用的TCP还是UDP协议?

       DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在 TCP/IP栈也算是个另类,但很少有人知道DNS分别在什么情况下使用这两种协议。

       1. 先简单介绍下TCP与UDP

  • TCP是一种面向连接的协议,提供可靠的数据传输,一般服务质量要求比较高的情况, 使用这个协议。
  • UDP—用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信 息传送服务。

       2.TCP与UDP的区别

  • UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
  • 与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出 现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输UDP并不能确保数据的发送和接收顺序。事实上,UDP协议的这种乱序性基本上很少出现, 通常只会在网络非常拥挤的情况下才有可能发生。
  • 既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况 下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植 入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严成,极大降低了执行时间,使速度得到了保证。      

       3. DNS在什么条件下使用TCP,什么条件下使用UDP呢?

  • DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
  • DNS的规范规定了2种类型的DNS服务器
            在两类服务器中,一个叫主DNS服务器,一个叫辅助DNS服务器。 在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS 服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时, 它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。

    为什么既使用TCP又使用UDP?

    • 首先了解一下TCP与UDP传送字节的长度限制:

      UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。

    • 区域传送时使用TCP,主要有一下两点考虑:

      1.辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。

      2.TCP是一种可靠的连接,保证了数据的准确性。

    • 域名解析时使用UDP协议:

      客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

    参考链接:https://www.cloudxns.net/Support/detail/id/1977.html


2. DNS VS 网关&DHCP

       问题3:DNS与DHCP、网关等有什么关系?

       DHCP是Dynamic Host Configuration Protocol的缩写,它是TCP/IP协议中的一种,主要是用来给网络客户机分配动态的IP地址。这些被分配的IP地址都是DHCP服务器预先保留的一个由多个地址组成的地址集,并且它们一般是一段连续的地址。

       使用DHCP时必须在网络上有一台DHCP服务器,而其他机器执行DHCP客户端。当DHCP客户端程序发出一个信息,要求一个动态的IP地址时,DHCP服务器会根据目前已经配置的地址,提供一个可供使用的IP地址和子网掩码给客户端。  

       DHCP分配地址的方式有手工、自动和动态三种。动态分配方法是惟一能够自动重复使用IP地址的方法,它对于暂时连接到网上的DHCP客户机来说尤其方便,对于永久性与网络连接的新主机来说也是分配IP地址的好方法。动态分配方式的IP地址并不固定分配给某一客户机,只要有空闲的IP地址,DHCP服务器就可以将它分配给要求地址的客户机;当客户机不再需要IP地址时,就由DHCP服务器重新收回,这样可以解决IP地址不够用的困扰。

       总结:简单地说DHCP的工作就是分配和提供IP,DNS是实现域名和IP之间的转换,都与IP有关。动态IP分配加DNS就是我们现在比较流行的DDNS,即动态域名解析。

参考链接:

  1. DNS与DHCP服务器功能讲解: http://blog.51cto.com/vbers/2050140
    2.DNS vs DHCP :
    https://www.ibm.com/support/knowledgecenter/en/ssw_i5_54/rzakg/rzakgscenario4.htm
  2. DNS/DHCP/网关功能详解: http://blog.sciencenet.cn/blog-516137-1043556.html
  3. DHCP 协议详解:http://blog.csdn.net/xiaoyi23000/article/details/50488664

3. 广告时间~

       在搜索关于DNS相关的内容时,搜到了腾讯云解析的产品简介,结合现在ICT以服务为中心,云化的趋势,未来的解析系统也可能部署在云上。看腾讯的产品简介,特点还是很直观的。下图是腾讯云解析的产品特点介绍:
这里写图片描述


4. 更多……..

       更多关于DNS域名解析系统缓存、负载均衡等相关的的内容,可参考《DNS与BIND(第五版)》,下载链接:http://download.csdn.net/download/lmh1472/10198024

       最后,感谢您的阅读Thanks♪(・ω・)ノ~~~羽生结弦镇楼!
这里写图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值