DNS详解

news2024/11/26 9:40:29

2.4 DNS:因特网的目录服务

        我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。

        但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的IP地址,这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景,人们在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。

        域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的IP地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成IP地址。而DNS域名解析承担的就是这种翻译效果。

2.4.1 DNS提供的服务

主要服务

提供主机名到IP地址的转换,是DNS最重要的服务

次要服务

  • 主机别名:有的主机拥有复杂的主机名,所以会为复杂的主机名起一个或多个主机别名,复杂的主机名也称为规范主机名
  • 邮件服务器的别名
  • 负载分配

2.4.2 DNS的名字空间

1.域名结构

一个层面命名设备会有很多重名,DNS采用层次树状结构的命名方法为主机起域名。

因特网被划分成了几百个顶级域

  • 通用的顶级域:.com   .edu   .gov   .int   .mil   .net   .org   .firm   .hsop   .web   .arts   .rec 
  • 国家的顶级域:.cn   .us   .nl   .jp

每个顶级域下面可划分为若干子域,子域下面可进一步划分为若干子域,树叶是主机

域名结构:从本域往上,直到树根,中间使用“.”间隔不同的级别。例如:ustc.edu.cn auto.ustc.edu.cn。

注意:

域的域名:可以用于表示一个域

主机的域名:一个域上的一个主机

域名的管理:

  • 一个域管理其下的子域。例如,.jp管理 ac.jp  co.jp
  • 创建一个新的域,必须征得它所属域的同意

域与物理网络无关:

  • 域遵从组织界限,而不是物理网络。一个域的主机可以不在一个网络,一个网络的主机不一定在一个域
  • 域的划分是逻辑的,而不是物理的

2.4.2 DNS服务器的类型

        为了避免由于单个信息源带来的各种问题,DNS名字空间被划分为一些不重叠的区域。每个圈起来的区域包含域名树的一部分。区域边界应该放置在区域中的什么位置由该区域的的管理员来决定。(取决于需要在哪里使用多少个名字服务器)

        每个区域都与一个或多个域名服务器关联,这些服务器是持有该区域数据库的主机,通常情况下,一个区域有一个主域名服务器和一个或多个辅域名服务器。主服务器从自己磁盘的一个文件读入有关域名的信息,辅域服务器从主域名获取域名信息。为了提高可靠性,一些域名服务器可以设置在区域外面。

        DNS 使用了大量的 DNS 服务器 ,它们以层次方式组织且分布在全世界范围内,没有 DNS 服务器拥有因特网上所有主机的映射。相反,这些映射分布在所有的 DNS 服务器上。大致说来,有3种类型的 DNS 服务器:根 DNS 服务器、顶级域 (Top-Level Domain, TLD) DNS 服务器、权威 DNS 服务器。这些不同类型的DNS服务器以下图所示的层次结构组织起来。

根DNS服务器:有400 多个根名字服务器遍及全世界,这些根名字服务器由13个不同的组织管理。

顶级域DNS服务器:对于每个顶级域(如 .com .org .net .edu .gov) 和所有国家的顶级域(如 .uk .fr .ca .jp)都有 TLD 服务器 (或服务器集群)与之对应。

权威DNS服务器:在因特网上具有公共可访问主机(如 Web 服务器和邮件服务器)的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。一个组织机构的权威 DNS 服务器收藏了这些 DNS 记录。一个组织机构能够选择实现它自己的权威 DNS 服务器以保存这些记录;另一种方法是,该组织能够支付费用,让这些记录存储在某个服务提供商的一个权威 DNS 务器中,多数大学和大公司实现和维护它们自已基本和辅助(备份)的权威 DNS 服务器。

本地DNS服务器

根、 TLD 和权威 DNS 服务器都处在该 DNS 服务器的层次结构中,有另一类重要的 DNS 服务器,称为本地 DNS 服务器,一个本地 DNS 服务器并不属于DNS服务器的层次结构,但它是至关重要的。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发 DNS 服务器层次结构中。

本地DNS服务器所处地理位置

