DNS服务器概念的简单的介绍,与搭建一个简单的DNS名称缓存服务器,实现域名解析(一)

DNS and Band
DNS:域名系统
 工作在应用层,是一种协议,同时监听UDP和TCP的53号端口
 UDP响应查询请求
 TCP响应辖区服务的
 
 /etc/host
 最初的时候里面都有一个你想访问的名称和里面的对应的关系。
 但是随着网络的增大,host文件的管理和维护变得非常麻烦。
 这时候,
 国际名称地址分配机构想出了一个方法。
 他们分别用于地址的分派,他们定期的通过更新ftp服务器里的host文件,则将所有的网站都铺开了。
 但是随着互联网的爆炸式发展。
 催生了DNS协议。
 DNS协议是对host文件的扩展,它只不过对host文件进行了分片。
 所有人在自己的服务器上做一个库,名称解析库。
 当一旦发现有人要访问一个域名的时候,这个库会先到DNS上查找一下这个域名对应的ip。
 
 但是,这样还是不行,互联网的爆炸速度太快。
 于是DNS开启了自己的分层管理系统。
 就像文件系统结构一样,自上而下的树状分层结构
 最上面的叫根节点域名解析服务器                       
          .
          
    .com   .net  .org    .cn  .tw     
     一级域名 顶级域名  国家域名
  
  ibm.|hp.    <--------二级域
  
  
      tech 
       ↓
  www   www
  
 
 比如ibm这有一个叫www的主机,则它的名字则自低往上
 www.ib,.com.  
 www.tech.ibm.com.
 
 一般能划分到63级域名,每一段最长可以达到127个
 一般我们去注册的都是二级域
 
  查询如何实现呢?
 DNS的查询有两种类型:
  递归查询
    recursive
     A去查询的时候,必须要一次就能知道答案
     A去问B,B不知道,但是B知道C知道,所以B从C那获得了答案并且告诉了A
  迭代查询
    A去查询答案的时候,查询了很多次才终于查询出来的方式
     A去问B,B不知道,但是B告诉A,C知道,所以A又去问C,C将答案告诉了A
   
 在互联网上,用户一般是递归的方式向服务器查询的
 作为服务器,在互联网上的查询永远是迭代的。它会自己去查所有的
 
 所以,一般在互联网上应用是两段式的。
 前半段递归,后半段迭代。
 
 递归方式非常消耗资源,一般只对本地的客户端递归。

解析的方式
 正向解析: NAME→IP
 反向解析: IP→FQDN
 
解析的过程又是如何实现的呢?
在刚才那个树状的层次结构中,永远是上级知道下级,下级永远不知道上级在哪。
 就像 ibm 永远不知道  .com在哪。
 
 所以,只要是DNS服务器,它永远知道根在哪个地方。这个是必须知道的。
 
 所以当www.ibm.com去找 www.hp.com的时候
 DNS会直接找到根,根告诉DNS自己不知道,但是COM知道,于是DNS去找COM,然后COM告诉它HP可能知道,于是DNS去找HP。最终找到了www
 
 全球一共有13个根节点,一个在日本,一个在欧洲,其他的都在美国。
 而我们每次查询都绕道美国的话,就太慢了,所以我们国内都有镜像。我们的查询一般都是通过本地缓存来查询的。
 
 sohu.com一般叫域名。
 而
 www.sohu.com则一般叫主机名
 
 授权的过程其实就是 有个地方叫 3a 3a里面有个人它负责管理这里面所有的解析
 
 主机为了标示自己功能的不同,有一个“记录类型”的东西
 那么什么是记录呢?
 DNS实际上是一个数据库,它自己里面包含了各种一个个的对应关系。
 虽然都是对应关系,但是里面的记录是不一样的。
 比较常见的记录类型:
  1.FQDN --> IP   : A记录(Address)
  2.IP --> FQDN : 指针记录(PTR)
  3.DOMAIN --> SERVER : NS (Name Server)
  4.DOMAIN --> MTA  : MX (Mail eXchanger)用于标示一个域的邮件域名是谁的
  5.大麻子 -- > Jerry :  CNAME 记录类型(正式名称记录类型)
  6.       : SOA (Start Of Authority)用于标明当前域的起始授权域类型
          一般标示一个域的主域名服务器是谁的。

DNS服务器的类型:
主名称服务器和从名称服务器
 为了保证服务的可用性,一般在一个域内,我们配置一个人主政,其他人辅政。
 这就意味着,我们有三台服务器,每一台都能清楚的知道这个域内所有的主机名。但是如果当有一个新的主机获得了域名,则会在主服务器中(主政)创建/删除。其他的辅政的服务器,为了保证自己的信息跟主政的服务器一致,它会每过一段时间就去主政服务器上复制一份。这种保证同步的方式叫
 区域传送:
 
  axfr 完全区域传送 将所有的信息都传送
  ixfr 增量区域传送 只将新增的信息都传送
  
 一般来讲主服务器会主动通知从服务器来同步数据的。每当有新的东西进入的时候,就会主动通知。从服务器就立刻同步,而不根据设定的同步时间。
 这样就直接避免了主服务器当机而从服务器没有获得更新的缺憾。


缓存服务器
 加速访问,还能节约带宽
 当第一个人访问过域名之后,第二个人如果再次访问,则直接从缓存中读取。而根本没有真正的去连接
 
转发器:
 实现内外防火墙隔离的两台DNS服务器之间交互的
 


对于名称解析来讲:
 正向和反向永远不能在同一屋檐下生存
 正向:需要一个单独的数据库文件
 反向:也需要一个单独的数据库文件。

我们有个域,这个域中会有2个文件,这个两个文件中则定义了所有正向和反向的名称解析。
这个文件就是一个区域。

区域是一个逻辑概念
域:则是一个逻辑概念。
  这种传送一般是在主从服务器上进行的
一个域包含一个正向区域,一个反向区域。
域和区域没有固定的包含关系,一个域可以包含很多区域,
考虑到完整的关系,则每一个子域就有两个文件

 一个用户想查询www.a.org的时候是如何工作的呢?
1.先去查找/etc/host文件,看看host文件中有没有对应的解析记录
2.查找本地的当前这个主机上的DNS缓存
3.通过一个客户端工具去查找第一个DNS服务器,
4.DNS服务器又要查找Server的缓存
5.如果没有缓存,则查看是否是自己解析的域。
  有则联系本地的域
  将结果返回给用户 authoritive 权威解析。【15:46】
   ---------------------
   |非权威答案:不是本服务器的域,是直接从缓存中获得的
   ----------------------
6.之后找根……

此后会介绍如何简单实现域名解析.....请看第二篇文章

你可能感兴趣的:(DNS服务器概念的简单的介绍,与搭建一个简单的DNS名称缓存服务器,实现域名解析(一))