1. 微擎百科首页
  2. 学无止境

什么是DNS?域名系统,DNS服务器和IP地址概念介绍

在本文结束之后,您应该对以下内容有更好的了解:
什么是DNS及其作用
DNS服务器做什么
Internet协议(IP)地址如何在DNS上下文中工作

重要概念

了解DNS,DNS服务器和IP地址时,有一些基本的思维模型需要熟悉。在开始了解DNS之前,现在仔细研究这些概念,

  • 帮助理解用于描述适合这些模型的行为的所有不同术语,并且
  • 帮助保持记忆。

当事情变得有些奇怪和陌生时,心智模型会为您提供参考框架。

因此,让我们奠定基础。

  • 查询和响应。这是Thing 1向Thing 2提出要求时,Thing 2响应该请求的时间。像这样:

2020072801031994

  • 看起来像这样的父子节点关系和图(只是更复杂)。

2020072801041199

 

树形图
  • 讯息。这不是查询和响应,因为没有响应。在DNS的世界中,消息的格式和内容根据使用情况而有所不同。

2020072801044547

信息
  • 客户-服务器关系。用最简单的术语来说,服务器是指为其他软件或硬件设备(称为“客户端”)提供功能的软件或硬件设备。

    准备大量有关服务器的讨论。事实证明,有很多服务器都在使用我们称之为DNS的服务器,以及当我们连接到Internet时,我们作为人类如何使用它。

2020072801053541

什么是DNS?

域名系统(DNS)将人类可读的域名(在URL或电子邮件地址中)映射到IP地址。例如,DNS将域名freecodecamp.org转换并映射到IP地址104.26.2.33。

为了帮助您完全理解此描述,本节详细介绍:

  • DNS发展的历史背景-它和IP地址解决了哪些问题?
  • 网站域名
  • IP地址

历史背景

1966年,美国政府机构高级研究计划局(ARPA)建立了一个名为ARPAnet的计算机网络。简而言之,可以将ARPAnet视为我们如今所知的Internet的第一版。

ARPAnet的主要目标包括

“(1)即使在部分设备或网络出现故障的情况下,也能提供可靠的通信;(2)能够连接到不同类型的计算机和操作系统;(3)是一种合作而不是由一个人控制的垄断公司。为了在设备出现故障时提供可靠的通信,ARPANET的设计使任何一个点或链接都不比其他任何一个都重要。这伴随着冗余路由的建立以及在网络任何部分发生故障时使用实时数据重新路由

问题所在

DNS和TCP / IP对于解决ARPAnet的两个问题至关重要:

对于ARPAnet,只有一个位置(名为HOSTS.TXT的文件)包含网络上每个主机的所有名称到地址的映射。

“ HOSTS.TXT由SRI的网络信息中心(称为“ NIC”)维护,并从单个主机SRI-NIC分发。[ * ] ARPAnet管理员通常将其更改通过电子邮件发送到NIC,并定期通过FTP发送到SRI- NIC并获取了当前的HOSTS.TXT文件。他们的更改每周一次或两次被编译到一个新的HOSTS.TXT文件中。

此设置面临三个挑战:

  1. 流量和负载-分发文件变得过多,负责主机无法处理。
  2. 名称冲突-每个主机必须有一个唯一的名称,并且没有集中的权限来阻止网络用户添加具有冲突(非唯一)名称的主机,从而“破坏了整个方案”。
  3. 一致性-更新文件并确保所有主机具有最新版本的行为变得不可能或至少非常困难。

本质上,HOSTS.TX是单点故障,因此此处的整个过程无法很好地扩展到一定数量的主机之外。ARPAnet需要一个分散和可扩展的解决方案。DNS就是这样。资源

同一网络内的主机到主机通信不够可靠。TCP / IP帮助解决了这个问题。

  1. 传输控制协议(TCP)为将消息(主机之间)转换为数据包的过程提供了质量保证措施。TCP协议是面向连接的,这意味着必须在源主机和目标主机之间建立连接。
  2. Internet协议(IP)定义了源主机和目标主机之间如何传送消息(数据包)。IP地址是通向网络主机的特定路径的唯一标识符。
  3. TCP和IP紧密协作,这就是为什么它们通常被称为“ TCP / IP”的原因。
  4. 尽管我不会在本文中深入探讨,但DNS的数据传输层同时使用了TCP和用户数据报协议(UDP)。UDP更快,更不可靠,并且不需要连接。TCP较慢,更可靠,但需要连接。在DNS中根据需要和适当的方式使用它们;不用说,将TCP包含在APRAnet中是对数据传输层的宝贵补充。