对某机构 ISP而言 ,本地 DNS 服务器可能就与主机在同一个局域网中;对于某居民区 ISP 来说,本地 DNS 服务器通常与主机相隔不超过几台路由器。严格说来,每个ISP(如一个居民区的 ISP 或一个机构的 ISP) 都有一台本地 DNS 服务器。

2.4.3 DNS对域名解析的过程

当我们在浏览器地址栏中输入www.baidu.com时,DNS解析将会有将近10个步骤,这个过程大体大体由一张图可以表示:

整个过程大体描述如下,其中前两个步骤是在本地电脑内完成的,后8个步骤涉及到真正的域名解析服务器:

第一步

      本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。

第二步

        如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程,在Linux中可以通过/etc/hosts文件来设置,而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置,用户可以将任何域名解析到任何能够访问的IP地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的IP地址上,导致这些域名被劫持。

第三步

        前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责

第四步

       如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析

第五步

       根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

第六步

       本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。

第七步

        接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。   比如我要访问www.baidu.com,而这个域名是从A公司注册获得的,那么A公司上的服务器就会有www.baidu.com的相关信息。

第八步

       Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器。

第九步

       返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。

第十步

       把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。

实践中,查询通常遵循上述模式。也就是从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的。但也有查询全部是递归的模式,如下图所示:

DNS缓存

为了改善时延性能并减少在因特网上到处传输的 DNS 报文数,DNS 广泛使用了缓存技术,DNS 缓存的原理非常简单,在一个请求链中,当某 DNS 服务器接收 DNS 回答(例如,包含某主机名到 IP 地址的映射)时,它能将映射缓存在本地存储器中,当再次收到DNS请求报文时,如果缓存中有此映射,则直接返回回去。由于主机和主机名与 IP 地址间的映射并不是永久的,DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

2.4.4 DNS记录和报文

1.DNS记录

共同实现 DNS 分布式数据库的所有 DNS 服务器存储了 资源记录 (Resource Record , RR), 资源记录提供了主机名到 IP 地址的映射,每个 DNS 回答报文包含了一条或多条资源记录。

资源记录是一个包含了下列字段的四元组:

(Name, Value , Type , TTL)

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

如果 Type= A, Name 是主机名, Value 是该主机名对应的 IP 地址。

如果 Type= NS, Name 是个域(如 foo. com) , Value 是个知道如何获得该域中主机 IP 地址的权威 DNS 服务器的主机名。

如果 Type= CNAME,,Value 是别名为 Name 的主机对应的规范主机名。

如果 Type= MX ,则 Value 是个别名为 Name 的邮件服务器的规范主机名。

2.DNS报文

DNS只有查询报文和回答报文。并且,这二种报文具有相同的格式,如下图所示。DNS报文中个字段的含义如下所示:

首部区域 

  • 标识符字段:标识符是一个 16 特的数,用于标识该查询,这个标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和接收到的回答。
  • 标志字段:标志字段中含有若千标志。1比特的“查询/回答“标志位指出报文是查询报文 (O) 还是回答报文 (1) 。当某 DNS 服务器是所请求名权威 DNS 服务器时, 1比特的"权威的" 标志位被置在回答报文中。如果客户 (主机或者 DNS 服务器)在该 DNS 服务器没有某记录 希望 它执行递归查询,将设置特的“希望递归”标志位,如果该 DNS 服务器支持递归查询 ,在它的回答报文中会比对比特的"递归可用“标志位置位。
  • 4个有关数量的字段:这些字段指出了在首部后的4类数据区域出现的数量。

问题区域

问题区域包含着正在进行的查询信息,该区域包括:①名字字段,包含正在被查询的主机名;②类型字段,指出有关该名字的正被询问的问题类型。

权威区域

权威区域包含了其它权威服务器的记录

附加区域

附加区域包含了其他有帮助的记录。例如,对于一个 MX 请求的回答报文的回答区域包含了一条资源记录,该记录提供了邮件服务器的规范主机名,附加区域包含一个类型A记录,该记录提供了用于该邮件服务器的规范主机名的 IP 地址。

