【计算机网络】2.5 DNS:因特网的目录服务

第二章第五节 因特网的目录服务

  DNS(域名系统)提供了一种能运行主机名到IP地址转换的因特网目录服务;一方面,他让人能够记住如taobao.com这样的主机别名;另一方面,他提供给路由器可理解的IP地址,故DNS就是根据主机名查询对应的IP地址的服务。当然,这不是DNS的全部,接下来,我们将深入探讨DNS的技术细节。

Outline

Notes

## DNS提供的服务

  • DNS的定义
    • 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库
    • 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用层协议
  • DNS运行在53号端口
  • DNS具体提供的服务
    • 提供了主机名到IP地址映射的转换服务
    • 主机别名(host aliasing):有着复杂主机名的主机可以有一个或者多个别名,例如aaa.bbb.com的主机可能还会有aaa.com和www.bbb.com两个别名,在这种情况下,aaa.xxx.com叫做规范主机名(canonical hostname)。主机别名的特征是比规范主机名更容易记忆,DNS可以提供根据主机别名获取规范主机名的服务。
    • 邮件服务器别名(canonical hostname):类比于主机别名,电子邮件应用程序可以调用DNS,对提供的邮件服务器别名进行解析,以获得该主机的规范主机名及其IP地址。
    • 提供负载均衡(load distribution): 一般来说,繁忙访问的大型站点是分布在多台服务器上的,没太服务器均运行在不同的端系统上,每个都有着不同的IP地址。这个时候,主机名和IP地址就不是一一对应的关系,而是一个主机名对应一个IP地址的集合。 在大量的,连续的多次访问中,DNS在这些所有冗余的Web服务器之间循环分配负载以达到负载均衡的目的:在向这个主机名发出DNS请求的时候,服务器会用包含全部这些IP地址的报文进行回答,而客户机总向报文中排在最前的IP地址发出请求

## DNS工作机制概论

  集中式DNS即指在因特网上只使用一个DNS服务器,不使用这样集中式DNS的原因是:集中式数据库完全没有可扩展能力,使用过程中会出现 单点失败问题、流量问题、距离问题、维护性问题;

【DNS服务器的层次和类别】

  DNS服务器是有层次的,它可以分为三种类型:根DNS服务器, *域(Top-Level Domain, TLD )DNS服务器和权威DNS服务器,分别对应下面三个层次(从上至下)

【计算机网络】2.5 DNS:因特网的目录服务

  • 根DNS服务器:因特网上有13个根DNS服务器, 其中大部分分布在北美洲,下面显示的是2012年的根DNS服务器分布图

【计算机网络】2.5 DNS:因特网的目录服务

  • *域DNS服务器:*域服务器负责*域名,如com,org,net,edu和gov和所有国家的*域名如cn,uk,jp (edu 教育机构域名, gov *部门域名 , org 非盈利性的组织 ,com 企业域名 )
  • 权威DNS服务器:在因特网上具有公共可访问的主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。 由组织机构的权威DNS服务器保存这些DNS记录,组织机构可以选择实现它自己的权威DNS服务器来保持这些记录,或者通过支付费用将这些记录存储在某个服务提供商的DNS服务器中。多数大学和大公司实现和维护它们自己基本的权威DNS服务器、
  • 本地DNS服务器:还有另一类比较重要的DNS服务器,叫做本地DNS服务器(local DNS server),它并不在我们上面所说的DNS层次结构中。本地DNS服务器的作用有以下两点:
    • 主机和本地DNS服务器一般是相邻的,当主机发出DNS请求的时候,该请求会被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中
    • 本地DNS服务器可以通过缓存主机名/IP地址,减少对相同主机名的查询而消耗的时间,改善时延和性能

【DNS中查询记录】

实际上,在DNS服务中, 并不能通过对某个DNS服务器,通过仅仅一次的“请求/响应”就取得主机名/IP地址的查询结果。相反,需要多个不同的DNS服务器之间进行多次交互才能获取最终的查询结果

【计算机网络】2.5 DNS:因特网的目录服务(迭代)【计算机网络】2.5 DNS:因特网的目录服务(递归)

例如上图所示的例子中用到了递归查询迭代查询,主机cis.poly.edu想知道主机gaia.cs.umass.edu的IP地址,并且主机gaia.cs.umass.edu 的权威DNS服务器为 dns.umass.edu。
则DNS查询过程如下:
1. 主机cis.poly.edu首先向它的本地DNS服务器dns.poly.edu发送一个DNS查询报文,该查询报文包含有要求转换的主机名gaia.cs.umass.edu
2. 本地DNS服务器dns.poly.edu将该报文转发至根DNS服务器。
3. 该根DNS服务器注意到DNS服务器的edu前缀并向本地DNS服务器dns.poly.edu返回负责edu的*域DNS服务器的IP地址列表
4. 本地DNS服务器接收到了返回的报文,根据报文中的IP地址,向该*域DNS服务器发送查询报文
5. *域DNS服务器注意到了umass.edu前缀,用包含权威DNS服务器的IP地址进行响应,该权威DNS服务器是负责马萨诸塞大学的dns.umass.edu
6. 本地DNS服务器直接向主机dns.umass.edu重发查询报文
7. 主机dns.umass.edu使用gaia.cs.umass.edu的IP地址作为响应,传回给本地DNS服务器
8. 最终,本地DNS服务器将包含最终结果的查询报文转发给请求主机cis.poly.edu

