【Linux实验室】DNS域名解析服务——超详细实验操作!


DNS域名解析服务——超详细实验操作!!!

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。

本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作。我的目标是,读完此文后,你就能完全理解DNS。

💧CSDN@划过手的泪滴t

序言

域名服务器(Domain Name Server,DNS)是一种用于存储和管理域名解析信息的服务器。它们负责将易于记忆的域名(例如 www.example.com)转换为与之关联的 IP 地址(例如 192.0.2.1),以便在互联网上进行通信。它是一个由分层的*DNS 服务器(DNS server)*实现的分布式数据库;它还是一个使得主机能够查询分布式数据库的应用层协议。
DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。

一句话总结:域名系统 (DNS) 是互联网的电话簿

DNS 基本概述

与 HTTP、FTP 和 SMTP 一样,DNS 协议也是一种应用层的协议,DNS 使用客户-服务器模式运行在通信的端系统之间,在通信的端系统之间通过 UDP 运输层协议来传送 DNS 报文。

DNS 通常不是一门独立的协议,它通常为其他应用层协议所使用,这些协议包括 HTTP、SMTP 和 FTP,将用户提供的主机名解析为 IP 地址。
每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符

下面根据一个示例来描述一下 DNS 解析过程:

你在浏览器键入 www.someschool.edu/index.html 时会发生什么?为了使用户主机能够将一个 HTTP 请求报文发送到 Web 服务器 www.someschool.edu ,会经历如下操作:

  • 同一台用户主机上运行着 DNS 应用的客户端。
  • 浏览器从上述 URL 中抽取出主机名 www.someschool.edu ,将这台主机名传给 DNS 应用的客户端。
  • DNS 客户端向 DNS 服务器发送一个包含主机名的请求,请求 DNS 服务器解析这个主机名的 IP 地址。
  • DNS 客户端最终会收到一份回答报文,其中包含该目标主机的 IP 地址。
  • 一旦浏览器收到目标主机的 IP 地址后,它就能够向位于该 IP 地址 80 端口的 HTTP 服务器进程发起一个 TCP 连接。

除了提供 IP 地址到主机名的转换,DNS 还提供了下面几种重要的服务:

  • 主机别名(host aliasing),有着复杂主机名的主机能够拥有一个或多个其他别名,比如说一台名为 relay1.west-coast.enterprise.com 的主机,同时会拥有 enterprise.com 和 www.enterprise.com 的两个主机别名,在这种情况下,relay1.west-coast.enterprise.com 也称为规范主机名,而主机别名要比规范主机名更加容易记忆。应用程序可以调用 DNS 来获得主机别名对应的规范主机名以及主机的 IP地址。

  • 邮件服务器别名(mail server aliasing),同样的,电子邮件的应用程序也可以调用 DNS 对提供的主机名进行解析。

  • 负载分配(load distribution),DNS 也用于冗余的服务器之间进行负载分配,这种负载又叫做内部负载。繁忙的站点例如 cn com 被冗余分布在多台服务器上,每台服务器运行在不同的端系统,每个都有着不同的 IP 地址。由于这些冗余的 Web 服务器,一个 IP 地址集合因此与同一个规范主机名联系。DNS 数据库中存储着这些 IP 地址的集合。由于客户端每次都会发起 HTTP 请求,所以 DNS 就会在所有这些冗余的 Web 服务器之间循环分配了负载。

    还有一种负载是全局负载,全局负载一般部署在多个机房之间,每个机房都会有自己的 IP 地址,当用户访问某个域名时,会在这些 IP 之间进行轮询,如果某个数据中心挂了,就会将对应的 IP 地址删除,比如某个 DNS 客户端会轮询访问北京和上海的机房,一个挂了会直接使用另外一个,这就是全局负载的概念。

分布式、层次数据库

分布式设计首先解决的问题就是 DNS 服务器的扩展性问题。因此 DNS 使用了大量的 DNS 服务器,它们的组织模式一般是层次方式,并且分布在全世界范围内。没有一台 DNS 服务器能够拥有因特网上所有主机的映射。相反,这些映射分布在所有的 DNS 服务器上。

大致来说有三种 DNS 服务器:根 DNS 服务器、 顶级域(Top-Level Domain, TLD) DNS 服务器和权威 DNS 服务器。这些服务器的层次模型如下图所示。

在这里插入图片描述

DNS 层次结构

我们现在来讨论一下上面域名服务器的层次系统。

  • 根 DNS 服务器 ,有 400 多个根域名服务器遍及全世界,这些根域名服务器由 13
    个不同的组织管理。根域名服务器的清单和组织机构可以在 https://root-servers.org/ 中找到,根域名服务器提供 TLD服务器的 IP 地址。
  • 顶级域 DNS 服务器,对于每个顶级域名比如 com、org、net、edu 和 gov 和所有的国家级域名
    uk、fr、ca 和 jp 都有 TLD 服务器或服务器集群。所有的顶级域列表参见 https://tld-list.com/ 。TDL 服务器提供了权威 DNS 服务器的 IP 地址。
  • 权威 DNS 服务器,在因特网上具有公共可访问的主机,如 Web
    服务器和邮件服务器,这些主机的组织机构必须提供可供访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。一个组织机构的权威 DNS 服务器收藏了这些 DNS 记录。

DNS 查询步骤

下面我们来描述一下 DNS 的查询步骤,从 DNS 解析 IP 再到 DNS 报文返回的一系列流程。

注意:通常情况下 DNS 会将查找的信息缓存在浏览器或者计算机本地中,如果有相同的请求到来时,就不再会进行 DNS 查找,而会直接返回结果。

整个流程如下图所示

在这里插入图片描述
1.用户在浏览器中输入网址 www.cxuan.vip 并点击回车后,查询会进入网络,并且由 DNS 解析器进行接收。

2.DNS 解析器会向根域名发起查询请求,要求返回顶级域名的地址。

3.根 DNS 服务器会注意到请求地址的前缀并向 DNS 解析器返回 com 的顶级域名服务器(TLD)的 IP 地址列表。

4.然后,DNS 解析器会向 TLD 服务器发送查询报文。

5.TLD 服务器接收请求后,会根据域名的地址把权威 DNS 服务器的 IP 地址返回给 DNS 解析器。

6.最后,DNS 解析器将查询直接发送到权威 DNS 服务器。

7.权威 DNS 服务器将 IP 地址返回给 DNS 解析器。

8.DNS 解析器将会使用 IP 地址响应 Web 浏览器。

DNS 查询类型

DNS 查找中会出现三种类型的查询。通过组合使用这些查询,优化的 DNS 解析过程可缩短传输距离。在理想情况下,可以使用缓存的记录数据,从而使 DNS 域名服务器能够直接使用非递归查询。

  • 递归查询:在递归查询中,DNS 客户端要求 DNS 服务器(一般为 DNS 递归解析器)将使用所请求的资源记录响应客户端,或者如果解析器无法找到该记录,则返回错误消息。
    在这里插入图片描述

在这里插入图片描述

  • 迭代查询:在迭代查询中,如果所查询的 DNS 服务器与查询名称不匹配,则其将返回对较低级别域名空间具有权威性的 DNS 服务器的引用。然后,DNS 客户端将对引用地址进行查询。此过程继续使用查询链中的其他 DNS 服务器,直至发生错误或超时为止。

在这里插入图片描述

非递归查询:当 DNS 解析器客户端查询 DNS 服务器以获取其有权访问的记录时通常会进行此查询,因为其对该记录具有权威性,或者该记录存在于其缓存内。DNS 服务器通常会缓存 DNS 记录,查询到来后能够直接返回缓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值