3.在DNS数据库中插入记录

当我们向某些注册登记机构注册域名 networkutopia. com 时,需要向该机构提供我们的基本和辅助权威 DNS 服务器的名字和 IP 地址,假定该名字和 IP 地址是 dnsl. networkutopia com dns2 nehvorkutopia. com 及 212. 212. 212.1 和 212.212.212.1, 对这两个权威 DNS 服务器的每个,该注册登记机构确保将一个类型 NS 个类型和一个类型A的记录输入 TLD com 服务器。特别是对于用于 networkutopia com 的基本权威服务器,该注册登记机构将下列两条资源记录插入该 DNS 系统中

(networkutopia.com,dnsl.netwokutopia.com,NS)

(dnsl.networkutopia.com,212.212.212.1,A)

你还必须确保用于 Web 服务器 www. networkutopia. com 的类型 A 资源记录和用于邮件服务器 mail.networkutopia.com的类型 MX 资源记录被输入到我们自己的权威 DNS 服务器中。直到最近,每台 DNS 服务器中的内容都是静态配置的,例如来自系统管理员创建的配置文件。最近,在 DNS 协议中添加了一个更新选项,允许通过 DNS 报文对数据库中的内容进行动态添加或者删除,[RFC 2136]和[RFC 3007] 定义了 DNS 动态更新.

一旦完成所有这些步骤,人们将能够访问我们的 Web 站点,并向我们公司的雇员发送电子邮件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java String ,StringBuffer 和 StringBuilder 类

文章目录 一、Java String 类二、Java StringBuffer 和 StringBuilder 类总结 一、Java String 类 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 创建字符串 创建字符串最简单的方式如下: St…

SiLu激活函数解释

SiLu激活函数 在yolo v5中,我们使用了SiLu激活函数 首先,了解一下激活函数的作用: 激活函数在神经网络中起到了非常重要的作用。以下是激活函数的一些主要功能: 引入非线性:激活函数的主要目标是在模型中引入非线性…

STM32F7xx Keil5 RTX RL-TCPnet DP83822移植

使用之前RTX工程模板 RTE中RL-TCPnet配置 暂时全部默认配置,DHCP已打开 修改RTE_Device.h ETH配置 修改DP83822驱动 去掉文件只读属性,之后需要修改,添加到工程 修改DP83822 ID RTE创建tcp server例程,参考该例程,进…

2023.6.4 第五十六次周报

目录 前言 文献阅读:一种预测中国东海岸非平稳和不规则波的VMD-LSTM/GRU混合模型 背景 研究区域和数据 VMD LSTM/GRU预测模型 VMD-LSTM/GRU 方法的数值算法 序列的非平稳分析 神经网络设计 结论 代码:lstm预测污染物浓度 总结 前言 I read …

ChatGPT结合Excel公式办公 —— ChatGPT统计富豪信息

