DNS-域名服务器(原理分析)

DNS-域名服务器

一、概述

首先讲清楚什么是DNS?

  1. DNS: 域名服务器(Domain Name Server)。**域名解析就是域名到IP地址的转换过程,在Internet上域名与IP地址之间是一 一对应的。**这个是本篇博客最重要的一句话,因为这就是DNS的本质。理解了这个我们就知道我们平时所见到的很多的域名其本质是什么了。
  2. 什么是域名?Internet域名是Internet网络上的一个服务器或一个网络系统的名字,在全世界,没有重复的域名。域名的形式是以若干个英文字母或数字组成,由“.”分隔成几部分,如WWW.CNNIC.NET.CN就是一个域名。
  3. 既然讲到了域名就不得不将顶级域的划分,请见下图

在这里插入图片描述

  • 世界上顶级域按两种形式划分:一种是以组织结构划分,比如net,gov,con,edu等等;一种以国家来划分,比如cn,jp等等;以国家划分的顶级域下面也可以按组织、功能等划分多个子域。

二、DNS解析过程

  • 前面讲到了,域名解析就是域名到IP地址的转换过程,那么这个转换过程具体是什么样的呢?请参考下面这幅图:

在这里插入图片描述

  1. 客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

  2. 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

  3. 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器(DNS),然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。

  4. 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。

  5. 重复第四步,直到找到正确的纪录。

  6. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

这样来讲的话,肯定是不够生动的,所以举个例子:

  • 一个用户在IE上打入一个网址www.sina.com.cn,按回车后。 系统首先查询本地DNS客户端缓存中是否有这个域名,如果你刚才已经访问过这个网站,那么缓存中就会有对应的IP,系统就可以直接根据这个IP来连接网站。
  • 如果本地缓存中无法找到对应的IP,系统将向DNS服务器提交查询请求。DNS服务器在收到请求后,先查询服务器的本地缓存中是否有对应的项,如果有,则返回。如果没有,DNS服务器将首先向 ".“根服务器查询 .cn的域名对应的DNS服务器。得到结果后,再在”.cn"服务器查询 “com.cn"的域名对应的DNS服务器;接着再向"com.cn"服务器查询 “sina.com.cn"对应的域名服务器。最后才能查到” www.sina.com.cn” 这个域名。

三、DNS报文格式

  • DNS报文格式:由12个字节首部和4个长度可变的字段组成。
    在这里插入图片描述

  • DNS查询报文中的问题部分格式如下,通常只有一个问题。
    在这里插入图片描述

  • DNS响应报文中的资源记录部分:

在这里插入图片描述

  • 标识字段由客户程序设置并由路由器返回结果。客户程序通过它来确定响应与查询是否匹配

    16bit的标志字段被划分为若干子字段:
    在这里插入图片描述

    • QR-1位,0表示查询,1表示响应报文。
    • Opcode-4位,0表示标准查询,1表示反向查询,2表示服务器状态请求。
    • AA-1位,表示授权回答。
    • TC-1位,表示时可截断的,使用UDP时,它表示应当的总长度超过512字节时,只返回前512个字节。
    • RD-1位,表示期望递归。该位能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为叠代查询。
    • RA-1位,表示可用递归。如果名字服务器支持递归查询,则在响应中将该位置为1。
    • rcode-4位返回码,0表示没有差错,3表示名字差错。名字差错只有从一个授权服务器上返回,它表示在查询中指定的域名不存在。
    • 随后的4个16位的字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他3项均为0。对于应答报文,问答数至少为1,剩下的2项可以是0或非0。
  • 查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须为0-63,因为标识符的最大长度仅为63。该字段无需以整32为为边界,即无需填充字节。

  • DNS响应报文中的最后三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录(RR)的相同格式。

  • 域名是记录中资源数据对应的名字,它的格式和前面的查询名字段格式一样。

  • 类型说明RR的类型码,它和前面的查询类型值是一样的。通常为1,表示互联网数据。

  • 生存时间是客户程序保留该资源记录的秒数,资源记录通常的生存时间为2天。

  • 资源数据长度说明资源数据的数量,该数据的格式依赖域类型字段的值,对于类型A资源数据是4字节的IP地址。

