DNS域名解析系统

发布时间 2023-08-02 22:15:10作者: 每天提醒自己要学习

DNS域名解析系统

DNS系统需要解决的问题

  1. 如何命名设备
    1. 用有意义的字符串:好记,便于人类使用
    2. 解决一个平面命名的重名问题:层次化命名
  2. 如何完成名字到IP地址的转换
    1. 分布式的数据库维护和响应名字查询
  3. 如何维护:增加或者删除一个域,需要在域名系统中做那些工作

DNS的主要思路

  • 分层的、基于域的命名机制
  • 若干分布式的数据库完成名字到IP地址的转换
  • 运行在UDP之上端口为53的应用服务
  • 核心的Internet,但以应用层协议实现

DNS的主要目的

  • 实现主机名-IP地址的转换
  • 其他目的
    • 主机别名到规范名字(某地区,某机房,某机柜,某服务器)的转换
    • 邮件服务器别名到邮件服务器的正规名字的转换
    • 负载均衡

DNS名字空间

DNS域名结构

  • 一个层面命名设备会有很多重名
  • DNS采用层次树状结构的命名方法
  • Internet根被划分为几百个顶级域
  • 每个域下面可以划分若干个子域
  • 树叶是主机

区域名字服务器维护资源记录

  • 资源记录(RR)
    • 作用:维护 域名-IP地址的映射关系
    • 位置:Name Server的分布式数据库中
  • RR格式(domain_name,ttl,type,class,Value)
    • Domain_name:域名
    • ttl:生存时间(权威,缓冲记录)决定了资源记录应当从缓存中删除的时间
    • class类别:对于Internet,值为IN
    • value值:可以是数字,域名或ASCII串
    • type:
      • type=A
        • name为主机
        • value为IP地址
      • type=CNAME
        • name为规范名字的别名
        • value为规范名字
        • www.ibm.com的规范名字为servereast.backup2.ibm.com
      • type=NS
        • name域名
        • value为该域名的权威服务器的域名
      • type=MX
        • value为name对应的邮件服务器的名字

DNS工作流程

  • 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表
  • 若没有命中,则继续搜索操作系统的 DNS 缓存
  • 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的 DNS 缓存,查找成功则返回结果
  • 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
    • 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
    • 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权威域名服务器的地址
    • 本地域名服务器根据权威域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
  • 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起
  • 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起