「计算机网络:自顶向下方法阅读笔记」DNS:因特网的目录服务

DNS:因特网的目录服务

《计算机网络:自顶向下方法》阅读笔记系列

背景

因特网上的主机可以使用多种方式来进行标识。

我们最常见的一种主机的标识方法是使用它的主机名(hostname),比如www.baidu.com、www.google.com等,使用这种标识方法,我们能够很容易的记忆。

但是也有缺点,主机名中几乎没有提供(即使有也很少)关于主机在因特网中位置的信息,而且主机名往往是由自定义长度的数字字母组成,路由器很难对其进行处理。通俗来说就是,不容易对主机进行定位,因此也就不利于数据的传输(因为不知道目的主机的位置)。

由于这些原因,主机也可以使用IP地址(IP Address)进行标识。

IP地址由4个字节组成,并且有着严格的层次结构,这些层次结构的存在让我们当从左到右扫描它时,能得到够越来越具体的关于主机位于因特网何处的信息(即在众多网络的哪个网络中)。

但是也有缺点,使用IP地址标识方法,计算机是舒服了,对于我们普通人类来说,脑子里天天记录这些点分十进制的IP地址(例如百度的IP地址为202.108.22.5)可太难了,因此DNS就应运而生。

DNS提供的主要服务

简单来说,DNS(Domain Name System)提供就是能够进行主机名到IP地址转换的目录服务。

在《计算机网络:自顶向下方法》中这样描述DNS:

1⃣️ 一个由分层的**DNS服务器(DNS Server)**实现的分布式数据库;

2⃣️ 一个使得主机能够查询分布式数据库的应用层协议;

3⃣️ DNS协议运行在UDP之上,使用53号端口。

DNS协议是应用层协议,然而,DNS的作用又不同于Web应用、文件传输应用以及电子邮件应用,DNS不是一个直接和用户打交道的应用,而是一个为因特网上的用户应用程序以及其他软件提供一种核心功能,即将主机名转换为其背后的IP地址。

简单示例

当我们在浏览器的地址框中输入我们要访问的主机名(例如www.baidu.com)时,为了使我们的主机能够将一个HTTP请求报文发送到百度的Web服务器,我们的主机必须获得百度的IP地址。这个过程中,DNS就发挥了它的作用,过程描述如下:

  1. 我们的主机上运行着DNS应用的客户端;
  2. 浏览器从我们输入的URL中抽取出主机名www.baidu.com,并且将这台主机名传给DNS应用的客户端;
  3. DNS客户向DNS服务器发送一个包含主机名的请求;
  4. DNS客户最终会收到一份回答报文,其中含有对应于该主机名的IP地址;
  5. 一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接。

DNS提供的其他服务

除了进行主机名到IP地址的转换外,DNS还提供了一些重要的服务:

1⃣️ 主机别名(host aliasing)

当一个主机名很复杂时,可以拥有一个或多个简化的别名,而简化之前的主机名也成为规范主机名(canonical hostname),通常主机别名肯定是比主机规范名要更容易记忆的。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。

2⃣️ 邮件服务器别名(mail server aliasing)

电子邮件应用程序可以调用DNS,对提供的主机名别名进行解析,以获得该主机的规范主机名及其IP地址。

3⃣️ 负载均衡(load distribution)

在现实中,一个访问需求大的站点有多台服务器,而每台服务器有不同的IP地址,因此一个规范主机名往往与一个IP地址集合相联系。DNS数据库中存储着这些IP地址集合,当客户对映射到某地址集合的名字发出一个DNS请求时,DNS服务器用IP地址的整个集合进行相应,但在每个回答中循环这些地址次序(客户通常总是向IP地址排在最前面的服务器发送请求报文),所以DNS就在所有这些冗余的服务器之间循环分配了负载。

DNS工作机理概述

DNS由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成。

