域名系统(DNS)

这是对域名系统(DNS)的功能和组织的简要描述。提供它是为了让用户熟悉所涉及的概念、使用的(经常令人困惑的)术语,以及所有部分如何组合在一起形成一个操作系统。

所有网络系统都使用网络地址运行,例如IPv4和IPv6。对于大多数人来说,使用名称比使用看起来无穷无尽的网络地址数字要容易得多。最早的ARPANET系统(因特网就是从它演变而来的)使用主机文件将名称映射到地址,每当发生变化时,主机文件就分发给所有实体。在操作上,一旦网络实体超过100个,这样的系统就会迅速变得不可持续,这导致了我们今天使用的域名系统的规范和实现。

DNS命名系统被组织成一个由多个层次组成的树结构,因此它自然创建了一个分布式系统。树中的每个节点都有一个标签,该标签定义了其权限域(其区域或区域)。树中最顶层的节点是根域;它将委托给下一层的域,这些域通常称为顶级域(tld)。它们依次委托给二级域(sld),以此类推。顶级域名(tld)包括一组特殊的顶级域名,称为国家代码顶级域名(cctld),其中每个国家都被分配一个唯一的两个字符的国家代码,从ISO 3166作为其域名。

tld:Top Level Domain

sld:Second Level Domain

请注意

