cmu440(15) DNS

2018-04-11  本文已影响0人  lqsss

DNS设计

作用

DNS: name -> IP address

挑战

我们如何将这个扩展到广域网?

为什么不是集中DNS

goals

基本上是一个广域分布式数据库
可扩展性
稳健性
不需要:原子性、强一致性

DNS主机条目的属性

不同种类的映射是有可能的:

  1. 简单案例:1-1域名和IP地址之间的映射:
    • kittyhawk.cmcl.cs.cmu.edu maps to 128.2.194.242
  2. 多个域名映射到相同的IP地址:
    • eecs.mit.edu and cs.mit.edu both map to 18.62.1.6
  3. 单个域名映射到多个IP地址:
  4. 某些有效的域名不映射到任何IP地址:
    • for example: cmcl.cs.cmu.edu

DNS设计:层次结构定义

  1. 层次结构中的每个节点都存储一个以相同后缀结尾的名称列表
    • Suffix = path up tree
  2. 例如,给定这棵树,在哪里将被存储:


    image.png

DNS设计:区域定义

  1. 区域=连续的名称空间部分
    • 例如,完整的树,单个节点或子树
  2. 一个区域有一组关联的名称服务器
    • 必须存储名称和树链接的列表
image.png

DNS设计:续。

  1. 通过说服所有者节点创建/委托一个子区域来创建区域
    • 区域内的记录存储多个冗余名称服务器
    • 主/主名称服务器手动更新
    • 辅助/冗余服务器通过区域传输名称空间进行更新
    • 区域传输是DNS服务器“配置”的批量传输 - 使用TCP来确保可靠性
  2. Example:
    • 由CMU.EDU管理员创建的CS.CMU.EDU
    • 谁创建CMU.EDU或.EDU?

DNS:根名称服务器

  1. 负责“根”区
  2. 全球13个根名称服务器
    • 目前{a-m} .root-servers.net
  3. 本地名称服务器在无法解析名称时联系根服务器
    • 使用众所周知的根服务器进行配置

服务器/解析器

  1. 每台主机都有一个解析器
    • 通常是应用程序可链接到的库
    • 手动配置本地名称服务器(例如/etc/resolv.conf)
  2. 名称服务器
    • 要么负责一些区域或...
    • 本地服务器
      • 查找本地主机的远程主机名
      • 通常回答关于本地区域的查询

Typical Resolution

image.png

解决www.cmu.edu的步骤

  1. 应用程序调用gethostbyname()(RESOLVER)
  2. 解析器联系本地名称服务器(S1)
  3. S1向根服务器(S2)查询(www.cmu.edu
  4. S2返回cmu.edu的NS记录(S3)

S3的记录怎么样?
这是附加信息部分的用途(PREFETCHING)
S1查询www.cmu.edu的S3
S3返回www.cmu.edu的记录

查询方法

  1. 递归查询:
    • 服务器熄灭并搜索更多信息(递归)
    • 只返回最终答案或“找不到”
  2. 迭代查询:
    • 服务器尽可能多地响应(迭代)
    • “我不知道这个名字,但问这个服务器”

工作负载对选择的影响?

  1. 本地服务器通常会递归
  2. 根/远程服务器进行迭代
image.png

工作量和缓存

  1. 所有服务器/名称是否可能同样受欢迎?
    • 为什么这会成为一个问题? 我们如何解决这个问题?
  2. DNS响应被缓存
    • 快速响应重复翻译
    • 其他查询可能会重用查找的某些部分
  3. DNS负面查询被缓存
    • 不必重复过去的错误
    • 例如。 拼写错误,在resolv.conf中搜索字符串
  4. 缓存的数据周期性超时
    • 由数据所有者控制的数据的生存时间(TTL)
    • 每条记录都传递TTL

可靠性

  1. DNS服务器被复制
  1. UDP用于查询
  1. 超时尝试备用服务器
  2. Try alternate servers on timeout
    Exponential backoff when retrying same server
  3. Same identifier for all queries
    Don’t care which server responds
上一篇下一篇

猜你喜欢

热点阅读