四、DDNS-动态域名服务

  • DDNS(Dynamic Domain Name Server)- 动态域名服务
  • DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务项目器程序负责提供DNS服务并实现动态域名解析。
    在这里插入图片描述
  • 动态域名解析系统一般由两部分构成,如图所示。一部分是客户端程序,运行在用户的主机上。另一部分是服务器端程序,位于服务器端的主机上。服务器端分为响应服务器和DNS服务器,其中响应服务器负责响应用户的动态域名更新请求,DNS服务器可以采用国际上较为流行的Bind系统,实现域名解析服务并提供域名IP动态更新服务。
  • 当用户使用新的IP地址时,需向响应服务器申请更新该域名对应的IP地址。在收到客户端的更新数据后,响应服务器通过查询数据库,确认客户端的域名是否合法存在的,如果不是则不予理睬,若是合法存在的,响应服务器把相应的动态域名更新消息以命令的方式存储在数据库中,再由同步进程反映到DNS解析服务器,同时更新数据库中相应信息。完成了用户信息到DNS的传递,实现了动态更新。

五、DNS Proxy - DNS 代理

  • DNS 代理(DNS proxy)用来在DNS client 和DNS server 之间转发DNS 请求和应答报文,代替DNS Server 进行域名解析

DNS proxy 工作机制如下:

  1. DNS client 把DNS代理设备当作DNS server,将DNS 请求报文发送给DNS Proxy设备,即请求报文的目的地址为DNS proxy 的IP 地址。

  2. DNS Proxy设备收到请求报文后,首先查找本地的静态域名解析表,如果静态域名解析表中存在请求的信息,则DNS Proxy设备直接通过DNS 应答报文,将域名解析结果返回给DNS client。

  3. 如果静态域名解析表中没有请求的信息,则DNS Proxy设备将报文转发给DNS server,通过DNS Server 进行域名解析。

  4. DNS Proxy设备收到DNS server 的应答报文后,将报文转发给DNS client。DNS client 利用域名解析的结果进行相应的处理。

在这里插入图片描述

  • ip name-server master 202.207.158.65 配置主DNS服务器。

    ip name-server backup 222.222.222.222 配置备用DNS服务器

    dnsproxy-enable 开启代理服务。

    把PC的DNS client的Server设置为192.168.0.1(代理的IP)

六、DNS配置

常见DNS配置指令:

(no) ip domain lookup (关闭)激活基于DNS的名称地址解析
(no)ip domain name-server(master/backup) ip-address (删除)指定(主/备用)域名服务器
(no) ip domain name (删除)指定一个默认的域名
(no)ip domain list name (删除)指定一个域名列表。
ip domain primary-server address 指定主域名服务器
ip domain proxy enable/disable 启动/关闭代理服务器功能
show ip hosts detail 显示默认域名、域名列表、域名服务器信息以及主机名-IP地址映射缓存表,消息ID(或回调函数地址)、提前通知的时间等。
debug ip domain 显示本模块的debug信息

七、总结

  • 我们都知道主机IP地址,是在网络通信过程中对我们主机的身份的标识。可是我们实现这个功能确是通过ARP协议来实现的,通过ARP协议我们可以从IP地址解析出我们主机的MAC地址(注意MAC地址从出厂的时候就被固定在我们的机器里面而且是全球唯一的,所以他能唯一标定我们的主机)。

  • 同样的我们的IP地址,也可通过DNS域名解析服务来和相应的域名之间相互转换。他们之间的关系如下图所示:
    在这里插入图片描述

    我的另一篇有讲到ARP协议的博客可以参见:ARP-地址解析协议

    如此,我们便可看出IP地址在我们网络通信当中的重要性了,但是IP地址是怎么来的或者说是怎么分配的呢?请参见:
    DHCP服务机制分析

发布了52 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wit_732/article/details/104024791