cmu440(15) DNS

DNS设计

作用

DNS: name -> IP address

挑战

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

为什么不是集中DNS

  • 流量
  • 遥远的中央数据库
  • 单点更新
  • 单点故障
    Doesn’t scale!

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地址:
    • aol.com and www.aol.com map to multiple IP addrs.
  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用于查询
  • UDP
  • 为什么不适用TCP?
    当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(TCP)
    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

你可能感兴趣的:(cmu440(15) DNS)