到1980年代初,DNS和TCP / IP(以及IP地址)已成为ARPAnet的标准操作程序。

这段历史非常简短。如果您想了解有关这些主题的更多信息,请参考本文末尾的参考资料部分。

现在我们有了一些历史背景,让我们继续学习有关域名和IP地址的更多信息。

网站域名

在DNS的上下文中,域名提供了一种用户友好的方式来指向非本地资源。这可能是网站,邮件系统,打印服务器或Internet上可用的任何其他服务器。域名不仅可以是网站!

“域名的目标是提供一种资源命名机制,以使名称可以在不同的主机,网络,协议族,互联网和管理组织中使用。

域名比IP地址更容易记住和输入终端或Internet浏览器。

域名是统一资源定位器(URL)的一部分,但是这些术语不是同义词。URL是资源的完整网址,而域名是网站的名称,并且是每个URL的子组件。

虽然URL和域名之间存在技术上的区别,但是Web浏览器通常以相同的方式对待它们,因此,如果您输入完整的Web地址或仅输入域名,您将进入网站。

顶级域和二级域

任何给定域都有两个部分:顶级域(TLD)和二级域(SLD)。从右(结束)到左(开始)时,域名的各个部分变得更加具体。

起初这可能会造成混淆。例如,让我们看一下“ freecodecamp.org”

  • 网址:https://www.freecodecamp.org
  • 域名:freecodecamp.com
  • TLD:org
  • SLD:freecodecamp

在ARPAnet成立初期,可用的TLD数量有限,包括com,edu,gov,org,arpa,mil和2个字母的国家/地区代码域。这些TLD最初是为参与ARPAnet的机构保留的,但后来在商业市场上可用。

如今,有相当数量的可用TLD,包括网络,航空,商务,合作社,信息,博物馆,名称等。

二级域名是可以通过域名注册商(例如Namecheap)个人购买的域名。

IP地址

尽管IP地址在功能上与DNS相关,但Internet协议本身在技术上与DNS分开。我已经为这种区别提供了历史背景,因此现在我将解释IP地址的功能。

如前所述,IP地址是指向网络上主机的特定路径的唯一标识符。我想引用一个电话号码和一个电话的类比:电话号码并不代表电话本身,它只是一种联系电话对象的方式。

用IP地址这种类比是合理的(至少在表面上)。IP地址代表一个端点,但不是端点本身。IP分配可以是固定的(永久的),也可以是动态的(灵活的,可以重新分配)。

像域名一样,IP地址的组织遵循分层结构。与域名不同,IP地址从左到右更具体。这是下面的IPv4示例:

该图显示129.144是网络部分,而50.56是IPv4地址的主机部分。
  • 网络:分配给您的网络的唯一编号
  • 主机:标识网络上的主机(机器)

如果需要更高的特异性,网络管理员可以将地址空间划分为子网,并委派其他号码

有多少个IP地址?

IPv4是ARPAnet在生产中使用的IP的第一个迭代。部署于80年代初期,它仍然是最流行的IP版本。这是一种32位方案,因此可以支持略超过40亿个地址。

但是等等,够了吗?不。

IPv6具有128位方案,从而可以支持340个十亿地址。它还可以改善IPv4的性能。

示例IPv4地址:

  • 104.26.2.33(freeCodeCamp)

IPv6地址示例:

  • 2001:db8:a0b:12f0 :: 1(压缩格式,不指向freeCodeCamp)

域名系统如何工作?

因此,我们已经了解了域名!我们已经了解了IP地址!现在它们与域名系统有什么关系?

首先,它们适合命名空间。

域名空间

正如语言“顶级”域和“第二”级域所暗示的那样,名称空间基于层次结构

“ …层次结构大致对应于组织结构,并使用“。”命名。作为标记层次结构之间边界的字符。” 来源

此树形图的根在顶部,可以最好地说明其结构:

什么是DNS?域名系统,DNS服务器和IP地址概念介绍
命名空间

让我们从顶部开始进行分解。

