Internet的目录DNS

DNS体系介绍

为什么要有DNS

DNS = Domain Name System

在Internet中,主机和路由器都有一个标识符: IP地址,这是为了在网络层服务(后面会单独写文章解释)

和人对比,ip类似于人的身份证号

但是我们彼此称呼的时候,张三 叫 李四 不可能叫他 511024XXXXXX身份证号吧,而是直呼名字,那在互联网中,这些网络设备,也可以拥有名字,这就是域名,也叫主机名

DNS 就负责建立 IP地址和主机名之间建立映射关系,负责两者转换。

DNS提供的功能

DNS是通过专门的服务器实现它的功能,称为DNS服务器。

  • 主机名到IP地址的转换

  • 主机别名

  • 一个主机可以有一个规范主机名和多个主机别名

  • 邮件服务器别名

  • 负载分配

    • DNS实现冗余服务器:一个IP地址 集合可以对应于同一个规范主机名。

    (比如你访问的baidu.com,访问量巨大,不可能让单一的主机来负责请求,一般是很多个主机映射到一个域名上面,负载均衡)

DNS特点

  • 分布式数据库: 一个由分层 DNS服务器实现的分布式数据库

  • 应用层协议:DNS服务器实现域名转换 (域名/地址转换)、

为什么不集中式DNS?

  • 单点故障 导致DNS服务瘫痪

  • 巨大访问量

  • 远距离集中式数据库维护

  • 不可扩展!

分层结构:

客户机怎样决定主机名www.amazon.com的IP地址?

从后往前查询

  1. 客户机查询根服务器得到com DNS服务器
  2. 客户机查询com DNS服务器得到amazon.comDNS服务器

  3. 客户机查询amazon.comDNS服务器得到 www.amazon.com 的IP地址

顶级域(TLD)服务器和权威DNS服务器

  • 顶级域服务器(top-level domain servers):

    13个顶级域名服务器和镜像服务器 一共全球 500多个

    • 负责顶级域名 com, org, net, edu, etc, 和所有国家的顶级域名 uk, fr, ca, jp.
    • Network solutions 公司维护com顶级域的TLD服务器
    • Educause 公司维护edu顶级域的 TLD服务器
  • 权威DNS服务器(authoritative DNS servers): 在因特网上具有公共可访问主机 (如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。
    • 组织机构的权威DNS服务器负 责保存这些DNS记录。
    • 多数大学和公司维护它们的基本权威DNS服务器

本地DNS服务器

相当于一个本地代理

  • 严格来说不属于该服务器的层次结构

  • 每个ISP(如居民区ISP、公司、大学)都有一 个本地DNS

    • 也叫默认服务器
  • 当主机发出DNS请求时,该请求被发往本地DNS服务器。
  • 起着代理的作用,转发请求到层次结构中。

DNS工作原理

DNS 查询方法

具体DNS查询是如何实现的呢?

一般是如下两种方法

递归查询 (recursive query)

  • 简单来说就是:名字解析的负担交给被查询的名字服务器,它帮你查

  • 被查询的名字服务器负载重? 就像图中root DNS server

迭代查询(iterated query)

  • 简单来说:被查询的名字服务器 回复可以被 查询的名字服务器的IP地址,给你指路,并不帮你查询

  • “我不知道它的名字,但是可以问 服务器”

可以看到这种情况,查询都是本地DNS服务器,降低了root DNS server负担。

DNS缓存和权威DNS记录更新

本地DNS服务器缓存,加快访问速度

  • 一旦名字服务器获得DNS映射, 它将缓存该映射到局部内存
    • 服务器在一定时间后将丢弃缓存的信息
    • 本地DNS服务器可以缓存TLD服务器的IP地址
      • 因此根DNS服务器不会被经常访问
  • 权威DNS服务器记录更新:IETF动态更新/通报机制 • RFC 2136

DNS记录

DNS: 存储资源记录(RR,Resource Records)的分布式数据库

DNS记录是以RP格式四元组方式存储的

RR 格式: (name, value, type,ttl)

  • Type=A(Adress)
    • name = 主机名
    • value = IP地址

    相当于 一个域名指向一个ip地址

  • Type=CNAME(canonical)

    • name = 主机别名

    www.ibm.com的真名为servereast.backup2.ibm.com

    • value = 真实的规范主机名

    相当于 一个域名指向另一个域名

  • Type=NS

    ( name server )

    • name = 域名(如foo.com)

    • value = 该域权威名字服务器的主机名

    相当于指向了它的域名服务器

还有很多规则不在这里一一列举

DNS协议、消息

DNS也有自己的查询报文和应答报文,但是格式是相同的

报文头部

  • 标识符: 16位,查询和应答报文使 用相同的标识符

  • 标志:有若干个标志构成,分别标 识不同的功能

  • 查询/应答-0/ 1

  • 查询希望是/非递归查询-1/0

  • 应答可/否获得(支持)递归查询 -1/0

  • 应答是/否来自权威名字服务器 -1/ 0

如何在DNS数据库中插入记录

例子:刚刚创建一个“network”公司

  • 如果你想在注册登记机构注册你的域名network.com,则

  • 需要提供你自己的基本权威DNS服务器和辅助权威DNS服务器的名字和IP地址

  • 该注册登记机构将下列两条资源记录插入注册机构的DNS系统中:

(network.com, dns1.network.com, NS)

(dns1.network.com, 212.212.212.1, A)

  • 如果你想建立一个网站,则可以将网址www.network.com以类型A的方式记录到你的权威DNS服务器dns1.network.com中。

  • 如果你想建一个邮件服务器,则可以将mail.network.com以类型MX的方式记录到你的权威DNS服务器dns1.network.com中。

DNS安全问题

DDoS攻击:对根域名服务器或顶级域名服务器发起拒绝服务攻击,基于主机耗尽型的DNS查询拒绝服务

重定向攻击:中间人攻击、DNS中毒攻击(发送欺骗的域名解析结果给DNS服务器)

利用DNS实现DDoS攻击: DNS反弹式拒绝服务攻击(DNS reflector attacks,又称DNS amplification attacks)。伪造客户地址向大量的dns服务器发出请求,导致客户无法访问 dns服务器进行域名解析。

Default image
LIU
代码是躯体,思想是灵魂

Leave a Reply