应用层学习笔记五.DNS:因特网的目录服务

主机的一种标识方法是用它的主机名,主机名几乎没有提供关于主机在因特网中位置的信息。主机也可以使用IP地址进行 标识。

IP地址由四个字节组成,并且有严格的层次结构。每个字节都被句点分隔开,标识0~255的十进制数字。

DNS提供的服务

域名系统(Domain Name System):进行主机名到IP地址转换的目录服务。

  • 由一个分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议
  • DNS服务器通常是运行BIND软件的UNIX机器
  • DNS协议运行在UDP之上,使用53号端口

当某个用户主机(浏览器)请求一个URL的时候会发生以下现象:

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

DNS提供的其他重要服务:

  • 主机别名 host aliasing:应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址
  • 邮件服务器别名 mail server aliasing:电子邮件应用程序可以调用DNS,对提供的邮件服务器别名进行解析,以获得该主机的规范主机名及其IP地址
  • 负载分配:DNS也用于在冗余的服务器之间进行负载分配。一个IP地址集合和同一个规范主机名相联系。当客户对映射到某地址集合的名字发出一个DNS请求时,该服务器用IP地址的整个集合进行响应,但在每个回答中循环这些地址次序。

DNS工作机理概述

集中式设计DNS:只有一个DNS服务器,这种设计有以下问题:

  • 单点故障
  • 通信容量:单个DNS服务器需要处理所有的DNS查询请求
  • 远距离的集中式数据库:可能导致严重时延
  • 维护:数据库庞大维护困难
分布式、层次数据库

为了处理扩展性问题,DNS使用了大量DNS服务器,以层次方式组织分布在世界范围内。

有3种类型的DNS服务器:

  • 根DNS服务器
  • 顶级域DNS服务器(TLD:Top-Level-Domain):顶级域名包括com、org、net、edu和gov以及所有国家的顶级域名
  • 权威DNS服务器:在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织结构的权威DNS服务器收藏了这些DNS记录。

本地DNS服务器:不属于服务器的层次结构,每个ISP都有一台本地DNS服务器。当主机和某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本地DNS服务器的IP地址。

Alt

  1. 向本地DNS服务器发送DNS查询报文,报文中含gaia.cs.umass.edu这一主机名
  2. 本地服务器将报文转发给根DNS服务器
  3. 根DNS服务器注意到edu前缀,向本地DNS服务器返回负责edu的TLD的IP地址列表
  4. 本地服务器向TLD服务器之一发送查询报文
  5. TLD服务器注意到umass.edu前缀,使用权威服务器的IP地址响应
  6. 本地DNS服务器直接向dns.umass.edu重发查询报文
  7. dns.umass.edu用gain.cs.umass.edu的IP地址进行响应
  8. 本地DNS服务器转发DNS响应报文给请求主机

一共四份查询报文和四份回答报文(以上情景假设TLD服务器知道权威服务器的IP地址,通常情况而言,TLD服务器只知道中间的DNS服务器)

一般而言,从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的

DNS缓存

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS使用了缓存技术。

在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将该回答中的信息缓存在本地存储器中。由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后将丢弃缓存的信息。

DNS记录和报文

资源记录Resource Record提供了主机名到IP地址的映射。每个DNS回答报文中包含一条或多条资源记录。

资源记录是一个四元组 (Name,Value,Type,TTL)

TTL是记录的生存时间,决定了资源记录应当从缓存中删除的时间。Name和Value的值取决于Type

  • Type=A,Name是主机名,Value是主机名对应的IP地址
  • Type=NS,Name是个域,Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询
  • TYPE=CNAME,Value是别名为Name的主机对应的规范主机名。
  • TYPE=MX,Value是别名为Name的邮件服务器的规范主机名。
DNS报文

DNS只有查询和回答报文。

Alt

  • 前12个字节是首部区域:
    • 标识符:16比特,用于标识该查询,会被复制到对查询的回答报文中,用于匹配请求和回答
    • 标志字段中有若干标志,1比特的查询/回答标志位指出查询(0)还是回答(1)报文。当某DNS服务器是所请求的名字的权威DNS服务器时,1比特的“权威的”标志为被置在回答报文中。
    • 还有4个有关数量的字段,指出首部后的4类数据区域出现的数量
  • 问题区域包含正在进行的查询信息。
    • 名字字段:正在被查询的主机名字
    • 类型字段:有关该名字的正被询问的问题类型
  • 回答区域包含了对最初请求的名字的资源记录 。可以包含多个RR,因此一个主机名可以有多个IP地址
  • 权威区域包含了其他权威服务器的记录
  • 附加区域包含了其他有帮助的记录
在DNS数据库中插入记录

一般确保一条NS记录和一条A记录输入对应的TLD服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值