该图的顶部用“。”标记 被称为“根”。

“为DNS根目录区域提供服务的权威名称服务器,通常称为“根服务器”,是由世界许多国家的数百个服务器组成的网络。它们在DNS根区域中配置为13个命名机构。

根域的长度为零。

从现在开始,图形中的每个节点(点)都有一个唯一的标签,最长为63个字符。

从根目录开始的第一层是TLD:com,org,edu和gov。请注意,此图不包含TLD的完整列表。

TLD下方是SLD(二级域)。每个节点的子节点称为“子域”,仍被视为父域的一部分。例如,在freecodecamp.org中,freecodecamp(SLD)是org(TLD)的子域。

根据网站的层次结构,可能会有第三,第四,第五级域。例如,在hypothetical-subdomain.freecodecamp.org中,hypothetical-subdomain是第三级域,也是freecodecamp的子域。依此类推,至少达到127个级别,这是DNS所允许的最大值。

谁管理名称空间?

尝试让一个人或组织来管理所有事情不是很傻吗?是的,会的。尤其是因为DNS的主要设计目标之一是促进整个系统的分布式,分散式管理。

我希望我能告诉您负责的人被称为“命名空间之王”,但是a。

域名称空间中的每个域(或子域)都属于区域 “ 区域名称 ”的一部分,或者是该区域的一部分。因此,名称空间分为多个区域。

这些区域的责任通过授权和管理来管理。

将子域的职责分配给其他实体的过程称为委托。

例如,公共利益注册管理机构管理着域名org,并且自2003年以来一直运营。公共利益注册管理机构可以将责任委托给其他方来管理org的子域,例如freecodecamp。然后,管理freecodecamp的任何人都可以将freecodecamp的子域(例如,hypothethical-subdomain.freecodecamp.com)的责任分配给另一方。

如果某人(组织,团队或个人)管理区域,那么他们正在做的事情就是管理负责该区域名称服务器

这使我们进入了域名系统中最基础的概念之一。

域名服务器

“存储有关域名称空间信息的程序称为名称服务器。

在这一点上,至少在最初考虑客户端与服务器之间的关系很有用。域名服务器是客户端-服务器关系的“服务器”端。名称服务器可以加载一个,数百甚至数千个区域,但是它们从不加载整个名称空间。一旦名称服务器加载了整个区域,就可以说该服务器是该区域的权威

要了解名称服务器为何以这种方式发挥作用,了解关系的“客户端”部分很有用。

解析器

在DNS中,客户端(信息的请求者)被称为“解析器”,乍一看似乎是倒退的。解析请求的服务器不会被称为“解析器”吗?我也这样认为,但事实并非如此。最好只是记住并继续前进。

实际上,大多数操作系统中通常都包含解析程序,因此操作系统上安装的应用程序不必弄清楚如何进行低级DNS查询。

DNS查询及其响应是DNS消息的类型,并且具有自己的数据传输协议(通常为UDP)。解析程序负责帮助操作系统上安装的应用程序将对DNS相关数据的请求转换为DNS查询。

总之,解析器负责打包和发送数据请求。解析器一旦收到响应(如果有的话),便会将其以消耗给请求应用程序的格式传递回原始请求应用程序。

返回名称服务器

现在,我们对这种关系的客户端有了更多的了解,我们需要了解域名服务器如何响应解析器查询。

域名服务器通过解析来响应DNS查询。解析是名称服务器在名称空间中查找数据文件的过程。根据查询的类型,名称服务器对不同查询的响应方式不同,但最终目标是解析。

查询类型

查询类型?是的,有多种类型的DNS查询。但是首先,DNS查询通常是什么?这是对信息的请求,特别是对于与域名关联的IP地址的信息。

  • 递归:递归查询允许将查询引用到多个要解析的名称服务器上。如果第一个查询的名称服务器没有所需的数据,则该名称服务器会将查询发送到最合适的下一个名称服务器,直到找到具有所需数据文件的名称服务器并将其发送到解析器为止。
  • 迭代迭代查询需要查询的名称服务器以所需的数据或错误进行响应。响应中可能包含最合适的名称服务器的IP地址,以将请求发送到下一个;然后,解析程序可以向该更合适的名称服务器发送另一个请求。

如果您只需要IP地址,也可以查询域名。这称为反向DNS查找。

