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

  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服务器,分别对应下面三个层次(从上至下)

  • 根DNS服务器:因特网上有13个根DNS服务器, 其中大部分分布在北美洲,下面显示的是2012年的根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服务器之间进行多次交互才能获取最终的查询结果

(迭代)(递归)

例如上图所示的例子中用到了递归查询迭代查询,主机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的基本格式:

  • 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报文格式:

  • 前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)

【计算机网络】2.5 DNS:因特网的目录服务的更多相关文章

  1. [计算机网络-应用层] DNS:因特网的目录服务

    我们知道有两种方式可以识别主机:通过主机名或者IP地址.人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的.有着层次结构的IP地址.为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录 ...

  2. DNS:因特网的目录服务

    作者:华科小涛,http://www.cnblogs.com/hust-ghtao/ 有两种方式来识别主机:通过主机名或IP地址.人们当然喜欢便于记忆的主机名,而路由器则喜欢定长的.有层次结构的IP地 ...

  3. 计算机网络之域名系统DNS

    域名系统DNS 域名系统DNS(Domai NameSystem)是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 许多应用层软件经常直接使用域名系统,但计算机的用户只是间接而不是 ...

  4. 计算机网络Web应用层与运输层(HTTP/TCP)

    应用层协议原理 Web和HTTP DNS:英特网的目录服务 运输层 面向连接的运输:TCP及拥塞原理 一.应用层协议原理 DNS域名解析: (用例:www.baidu.com)域名解析是网络请求的第一 ...

  5. 计算机网络自顶向下方法第2章-应用层(application-layer).2

    2.4 DNS:因特网的目录服务 2.4.1 DNS提供的服务 DNS的定义 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用 ...

  6. [A Top-Down Approach][第二章 应用层]

    [A Top-Down Approach][第二章 应用层] 标签(空格分隔): 未分类 网络应用是计算机网络存在的理由 首先从定义几个关键的应用层概念开始 应用程序所需要的网络服务,客户和服务器,进 ...

  7. 【计算机网络】 一个小白的DNS学习笔记

    参考书籍 <计算机网络-自顶向下>  作者 James F. Kurose   DNS的作用   DNS是因特网的目录服务 DNS是因特网的目录服务,它提供了主机名到IP地址映射的查询服务 ...

  8. 【计算机网络】 DNS学习笔记 (>﹏<)

    参考书籍 <计算机网络-自顶向下>  作者 James F. Kurose   DNS的作用   DNS是因特网的目录服务 DNS是因特网的目录服务,它提供了主机名到IP地址映射的查询服务 ...

  9. computer networking ---------DNS

    [DNS]domain named system 域名解析系统,即相当于对www.baidu.com的类似的域名进行解析,对于人而言,记忆一些域名相比于记忆一些Ip地址来说简单的多,而对于计算机而言, ...

随机推荐

  1. codeforces 689E E. Mike and Geometry Problem(组合数学)

    题目链接: E. Mike and Geometry Problem time limit per test 3 seconds memory limit per test 256 megabytes ...

  2. 谁动了我的cpu——oprofile使用札记

    引言 cpu无端占用高?应用程序响应慢?苦于没有分析的工具? oprofile利用cpu硬件层面提供的性能计数器(performance counter),通过计数采样,帮助我们从进程.函数.代码层面 ...

  3. HDU 2340 Obfuscation (暴力)

    题意:给定一篇文章,将每个单词的首尾字母不变,中间顺序打乱,然后将单词之间的空格去掉,得到一个序列,给出一个这样的序列,给你一个字典,将原文翻译出来. 析:在比赛的时候读错题了,忘记首尾字母不变了,一 ...

  4. [知识积累]python3使用xlwt时写入文档字体颜色和边框样式

    可借鉴的网址:https://www.programcreek.com/python/example/39979/xlwt.Alignment 可以直接通过pip安装xlwt 个人理解: xlwt中对 ...

  5. 部分安卓微信浏览器无法触发onchange事件

    这是安卓微信的一个遗留问题. 解决办法很简单: 将input标签 <input type=“file" name="image" accept="imag ...

  6. [Usaco2006 Jan] Dollar Dayz 奶牛商店

    Description 约翰到奶牛商场里买工具.商场里有K(1≤K≤100).种工具,价格分别为1,2,-,K美元.约翰手里有N(1≤N≤1000)美元,必须花完.那他有多少种购买的组合呢? Inpu ...

  7. Hello!六月

    把这里当做记事本应该没人介意吧: 太忙了!六月! ACM: 背包九讲

  8. Data Center Maintenance CodeForces - 950E

    http://codeforces.com/contest/950/problem/E 贴一份板子 #include<cstdio> #include<vector> #inc ...

  9. python面向对象的3个特点

    封装 封装是从业务逻辑中抽象对象时,要赋予对象相关数据与操作,将一些数据和操作打包在一起的过程.封装是使用对象的主要魅力之一,它提供了一个简单方法来创建复杂方案,解决了世界是如何工作的这一问题,我们自 ...

  10. 214 Shortest Palindrome 最短回文串

    给一个字符串 S, 你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串.例如:给出 "aacecaaa",返回 "aaacecaaa ...