💧 C h a t G P T 统计富豪信息 \color{#FF1493}{ChatGPT统计富豪信息} ChatGPT统计富豪信息💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法…

设计原则-里氏替换原则

凡事皆有利弊,面向对象设计语言通过提供继承、多态等机制使得项目代码更具有复用性、可扩展性等优点,但是这些机制也存在一定的使用风险,比如继承的滥用、多态实现的不确定性等问题都有可能会引起重大线上事故。 一、里氏替换原则概念 里氏…

智能计算补充(从第四章p44往后)

智能计算补充(从第四章p44往后) 本文内容大部分来自于任振兴老师的讲课PPT,主要是对老师PPT内容的总结和提炼,侵权请联系我删除。 文章目录 智能计算补充(从第四章p44往后)适应度尺度变换1、适应度尺度变换…

DicomObjects.Core 3.0.17 Crack

DicomObjects.NET 核心版简介 DicomObjects.Core Assembly DicomObjects.NET 核心版简介 DicomObjects.Core 由一组相互关联但独立的 .核心兼容的“对象”,使开发人员能够快速轻松地将DICOM功能添加到其产品中,而无需了解或编程DICOM标准的复杂性。此帮助…

Golang 协程/线程/进程 区别以及 GMP 详解

Golang 协程/线程/进程 区别详解 转载请注明来源:https://janrs.com/mffp 概念 进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间、独立的堆和栈,既不共享堆,亦不共享栈。一个程序至少有一个进程,一个进程…

数据库多表设计

说明:在项目的数据库设计时,表与表之间是有联系的,如学生管理系统中,有部门表,教师表、学生表、课程表等等 一位教师隶属于一个部门,一个部门有多位教师,因此部门表和教师表,是一对…

【c++修行之路】c++11特性--上

文章目录 前言列表初始化用法介绍原理:std::initializer_list 简化声明的方式autodecltype 右值引用移动构造万能引用和完美转发万能引用完美转发 类的新增功能可变参数模板lambda表达式深入探究lambda表达式lambda表达式带来的便利结语 前言 大家好久不见&#xf…

bmp文件格式与保存

BMP文件由三部分组成,分辨是文件头,DIM头和像素数据。具体格式如下: 基本介绍 1. 文件头 14个字节 signature: 为文件标志位,恒为0X42 FileSize:是指整个文件的大小 REservedx:保留位恒为0 …

leetcode700. 二叉搜索树中的搜索(java)

二叉搜索树中的搜索 leetcode700 二叉搜索树中的搜索题目描述 解题思路代码演示二叉树专题 leetcode700 二叉搜索树中的搜索 leetcode 700 二叉搜索树中的搜索。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/search-i…

chatgpt赋能python:Python去掉GIL:提升Python多线程编程性能的突破口

Python去掉GIL:提升Python多线程编程性能的突破口 Python 是世界上最受欢迎的编程语言之一,其中一大原因是其简单易用、优雅简洁的语法。Python 也是一个卓越的多用途编程语言,广泛应用于 Web 开发、科学计算、人工智能等领域。但是&#xf…

javaScript蓝桥杯-----宝贵的一票

目录 一、介绍二、准备三、目标四、代码五、检测踩坑!!六、完成 一、介绍 公司经常举办各种活动,但一到投票环节就犯了难,于是公司决定安排小蓝开发一个投票系统,更好的收集大家的投票信息。为了赶在下一次活动开始前…

k8s亲和性和反亲和性

1.前言 k8s的亲和性和反亲和性都是通过标签来影响pod的调度,在此基础上亲和性又分为硬亲和性和软亲和性,required为硬亲和性即标签内容必须要符合才能调度,preferred为软亲和性即标签内容不一定要符合也能调度,除此之外还有node亲…

Unsupported major.minor version 51.0解决办法

先看看我的报错截图 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 08:51 min [INFO] Finished at: 2023-0…

[2.0快速体验]Apache Doris 2.0 日志分析快速体验

1. 概述 应用程序、服务器、云基础设施、IoT 和移动设备、DevOps、微服务架构—最重要的业务和 IT 发展趋势帮助我们以前所未有的方式优化运维和客户体验。但这些趋势也导致由机器生成的数据出现爆炸式成长,其中包括日志和指标等,例如,用户交…

Qcon 广州主题演讲:融云实时社区的海量消息分发实践

移步公众号文章 预约纸质版《作战地图》 5 月 26 日-27 日,QCon 全球软件开发大会落地广州。关注【融云全球互联网通信云】了解更多 融云 IM 服务架构师罗伟受邀分享“实时社区的海量消息分发实践”,从实践中来的前沿技术分享,收获现场开发者…

Nautilus Chain上首个DEX PoseiSwap即将开启IDO,潜力几何?

据悉,Nautilus Chain 上的首个 DEX PoseiSwap 即将开启 IDO ,根据官方的最新公告显示,PoseiSwap 即将于 6 月 13 日至 6 月 14 日期间,在 Bounce 平台开启其治理通证 $POSE 的 IDO(Initial DEX Offering)&a…