(计算机网络自学笔记)应用层协议——DNS

DNS:因特网的目录服务

前言

       因特网上的主机和人类一样,也可以使用多种方式进行识别。主机的一种识别方法是用它的主机名,这些名字便于记忆,也乐于被人们接受。
       主机也可以使用所谓 IP 地址进行识别。一个 IP 地址由 4 个字节组成,并有着严格的层次结构。我们说 IP 地址具有层次结构,是因为从左至右它包含了越来越详细的关于主机的
位置息。
       人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的、有着层次结构的 IP 地址。因此需要一种能进行主机名到 IP 地址转换的目录服务,这就是域名系统

一、DNS 提供的服务

       DNS是:①一个由分层的DNS服务器实现的分布式数据库;②一个允许主机查询分布式数据库的应用层协议。
       DNS 服务器通常是运行 BIND 软件服务器机器。DNS 协议运行在 UDP 之上,使用 53 号端口。
       DNS使用域名守护程序(named)主要提供了域名解析服务 。
       DNS 用于将用户提供的主机名解析为 IP 地址。例如当某个用户主机上的一个浏览器请求某个网页时,为了使用户的 HTTP 请求消息发送到 Web 服务器,用户主机首先必须获得Web 服务器的 IP 地址。

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

  1. 主机别名,主机别名比主机规范名更容易记忆,例如 www.mit.edu,其真实的服务器名字(主机规范名)并不是 www.mit.edu,大家可以用 ping 命令发现它真实的名字。
  2. 邮件服务器别名,一个单位或域中负责邮件收发的主机。
  3. 负载均衡,DNS 也可以用于在冗余的服务器之间进行负载分配。可以配置很多冗余的Web 服务器,一个 IP 地址集合对应于同一个规范主名。DNS 数据库中存储着这些 IP 地址集合。当客户机为映射到这个 IP 地集合的名字发出一个 DNS 请求时,该服务器用包含全部这些地址的消息进行回答,但在每个回答中轮回这些地址排放的顺序。因为客户机通常总是向 IP 地址排在最前面的服务器发送 HTTP 请求消息,所以就在所有这些冗余的 Web 服务器之间均衡分配负载。这是一种非常传统的负载均衡技术。

二、工作机理概述

       假设运行在用户主机上的某些应用程序(如 Web 浏览器)需要将主机名转换为 IP 地址。这些应用程序将调用 DNS 的客户机端,并指明需要被转换的主机名。在很多系统中,应用程序执行这种转换调用函数gethostbyname()。
       DNS 的客户机端接收到转换请求后,向网络中发送一个 DNS 查询消息。所有的 DNS 请求和回答消息使用 UDP 数据报经端口 53 发送。过若干时间后,用户主机上的客户机端接收到一个映射的 DNS 回答消息。这个查询结果则被传递到应用程序。
       从用户调用应用程序的角度看,这是一个简单、直接的转换服务。但事实上,实现这个服务的系统非常复杂,它由分布于全球的大量 DNS 服务器组成。

1. DNS 不能采用集中式设计的原因:

.单点故障
.通信负担
.延迟
.维护

分布式、层次数据库
       为了处理规模问题,DNS 使用了大量的服务器,它们以层次方式组织,并且分布在全世界范围内。
       大致有 3 种类型的 DNS 服务器:根 DNS 服务器、顶级域 DNS 服务器和权威服务器。这些服务器以图中所示的层次结构组织起来。

DNS

假定一个 DNS 客户机要确定主机名 www.ynu.edu 的 IP 地址

  1. 域名查询主机的 DNS Client 向本地域名服务器发起一个查询。
  2. 本地域名服务器首先与根服务器之一联系,取得顶级域名 edu 的 TLD 服务器的 IP 地址。
  3. 本地域名服务器然后与这些 TLD 服务器之一联系,取得 ynu.edu 权威服务器的 IP 地址。
  4. 本地域名服务器为 www.ynu.edu 联系权威服务器,返回 www 主机的 IP 地址。
  5. 最后,本地域名服务器将结果返还给 DNS Client,操作系统将结果作为函数调用返回值给应用程序。
2. 三种类型的 DNS 服务器。
  1. 根 DNS 服务器:在因特网上有 13 个根 DNS 服务器(标号为 A 到 M),其中大部分位于北美洲。
  2. 顶级域(TLD)服务器:这些服务器负责顶级域名(如 COM, ORG, GOV 和所有国家的顶级域名(如 CN)。
  3. 权威 DNS 服务器:将主机的名字映射为 IP 地址,由一个单位的权威 DNS 服务器负责保存这些记录。另一种方法是支付费用将这些记录存储在某个 ISP 的权威 DNS 服务器中。

       根、TLD 和权威 DNS 服务器都处在 DNS 服务器的层次结构中。
       本地 DNS 服务器严格来说并不属于 DNS 服务器的层次结构,但它对 DNS 层次结构又是很重要的,本地 DNS 服务器通常与主机相隔不超过几个路由器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将域名简析请求转发到 DNS 服务器层次结构中。

DNS 查询过程中可以是迭代查询或是递归查询

三、DNS 缓存

       为了改善时延性能并减少在因特网上传输的 DNS 消息数量,DNS 广泛使用了缓存技术

       DNS 缓存的原理非常简单。在请求链中,当一个 DNS 服务器接收一个 DNS 回答时,服务器能将回答中的信息缓存在本地存储器。
       另一个对相同主机名的查询到达该DNS服务器时,该服务器能够提供所要求的IP地址,即使它不是该主机名的权威服务器。但 DNS 服务器在一段时间后通常设置为两天将丢弃缓存的信息。
 

四、DNS 记录和消息

       实现DNS分布式数据库的所DNS服务器共同存储着资源记录(Resource Record,RR)
       RR 提供了主机名到 IP 地址的映射。每个 DNS 回答消息包含了一条或多条资源记录。
       资源记录通常以文本的形式保存在 DNS 服务器的配置文件中。

资源记录是一个包含了下列字段的 4 元组:(Name,Value,Type,TTL)

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

记录 类型
A 终端设备地址
NS 权威域名服务器
CNAME 别名的规范域名,使用于单个网络地址对应多个服务
MX 邮件交换记录

Name 和 value 的值取决于 Type:
       如果 Type=A,则 Name 是主机名,value 是该主机名的 IP 地址。因此,一条类型为 A 的 资源记录提供了标准的主机名到 IP 地址的映射。
        如果 Type= NS,则 Name 是域,而 value 是知道如何获得该域中主机 IP 地址的权威 DNS服务器的主机名
        如果 Type=CNAME,则 value 是别名为 Name 的主机对应的规范主机名。该记录能够向请求主机提供一个主机名对应的规范主机名。
        如果 Type=MX,则 value 是别名为 Name 的邮件服务器的规范主机名。使用 MX 记录,一个公司的邮件服务器和其他服务器(如它的 web 服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS 客户机应当请求一条 MX 记录;而为了获得其他服务器的规范主机名,DNS 客户机应当请求一条 CNAME 记录。

如果觉得还可以就点点关注,持续更新

ylz

猜你喜欢

转载自blog.csdn.net/weixin_43522969/article/details/106132681