DNS的一种简单设计思路是只使用一个DNS服务器,存储有所有的映射,客户直接将所有的查询直接发往该唯一的DNS服务器,该服务器直接对所有的查询客户作出相应。但这种设计不适用于当今的因特网,当今的因特网有着数量巨大的并持续增长的主机。这种集中式设计会带来一些问题包括:

  1. 单点故障(a single point of failure)。如果该DNS服务器崩溃,则整个因特网瘫痪。
  2. 通信容量(traffic volume)。大量的DNS查询请求难以处理。
  3. 远距离的集中式数据库(distant centralized database)。单个DNS服务器不可能“邻近”所有查询客户,远距离查询会导致严重的时延。
  4. 维护(maintenance)。数据库庞大的基础上还要频繁更新。

鉴于单一DNS服务器运行集中式数据库完全无法扩展,因此DNS采用了分布式的设计方案。

事实上,DNS是一个在因特网上实现分布式数据库的精彩范例。

DNS服务器以层次方式组织,大致可以分为3种类型:

1⃣️ 根DNS服务器

有400多个根名字服务器遍及全世界,根名字服务器提供TLD服务器的IP地址。

2⃣️ 顶级域(Top-Level Domain)DNS服务器

对于每个顶级域(如com、org、net、edu和gov)和所有国家的顶级域(如cn、fr、uk、ca和jp),都有TLD服务器或服务器集群。TLD服务器提供权威DNS服务器的IP地址。

3⃣️ 权威DNS服务器

在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。多数大学和大公司实现和维护自己基本和辅助(备份)的权威DNS服务器。

3种类型的DNS服务器层次组织结构如下图所示:

3种服务器间交互的过程(以获取www.amazon.com的IP地址为例):

  1. 客户首先与根服务器之一联系,它将返回顶级域名com的TLD服务器的IP地址。
  2. 与TLD服务器之一联系,它将为amazon.com返回权威服务器的IP地址。
  3. 最后,与amazon.com权威服务器之一联系,它为主机名www.amazon.com返回其IP地址。

🌟本地DNS服务器(local DNS server)

除了以上3种类型的DNS服务器,还有一类重要的DNS服务器,称为本地DNS服务器(local DNS server)

每个ISP(如一个居民区的ISP或者一个机构的ISP)都有一台本地DNS服务器,这些本地DNS服务器通常“邻近”用户主机。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中。

各种DNS服务器交互的过程如图所示:

在这里插入图片描述

TLD服务器不一定知道用于主机的权威DNS服务器的IP地址,通常是TLD服务器只是知道中间的某个DNS服务器,该中间DNS服务器依次才能知道用于该主机的权威DNS服务器。

在实践中,DNS查询通常遵循上图中的模式:从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的。

DNS缓存(DNS caching)

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS服务器在接收到一个DNS回答(包含主机名到IP地址的映射)时,将映射缓存在本地存储器中。

由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后,将丢弃缓存的信息。

本地DNS服务器也可以缓存TLD服务器的IP地址,因而允许本地DNS服务器绕过查询链中的根DNS服务器,事实上,因为缓存的存在,大多数DNS查询中,根服务器都被绕过了。

DNS记录

所有的DNS服务器共同构成了DNS分布式数据库,在这些DNS服务器中存储了资源记录(Resource Record),RR提供了主机名到IP地址的映射。每个DNS回答报文包含一条或多条资源记录。

RR是一个4元组:(Name,Value,Type,TTL)

TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。

Name和Value的值取决于Type:

  1. if Type = A then Name是主机名,Value是该主机名对应的IP地址。
  2. if Type = NS then Name是个域,Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。
  3. if Type = CNAME then Value是别名为Name的主机对应的规范主机名。
  4. if Type = MX then Value是个别名为Name的邮件服务器的规范主机名。

在DNS查询链中,通常在获得一个NS类型的RR时,会携带一个A类型的RR,A类型的RR记录了NS类型的RR中Value的DNS服务器的IP地址。

DNS报文

DNS只有两种报文:查询报文和回答报文,且具有相同的格式。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值