【DNS缓存】

  • 为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用缓存技术。
  • 原理:当一个DNS服务器接收一个DNS回答(例如,包含主机名到IP地址的映射)时,DNS服务器能将回答中的信息缓存在本地存储器。由于主机与主机名的IP地址映射决不是永久的,所以DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

## DNS记录和报文

 【DNS记录】

实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。下面是RR的基本格式:

【计算机网络】2.5 DNS:因特网的目录服务

  • Type=A  name 是主机名  Value是IP地址。 例如: (relay1.bar.foo.com, 145.37.93.126, A)
  • Type=NS name 是域 (如 foo.com)  Value是该域的权威名字服务器的IP地址。如(foo.com,  dns.foo.com, NS)
  • Type=MX Value是与name相联系的邮件服务器。如(mail.bar.foo.com)
  • Type=CNAME Value是别名为name的主机对应的规范主机名。如(foo.com, relay1.bar.foo.com)
  • 注:通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名
  • 以图2-21为例,
    • 如果一台DNS服务器是某个特定主机名的权威DNS服务器, 那么该DNS服务器一定会有一条包含该主机名的类型A记录,因为主机dns.umass.edu是主机gaia.cs.umass.edu的权威DNS服务器,所以dns.umass.edu中可能包含这样一条记录: (gaia.cs.umass.edu, 145.33.76.751, A) 
    • 如果一台DNS服务器是某个特定主机名的权威DNS服务器,那么该服务器将包含一条A记录和一条类型NS记录,例如edu*域DNS服务器并不是机gaia.cs.umass.edu的权威DNS服务器,那么它将包含
      • 一条指向权威DNS服务器主机名的NS记录(umass.edu,dns.umass.edu,NS)
      • 一条解释该权威DNS服务器IP地址的A记录(dns.umass.edu, 128.119.40.111, A)

【DNS报文】

DNS只有两种报文,即查询和回答报文,并且这两种报文有着相同的格式。下图是DNS报文格式:

【计算机网络】2.5 DNS:因特网的目录服务

  • 前12字节是首部区域,其中包括标识符、标志、问题数、回答RR数、权威RR数、附加RR数共6个字段。标识符字段16bit,用于标识这个查询报文。
    • 标识符会被复制到对查询的回答报文中,以便让客户机用它来匹配发送的请求和接收到的回答。标志字段含有若干标志,1bit的“查询,回答”标志位指出报文是查询报文(0)还是回答报文(1)。当某DNS服务器恰好是被请求主机的权威DNS服务器时,1bit的“权威的”标志位被放置在回答报文中。如果客户机希望DNS服务器执行递归查询,特设置1bit的“希望递归”标志位。如果该DNS服务器支持递归查询,在它的回答报文中会对1bit的“递归可用”标志位置位。在首部区域中,还有4个“数量”字段,分别给出了在首部后四类数据区域出现的数量。
  • 问题区域包含正在进行查询的信息。该区域包括:名字字段,用于指出正在被查询的主机名字;类型字段,用于指出正在被询问的问题类型,例如是A类问鹿还是MX问题。
    • 回答区域包含了对最初请求的名字的资源记录。每个记录中含有Type(如A记录、NS记录、CNAME记录、MX记录)字段、Value字段和TTL字段。前面讲过,一个主机名可以对应多个IP地址,所以在一个回答报文的回答区域中可以包含多条RR。权威区域包含了其他权威DNS服务器的记录
  • 附加区域包含了其他一些有用的记录,例如,在一个MX请求的回答报文的回答区域包含了一条资源记录,给出了邮件服务器的规范主机名。该附加区域就可以包含一个类型A记录,提供对于该邮件服务器的规范主机名的IP地址

【在DNS中插入记录】

  • 假设你刚刚创建了一个网络乌托邦(Network Utopia)公司, 要做的第一件事情就是到注册登记机构注册域名(networkutopia.com), 注册的时候,需要向该机构提供你的权威DNS服务器的名字和IP地址,该注册机构将确保将一个NS记录和A记录被插入com*域DNS服务器中。
  • 例如,假设我们的网络乌托邦(Network Utopia)公司的权威服务器的主机名和IP地址为dns1.networkutopia.com  和 128.119.40.111,则该注册机构将以下记录插入com*域DNS服务器
    • (networkutopia.com, dns1.networkutopia.com,NS)
    • (dns1.networkutopia.com, 128.119.40.111,A)
上一篇:hdu3714 三分找最值


下一篇:【计算机网络】 一个小白的DNS学习笔记