一旦查询到达包含所需数据文件的名称服务器,就可以解决该查询。域名服务器具有许多与之关联的数据文件,所有或部分数据文件可用于解析查询。

资源记录(RR)

这些是域名称空间中的数据文件。这些数据文件具有特定的格式和内容。

最常见的RR:

  • 记录:如果除了此之外您没有听说过其他任何RR,那将是有道理的。它可能是最著名的RR,并且包含给定域的IP地址。
  • CNAME记录:如果除了此记录和A记录之外,您还没有听说过其他任何RR,那也很有意义。“ C”代表“规范”,用于代替A记录来为域分配别名。
  • SOA记录:此记录包含有关该记录的管理信息,包括管理员的电子邮件地址。提示:如果您要管理区域,请确保此处有一个有效的电子邮件地址,以便人们在需要时可以与您联系。
  • 其他重要的资源记录(RR)类型是PR,NS,SRV和MX。在这里阅读有关它们的信息

缓存和生存时间(TTL)

当本地名称服务器收到查询的响应时,它将缓存该数据(将其存储在内存中),因此,下次它收到相同的查询时,它可以直接回答查询,而无需经过原始的较长的解决过程。

但是,一旦此信息被缓存,它既是静态的又是孤立的,因此有过时的风险。因此,所有资源记录都具有所谓的生存时间(TTL)值,该值指示可以将数据缓存多长时间。当时间用完(达到零)时,名称服务器将删除记录。

重要说明:TTL不适用于对包含资源记录的区域具有权威性的名称服务器。它仅适用于缓存该资源记录的名称服务器。

查询生命中的一天

我们在本文中介绍了很多基础知识,并且对概念进行了大量的介绍。为了将所有这些联系在一起并使其成为现实,这是查询生命中的一天(象征性的一天)。

什么是DNS?域名系统,DNS服务器和IP地址概念介绍
资源

那么,为什么我需要了解所有这些?

熟悉DNS和IP地址相关概念的原因有很多。

  • 首先,它是互联网的中坚力量,是我们许多人使用的东西,对(爱/恨/你的名字)产生感情,并且每天都在理所当然。重要的是要熟悉使我们能够利用当今的技术和Internet成就伟大成就的结构。
  • 令人难以置信的聪明人花了数十年的时间来建造这种东西!让我们感谢并感谢他们的贡献。
  • 现在,我已经摆脱了麻烦的东西,重要的是要熟悉DNS概念,以防您负责与公司或团队或您自己的企业中的基础结构有关的任何事情。当重大问题浮出水面时,有了一个参考框架,您可以更快地采取行动,更快地找到解决方案。

结论

在这一点上,您应该了解什么是DNS,什么是名称服务器,以及熟悉与IP地址有关的技术概念。

已经写了许多关于DNS的书籍,并且深入探讨了DNS的迷人世界,还有很多东西要学习。本文未包含但与DNS无关或相关性很强的主题包括:

  • 名称服务器的实现
  • 转寄
  • (更多关于)节点标签
  • 主要和辅助名称服务器关系
  • 重传算法
  • 负载均衡
  • 另外,还有其他有关Internet工作方式的更一般的主题,例如:
  • 全球资讯网
  • HTTP
  • 的FTP
  • 通信协议层:链路层,IP层,传输层,Internet层等

对于仍在阅读中并且 想要了解有关DNS的更多信息的那些人,我首先推荐由Cricket Liu撰写并由O’Reilly Media出版的“ DNS和BIND,第五版”。这是无价的。

我也鼓励大家在下面链接的原始“征求意见”(RFC)中四处寻找。不仅有阅读主要资料的要点,而且它们是组织得很好且易于理解的文档,这就是我在本文中引用它们的原因。

资源资源

  1. RFC 1034:域名-概念和功能
  2. RFC 1035:域名-实施和规范
  3. RFC 1122:Internet主机的要求-通信层
  4. 有关“互联网络:DNS百科全书”的DNS设计目标的更多信息
  5. 互联网是如何从ARPAnet诞生到口译的,来自The Conversation
  6. O’Reilly Media的Cricket Liu撰写的学习DNS视频课程

 

注:本文作者

克洛伊·塔克(Chloe Tucker)

 

点击查看原文

 

 

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/4141.html

发表评论

登录后才能评论