详解 Internet的目录DNS协议
时间:2023-01-30 15:12:01 | 来源:建站知识
时间:2023-01-30 15:12:01 来源:建站知识
DNS体系介绍
为什么要有DNS
DNS = Domain Name System
在Internet中,主机和路由器都有一个标识符: IP地址,这是为了在网络层服务(后面会单独写文章解释)
和人对比,ip类似于人的身份证号
但是我们彼此称呼的时候,张三 叫 李四 不可能叫他 511024XXXXXX身份证号吧,而是直呼名字,那在互联网中,这些网络设备,也可以拥有名字,这就是域名,也叫主机名
DNS 就负责建立 IP地址和主机名之间建立映射关系,负责两者转换。
DNS提供的功能
DNS是通过专门的服务器实现它的功能,称为DNS服务器。
- 主机名到IP地址的转换
- 主机别名
- 一个主机可以有一个规范主机名和多个主机别名
- 邮件服务器别名
- 负载分配
- DNS实现冗余服务器:一个IP地址 集合可以对应于同一个规范主机名。
(比如你访问的http://baidu.com,访问量巨大,不可能让单一的主机来负责请求,一般是很多个主机映射到一个域名上面,负载均衡)
DNS特点
- 分布式数据库: 一个由分层 DNS服务器实现的分布式数据库
- 应用层协议:DNS服务器实现域名转换 (域名/地址转换)、
为什么不集中式DNS?
- 单点故障 导致DNS服务瘫痪
- 巨大访问量
- 远距离集中式数据库维护
- 不可扩展!
分层结构:
客户机怎样决定主机名www.amazon.com的IP地址?
从后往前查询
- 客户机查询根服务器得到com DNS服务器
- 客户机查询com DNS服务器得到amazon.comDNS服务器
- 客户机查询amazon.comDNS服务器得到 http://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服务器记录更新: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 = 主机别名
http://www.ibm.com的真名为http://servereast.backup2.ibm.com
- value = 真实的规范主机名
相当于 一个域名指向另一个域名
( name server )
- name = 域名(如http://foo.com)
- value = 该域权威名字服务器的主机名
相当于指向了它的域名服务器
还有很多规则不在这里一一列举
DNS协议、消息
DNS也有自己的查询报文和应答报文,但是格式是相同的
报文头部
- 标识符: 16位,查询和应答报文使 用相同的标识符
- 标志:有若干个标志构成,分别标 识不同的功能
- 查询/应答-0/ 1
- 查询希望是/非递归查询-1/0
- 应答可/否获得(支持)递归查询 -1/0
- 应答是/否来自权威名字服务器 -1/ 0
如何在DNS数据库中插入记录
例子:刚刚创建一个“network”公司
- 如果你想在注册登记机构注册你的域名http://network.com,则
- 需要提供你自己的基本权威DNS服务器和辅助权威DNS服务器的名字和IP地址
- 该注册登记机构将下列两条资源记录插入注册机构的DNS系统中:
(network.com, dns1.network.com, NS)
(dns1.network.com, 212.212.212.1, A)
- 如果你想建立一个网站,则可以将网址http://www.network.com以类型A的方式记录到你的权威DNS服务器http://dns1.network.com中。
- 如果你想建一个邮件服务器,则可以将http://mail.network.com以类型MX的方式记录到你的权威DNS服务器http://dns1.network.com中。
DNS安全问题
DDoS攻击:对根域名服务器或顶级域名服务器发起拒绝服务攻击,基于主机耗尽型的DNS查询拒绝服务
重定向攻击:中间人攻击、DNS中毒攻击(发送欺骗的域名解析结果给DNS服务器)
利用DNS实现DDoS攻击: DNS反弹式拒绝服务攻击(DNS reflector attacks,又称DNS amplification attacks)。伪造客户地址向大量的dns服务器发出请求,导致客户无法访问 dns服务器进行域名解析。