DNS概述与DNS查询

407 阅读3分钟

简述

  1. 解决了互联网主机/路由器的识别问题
    1. 每一台主机有一个唯一的地址,IP地址,本身是数字,不利用记忆,一般我们在上网的时候通过域名来访问,更好识别
    2. 有两套:1.IP地址 2. 域名
  2. 解决域名和IP地址映射
    1. DNS就是这个作用,一对一的翻译
    2. DNS是一个应用层协议,完成名字的解析
    3. DNS是多层命名服务器构成的分布式数据库

DNS的服务

  1. 域名向IP地址的翻译

  2. 主机别名(不好记的变得好记)

  3. 邮件服务器别名

  4. 负载均衡:web服务器

    • 域名向IP地址的映射时,可以提供多个服务器的地址
    • 没有新服务时,调整位置,轮流调整

为什么不使用集合中的DNS呢?

  1. 单点失败问题
    • 如果唯一的坏了,那整个互联网都坏掉了
  2. 流量问题
    • 十几亿都到这一个地方请求,流量巨大,成本巨大
  3. 距离问题
    • rtt 时间,如果放在中国,美国就慢了,放美国就中国慢了
  4. 维护性问题

分层式层次式数据库

  1. 分布在全世界

  2. 层次式

    1. 第一层根服务器root DNS servers
    2. 第二层顶级域服务器
    3. 第三层权威域名服务器

image

客户端想要查询www.amazon.com 的IP地址

  1. 先查询根服务器,找到com域名解析服务器
  2. 再查找com域名解析服务器,找到amazon.com的域名解析服务器
  3. 再查询amazon.com域名解析器,获得了www.amazon.com的IP地址

DNS 根域名服务器

  • 本地域名解析服务器无法解析域名时,访问根域名服务器
  • 根域名服务器
    • 如果不知道映射,访问权威域名服务器
    • 获得映射
    • 再向本地域名服务器返回映射
  • 全球共有13个根域名服务器

顶级域名服务器

  • 负责com,org,net,edu等以及国家顶级域名 cn,uk,fr等

权威域名服务器

  • 组织域名解析服务器,提供组织内部服务器的解析服务

本地域名解析服务器

  • 不严格属于层级体系
  • 每一个ISP有一个本地域名服务器
    • 默认域名解析服务器
  • 当主机进行DNS查询时,查询被发送到本地的域名服务器
    • 作为代理(Proxy),将查询转发给(层级式)域名解析服务器系统

image

DNS查询示例

image

1. 迭代查询

  • 被查询服务器返回域名解析服务器的名字

  • “我不认识整个域名,但是你可以问这服务器”

image

  1. 发给本地域名服务器
  2. 本地域名服务器问根域名服务器
  3. 根域名服务器返回顶级域名服务器地址
  4. 问顶级域名服务器 umass.edu的域名解析服务器相关的的权威服务器地址
  5. 返回umass.edu的权威服务器地址
  6. 问权威服务器他的具体的地址
  7. 返回IP地址

2.递归查询

  • 将域名解析的任务交给所联系的服务器

image

如果本地域名服务器无缓存,采用递归方法解析另一台主机时,用户主机和本地域名服务器发送的域名请求消息次数都为1次

DNS记录缓存和更新

  • 只要域名解析服务器获取域名---IP映射,即缓存这一映射
    • 一段时间过后,缓存条目会失效
    • 本地域名服务器一般会缓存顶级域名服务器的映射
      • 因此根域名服务器不经常被访问

参考:www.bilibili.com/video/BV1gb…