域名系统由ICANN (https://www.icann.org)(一个501c非盈利实体)控制;他们目前的政策是,任何由三个或三个以上字符组成的新顶级域名,都可以由任何商业赞助商团体提出,如果符合ICANN的标准,将被添加到顶级域名中。

委托和授权的概念沿着DNS树(DNS层次结构)向下流动,如下所示:

域是树中节点的标签。域名唯一标识DNS树中的任何节点,并从左到右写入,通过组合所有域标签(每个标签在其父区域或权限域内都是唯一的),用句点分隔每个组件,直到根域。在上图中,以下是所有域名:

example.com

b.com

ac.uk

us

org

根有一个独特的标签"(dot),当它写为一个域名时通常被省略,但当它写为一个完全限定域名(FQDN)时,dot必须存在。因此:

example.com     # domain name
example.com.    # FQDN
授权和委托
每个域(节点)都从它的父域获得了授权。授权包括特定的职责,以确保它授权的每个域在其区域或授权域内具有唯一的名称或标签,并维护其授权域的授权列表。职责还包括操作两个(或更多)名称服务器(可以与第三方签订合同)的操作需求,这些服务器将在区域文件中包含其授权区域内所有域标签的权威数据。同样,树结构确保了DNS名称空间是自然分布的。

下图说明了DNS名称空间中的每个级别和每个域都存在权威名称服务器:

请注意

域(domain)和专区(zone)之间的区别可能令人困惑。实际上,这些术语在DNS中通常是同义使用的。然而,如果你喜欢有向图和树结构理论或类似的理论,一个区域可以被认为是通过任何节点(或域)的弧,域在其顶点。因此,该内存域包含域下的所有名称空间。然而,这可能导致子区域的概念,而子区域确实在原始DNS规范中定义过。幸运的是,分区这个词已经消失在时间的迷雾中。

根服务器

根服务器是DNS权威基础设施的关键部分。有13个根服务器(a.g root-servers.net到m.g root-servers.net)。历史上,数字13是基于512字节UDP消息中可以包含的最多的名称和IPv4数据,而不是某些文化中认为不吉利的数字。512字节的UDP数据限制不再是一个限制因素,所有根服务器现在都支持IPv4和IPv6。此外,几乎所有的根服务器都使用anycast,现在有超过300个根服务器实例在全球范围内提供服务(更多信息参见https://www.root-servers.org)。根服务器是DNS中所有名称解析的起点

名称解析

一个终端用户应用程序,如浏览器(1),当需要解决的名字如www.example.com,使得最小内部系统调用函数解析的实体称为存根解析器(2)。存根解析器(使用存储的IP地址)接触一个解析器(缓存名称服务器或全方位的解析器)(3),进而联系所有必要的权威域名服务器(4、5、6)提供答案,然后返回到用户(2,1)。为了提高性能,所有的解析器(包括大多数stub解析器)都会缓存(存储)它们的结果,这样对相同数据的后续请求就会从解析器的缓存中获取,这样就不需要重复名称解析过程和使用耗时的资源。存根解析器、解析器和权威名称服务器之间的所有通信都使用DNS协议的查询和响应消息对。

DNS协议和查询

DNS查询在保留的53端口上使用UDP协议(但在网络的某些部分TCP和TLS都可以选择使用)。

下图显示了根据DNS查询和响应表示的名称解析过程。

存根解析器向解析器发送一个递归查询消息(在查询的QUESTION部分中带有所需的域名)。递归查询只是要求解析器找到完整的答案。stub解析器只发送递归查询,并且总是需要解析器的服务。递归查询的响应如下:

  1. 用户问题的答案在查询响应的部分答案中
  2. 错误(例如NXDOMAIN - name不存在)。

解析器收到用户的递归查询后,如果答案在其缓存中,则立即响应,或者访问DNS层次结构以获得答案。解析器总是从根服务器开始,并发送一个迭代查询(4、5和6)。对迭代查询的响应可以是:

  1. 解析器问题的答案在查询响应的部分答案中
  2. 推荐(由一个空的答案部分表示,但在权威服务器部分显示数据,通常在响应的附加部分显示IP地址)。
  3. 错误(例如NXDOMAIN - name不存在)。

如果响应是一个答案或一个错误,它们将立即返回给用户(并缓存以备将来使用)。如果响应是引用,则解析器需要采取额外的操作来响应用户的递归查询。

从本质上说,引用表示被查询的服务器不知道答案(响应的答案部分为空),但它将解析器引用到权威名称服务器(在响应的权威部分),它在查询的问题部分提供的域名中知道这些服务器。因此,如果问题是针对域名www.example.com,发送迭代查询的根服务器将在AUTHORITY部分中添加.com权威名称服务器的列表。解析器从AUTHORITY部分中选择一个服务器,并向其发送迭代查询。类似地,.com权威名称服务器会发送一个包含example.com权威名称服务器列表的推荐。这个过程沿着DNS层次继续下去,直到收到一个答案或一个错误,此时用户的原始递归查询将被发送一个响应

注意:

DNS层次结构总是从根服务器开始向下访问;在DNS层次结构中没有“向上”的概念。显然,如果解析器已经缓存了.com权威域名服务器的列表,并且用户的递归查询问题包含一个以.com结尾的域名,它可以省略对根服务器的访问。然而,这只是缓存的产物(在本例中是性能提升),并没有改变DNS层次结构中自上而下访问的概念。

DNS and BIND 9

BIND 9是DNS协议的完整实现。BIND 9可以被配置(使用它的named.conf文件)为权威的名称服务器、解析器,以及在受支持的主机上的存根解析器。虽然大型运营商通常为每个系统提供单一功能的DNS服务器,但较小的运营商会发现BIND 9灵活的配置特性支持多种功能,例如单个DNS服务器同时充当权威名称服务器和解析器。

提供了基本的权威名称服务器、解析器和转发解析器的示例配置,以及高级配置和安全配置。

DNS安全概述

DNS是一个通信协议。所有的通信协议都可能受到颠覆和窃听的攻击。对于用户来说,审计他们在操作环境中暴露的各种威胁并实施适当的解决方案是很重要的。BIND 9是DNS协议的一个特定实现,提供了大量的安全特性。本节的目的是帮助用户从可用的安全特性范围中选择适合其特定用户环境的特性。

下面显示了一个通用的DNS网络,后面是文本描述。一般来说,离图的左边越远,实现就越复杂。

下面的注释指的是上图中编号的元素

1可以使用各种系统管理技术和方法来保护BIND 9的本地环境,包括文件权限,在监狱中运行BIND 9,以及使用访问控制列表

2. 远程名称守护进程控制(remote name daemon control, rndc)程序允许系统管理员控制名称服务器的操作。大多数BIND 9包或端口都预先配置了本地(环回地址)安全。如果从远程主机调用rndc,则需要进一步配置。nsupdate工具使用DDNS (Dynamic DNS)特性,允许用户动态更改zone文件的内容。nsupdate的访问和安全性可以使用named.conf语句或使用TSIG或SIG(0)加密方法来控制。显然,如果用于rndc或DDNS的远程主机完全位于用户控制的网络中,则可以认为不存在安全威胁。因此,任何实现需求都取决于站点的安全策略。

3. 跨公共网络从主权威名称服务器转移到一个或多个从属权威名称服务器的区域存在风险。区域传输可以使用named.conf语句、TSIG加密方法或TLS来保护。显然,如果二级权威名称服务器都位于一个完全由用户控制的网络中,则可以认为不存在安全威胁。任何实现需求同样取决于网站的安全策略。

4. 如果权威名称服务器的操作员(主要或次要)希望确保DNS对用户发起的关于他们负责的区域的查询的响应只能来自他们的服务器,用户接收到的数据与发送的数据相同,不存在的名称是真实的,那么DNSSEC是唯一的解决方案。DNSSEC需要对权威名称服务器和访问这些服务器的任何解析器进行配置和操作更改。

5. 典型的与互联网连接的终端用户设备(pc、笔记本电脑,甚至移动电话)要么具有存根解析器,要么通过DNS代理进行操作。存根解析器需要区域或全服务解析器的服务来完全回答用户的查询。大多数pc和笔记本电脑上的存根解析器通常具有缓存能力以提高性能。目前还没有标准的存根解析器或实现DNSSEC的DNS代理工具。可以将BIND 9配置为在受支持的Linux或Unix平台上提供此类功能。TLS上的DNS可以配置为验证存根解析器和区域(或全服务)解析器之间数据的完整性。但是,除非解析器和权威名称服务器实现DNSSEC,否则端到端的完整性(从权威名称服务器到存根解析器)不能得到保证。

域名系统(DNS)说明相关推荐

  1. 实习笔记0708 https协议/ django中间件/接口测试/内网与外网/域名系统DNS

    1 https协议 https://www.cnblogs.com/superfeeling/p/11561340.html https://www.cnblogs.com/an-wen/p/1118 ...

  2. 计算机网络应用层笔记--域名系统DNS

    域名系统DNS 标识因特网上主机的方式 主机名 IP地址 域名系统(DNS) 工作过程 互联网的域名结构 顶级域名 国家顶级域名nTLD 通用顶级域名gTLD 基础结构域名 二级域名 类别域名 行政区 ...

  3. 域名系统(DNS)概述

    什么是域名系统(DNS) 在互联网中,使用IP地址作为机器的绝对地址根本行不通,原因如下: 不好记忆,例如告诉你们学校官网的IP地址是"201.15.3.188",你可能根本记不住 ...

  4. 微软官网服务器dns,域名系统 (DNS)

    域名系统 (DNS) 08/07/2020 本文内容 适用于:Windows Server 2022.Windows Server 2019.Windows Server 2016 域名系统 (DNS ...

  5. 计算机网络——域名系统DNS

    文章目录 1.域名系统DNS的作用 2.层次树状结构的域名系统 3.域名解析的过程 4.总结 1.域名系统DNS的作用     当我们想要访问某个网页时,我们输入的地址并不是其IP地址,而是输入一个域 ...

  6. python socket 域名_python实现域名系统(DNS)正向查询的方法

    本文实例讲述了python实现域名系统(DNS)正向查询的方法.分享给大家供大家参考,具体如下: 域名系统(DNS)是一个分布式的数据库,主要是用来把主机名换成IP地址. DNS存在有两大理由: (1 ...

  7. 域名系统DNS知识点

    域名系统 DNS  是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 因特网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户-服务器方式. 域名只是个逻辑概念. 域名 ...

  8. java ftp 域名解析_域名系统DNS和FTP

    域名系统概述 域名系统DNS(Domain Name System)是英特网使用的命名系统,用于把便于人们使用机器名字转化为IP地址. 为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?IP地 ...

  9. 域名系统DNS、文件传送协议FTP、动态主机配置协议DHCP、远程登录协议TELNET、电子邮件协议(SMTP/POP3/IMAP)、常用端口

    1.DNS域名系统 Domain Name System DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务. 这里的分布式数据库是指,每个站点只保留它自己的那部分数据. 域名具 ...

  10. 6-2应用层-域名系统DNS

    域名系统(DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.cskaoyan.com)转换为便于机器处理的IP地址.域名系统的组成包括:域名空间.分布式数据库.域名服 ...

最新文章

  1. ios关于用xib创建的cell 自动返回cell的高度问题!
  2. 阿里云天池大赛赛题解析――深度学习篇
  3. SCCM 2016 使用PXE 部署操作系统(四)
  4. vs2010下使用ADO.NET Entity Data Model
  5. 【Java源码分析】HashMap源码分析
  6. ViewPager 的适配器 PagerAdapter 、FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
  7. 「软件项目管理」一文详解软件配置管理计划
  8. emacs org 日历_发送电子邮件并使用Emacs检查您的日历
  9. git Gui从服务器拉去项目
  10. kernel笔记——库文件与系统调用
  11. 在Abaqus中怎么施加初始应力
  12. 【实战】python 小型商品销售统计系统
  13. 昆明理工计算机学硕,昆工计算机老师之我见
  14. 英语3500词(14/20)dynasty主题 (2022.1.26)
  15. Datawhale团队第二期录取名单!
  16. 系统分析师学习笔记(六)
  17. 什么是Advanced Color ePaper (ACeP) 多彩墨水屏及其应用
  18. 详解Git合并冲突——原因及解决 “Automatic merge failed; fix conflicts and then commit the result.“
  19. QQ宠物客户端2005III新年新版新亮相(转)
  20. Acer Aspire V5-471G修复BIOS

热门文章

  1. { content-visibility: auto; contain-intrinsic-size: 1px 5000px;}
  2. PyQt5 基本教程
  3. Windows上的巧克力味Chocolatey详解
  4. speedoffice(PPT)插入的图片如何裁剪呢?
  5. Arduino动手做(48)---三轴ADXL345模块
  6. DB9针型:RS485输出信号及接线端子引脚分配
  7. 论文阅读笔记——Multi-Label Learning with Global and Local Label Correlation(具有全局和局部标签相关性的多标签学习)
  8. 2023南宁师范大学计算机考研信息汇总
  9. Hadoop 图像小文件查重方法
  10. Java数组讲解(数组,字符串数组,多态数组)