DNS服务器 - 理论

news2024/12/23 16:14:03

DNS服务器

    • 1. 概念
    • 2. DNS域名结构
    • 3. 域名的分级
    • 4. 域名服务器
    • 5. 域名解析过程
      • 5.1 递归查询与迭代查询
      • 5.2 解析流程
        • 1. 迭代查询
        • 2. 递归查询
    • 6. 高速缓存:
    • 7. 加上主机缓存后的DNS解析流程
    • 8. 常见的域名解析记录
    • 9. DNS正向解析和反向解析

1. 概念

DNS服务器(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

把域名翻译成IP地址的软件称为域名系统,即DNS。它是一种管理名字的方法。这种方法是:分不同的组来负责各子系统的名字。系统中的每一层叫做一个域,每个域用一个点分开。所谓域名服务器(即Domain Name Server,简称Name Server)实际上就是装有域名系统的主机。它是一种能够实现名字解析(name resolution)的分层结构数据库。

2. DNS域名结构

域名系统必须要保持唯一性。

为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法:

  • 每一个域名(英文域名)都是一个标号序列,用字母(A-z,a-z,大小写等价),数字(0-9)和连接符(-)组成。
  • 标号序列总长度不能超过255个字符,它由点号分割成一个个的标号。
  • 每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
  • 级别最低的域名写在左边,级别高的域名写在右边。

域名服务主要是基于UDP实现的,服务器的端口号是53。

  • DNS端口:53/tcp,53/udp。

在这里插入图片描述
例如:www.baidu.com

com:一级域名,表示这是一个企业域名。当然还有net(网络提供商),org(非盈利组织)等
baidu:二级域名,指公司名。
www:三级域名,习惯用法。

注:域名中的“点”和点分十进制IP地址中的“点”并无对应关系。

3. 域名的分级

域名可以划分为各个子域名,子域名还可以继续划分为子域名的子域,这样就会出现顶级域名、二级域名、三级域名等。

分类说明
国家顶级域名中国:cn,美国:us,英国:uk…
通用顶级域名com公司企业,edu教育机构,gov政府部门,mil军事部门,net网络,org非盈利组织…
反向域名arpa,用于PTR查询(IP地址转换成域名)

4. 域名服务器

域名是分成结构,域名服务器也是对应的层级结构。

域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。

由高到低进行层次划分,可以分为以下几个大类:

分类作用
根域名服务器最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助
顶级域名服务器负责管理在该顶级域名服务器下注册的二级域名
权限域名服务器负责一个区的域名解析工作
本地域名服务器当一个主机发出DNS查询请求的时候,这个查询请求首先会发给本地的域名服务器

一个域名服务器所负责的范围,或者说有管理权限的范围,就成为区。

需要注意的是:

- 每个层的域名都有自己的域名服务器,最顶级的是根域名服务器。
- 每一级域名服务器都知道下级域名服务器的IP地址。
- 为了容灾,每一级至少设置两个或以上的域名服务器。

DNS根服务器主要用来管理互联网的主目录,全世界只有13台

1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

序号位置IP
1INTERNIC.NET(美国,弗吉尼亚州)198.41.0.4
2美国信息科学研究所(美国,加利弗尼亚州)128.9.0.107
3PSINet公司(美国,弗吉尼亚州)192.33.4.12
4马里兰大学(美国马里兰州)128.8.10.90
5美国航空航天管理局[NASA](美国加利弗尼亚州)192.203.230.10
6因特网软件联盟(美国加利弗尼亚州)192.5.5.241
7美国国防部网络信息中心(美国弗吉尼亚州)192.112.36.4
8美国陆军研究所(美国马里兰州)128.63.2.53
9Autonomica公司(瑞典,斯德哥尔摩)192.36.148.17
10VeriSign公司(美国,弗吉尼亚州)192.58.128.30
11RIPE NCC(英国,伦敦)193.0.14.129
12IANA (美国,弗吉尼亚州)198.32.64.12
13WIDE Project(日本,东京)202.12.27.33

5. 域名解析过程

5.1 递归查询与迭代查询

  • 主机向本地域名服务器的查询一般都采用递归查询(recursive query )。如果主机所询问的本地域名或服务器不知道被查询域名的IP地址时,本地域名服务器就以DNS客户身份向其他根域名服务器继续发送查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。

  • 本地域名服务器向根域名服务器的查询通常采用迭代查询(iterative query )。 当根域名服务器收到本地域名服务器发送的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个域名服务器进行查询,然后让本地域名服务器进行后续查询。逐步按照域树的路径向下走直到叶节点,得到了所要解析的IP地址,然后把这个结果返回给发起查询的主机。当然本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文的设置是要是用哪一种查询方式。

5.2 解析流程

在这里插入图片描述

1. 迭代查询

如果本地域名服务器采用迭代查询:(图a)

  • (1)客户端向本地域名服务器(递归查询) 发出解析y.abc.com域名的请求。本地域名服务器查看本地缓存,是否有缓存过y.abc.com域名,如果有直接返回给客户端;如果没有执行下一步;
  • (2)本地域名服务器 采用迭代查询。它先向一个 根域名服务器 查询。
  • (3)根域名服务器 告诉 本地域名服务器,下一次应查询的 顶级域名服务器dns.com的IP地址。
  • (4)本地域名服务器 向 顶级域名服务器dns.com 进行查询。
  • (5)顶级域名服务器dns.com 告诉 本地域名服务器,下一步应查询的 权限服务器dns.abc.com 的IP地址。
  • (6)本地域名服务器 向 权限域名服务器dns.abc.com 进行查询。
  • (7)权限域名服务器dns.abc.com 告诉 本地域名服务器,所查询的主机的IP地址。
  • (8)本地域名服务器 最后把查询结果告诉m.xyz.com。

注:整个查询过程共用到了8个UDP报文。

2. 递归查询

如果 本地服务器采用递归查询:(图b)
这里,本地域名服务器 只需要向 根域名服务器查询一次,后面的查询都是在其他几个域名服务器之间进行的(步骤3~6)。只是在第7步,本地域名服务器 从 根域名服务器 得到了所需的IP地址。最后在步骤8,本地域名服务器 把查询得到的IP 告诉了客户端。整个查询过程也是使用了8个UDP报文。

6. 高速缓存:

为了提高DNS查询效率,并减轻服务器的负荷减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过得域名以及从何处获得域名映射信息记录。

例如,在上面的查询过程中,如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把高速缓存中存放的上次查询结果返回(即y.abc.com的IP地址)给用户。
假定本地域名服务器的缓存中并没有y.abc.com的IP地址,而是存放着顶级域名服务器dns.com的IP地址,那么本地域名服务器也可以不向根域名服务器进行查询,而是直接向com顶级域名服务器 发送查询请求报文。这样能大大减轻根域名服务器的负荷。

由于名字到地址的绑定并不经常改变,为保持告诉缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器绑定信息。当权限服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名解析的正确性。
不仅在本地域名服务器中需要高速缓存,在主机中也需要。许多主机在启动时从本地服务器下载名字和地址的全部数据库,维护村放在自己最近使用的域名的高速缓存,并且只在缓存中删除无效的项。由于域名改动并不频繁,大多数网点不需要花精力就能维护数据库的一致性。

7. 加上主机缓存后的DNS解析流程

如果还用上面的例子,且加上主机中的缓存,客户端在浏览器的URL中输入y.abc.com ,即想要解析获取y.abc.com的Ip地址。会发生下一下动作:

  • (1)浏览器会首选搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳10001条缓存),看自身的缓存中是否有y.abc.com 对应条目,而且没有过期,如果有且没有过期则解析到此结束。
  • (2)如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索到此结束。
  • (3)如果操作系统的DNS缓存中也没有找到,那么尝试读取hosts文件,看看这里面有没有该域名对应的IP地址,如果有则解析成功。
  • (4)如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地域名服务器 发起域名解析请求
  • (5)之后的操作就一样了,同上(本地域名服务器 递归查询或迭代查询的过程)。

8. 常见的域名解析记录

主要有以下几种类型:

  • A记录:(Address)是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上,同时也可以设置域名的子域名。简单来讲,A记录就是指定域名对应的IP地址。如我们添加一条A记录将www的主机指向IP <192.168.1.1>,那么当你访问www主机时就会解析到192.168.1.1这个IP上。

  • PTR记录:PTR是pointer 的简写,即“反向DNS”,domain name pointer,可以粗略的理解为DNS反向,是一个指针记录,用于将一个IP地址映射到对应的主机名,也可以看成是A记录的反向,即通过IP访问域名。

  • CNAME记录:通常称别名解析,是主机名到主机名的映射。当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME的场景包括做CDN、企业邮箱、全局流量管理等。与A记录不同的是,CNAME别名记录设置的值不是一个固定的IP,而是主机的别名地址。

    别名解析可以提供更大的灵活性,便于统一管理。比如,当主机因某种因素的影响需要更换IP时,如果域名做了CNAME记录,就可以同时更新别名的解析指向,不需要进行新的解析操作。

  • NS记录:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录(Name Server)。NS记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。NS记录中的IP即为该DNS服务器的IP地址。大多数域名注册商默认用自己的NS服务器来解析用户的DNS记录。DNS服务器NS记录地址一般以以下的形式出现:ns1.domain.com、ns2.domain.com等。

  • SOA记录:SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。

    SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。

  • AAAA记录:AAAA记录(AAAA record)是用来将域名解析到IPv6地址的DNS记录。用户可以将一个域名解析到IPv6地址上,也可以将子域名解析到IPv6地址上。国内大多数IDC不支持AAAA记录的解析,因此如果想进行AAAA记录解析,则需对域名NS记录设置一些专业的域名解析服务商,由他们提供AAAA记录的设置。中科三方云解析支持IPv6环境下的AAAA记录解析。

  • XT记录:TXT记录,一般指某个主机名或域名的标识和说明。如:admin IN TXT “管理员, 电话:XXXXXXXXXXX”,mail IN TXT “邮件主机,存放在xxx , 管理人:AAA”,Jim IN TXT “contact: abc@mailserver.com”,也就是说,通过设置TXT记录内容可以使别人更方便地联系到你。TXT 记录常用的方式还有做 SPF 记录(反垃圾邮件)和SSL证书的DNS验证等。

  • MX记录:MX(Mail Exchanger)记录是邮件交换记录,主要用于邮箱解析,在邮件系统发送邮件时根据收信人的地址后缀进行邮件服务器的定位。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。

    MX记录的权重对 Mail 服务非常重要,当发送邮件时,Mail 服务器先对域名进行解析,查找 MX记录。先找权重数最小的服务器(比如说是 10),如果能连通,那么就将服务器发送过去;如果无法连通 MX 记录为 10 的服务器,才将邮件发送到权重更高的 mail 服务器上。

  • SRV记录:即服务定位(SRV)资源记录,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。

  • URL转发:URL转发,是指通过服务器的特殊设置,将当前访问的域名指向另一个指定的网络地址。根据目标地址的隐藏与否,URL转发可以分为显性URL和隐性URL两种。

    显性URL:将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址,地址栏显示为目标网站地址。

    隐性URL:与显性URL类似,但隐性转发会隐藏真实的目标地址,地址栏中显示为仍为此前输入的地址。

记录类型也会有共存冲突,在RR值相同的情况下,同一条线路下,在几种不同类型的解析中不能共存(X为不允许):

  • X:在相同的RR值情况下,同一条线路下,不同类型的解析记录不允许共存。如:已经设置了www.example.com的A记录,则不允许再设置www.example.com的CNAME记录;
  • 无限制:在相同的RR值情况下,同一条线路下,不同类型的解析记录可以共存。如:已经设置了www.example.com的A记录,则还可以再设置www.example.com的MX记录;
  • 可重复:指在同一类型下,同一条线路下,可设置相同的多条RR值。如:已经设置了www.example.com的A记录,还可以再设置www.example.com的A记录。

9. DNS正向解析和反向解析

正向解析

  • 1、根据域名查询IP地址,是DNS最基本最常用的功能,使用域名区域配置;

反向解析

  • 1、通过查找PTR记录得到IP指向的域名,PTR记录是一种邮件交换记录,使用网段区域配置;
  • 2、邮件交换记录包括A记录和PTR记录,A记录解析名字到地址,PTR记录解析地址到名字;
  • 3、多数垃圾邮件使用动态分配或没有注册域名的IP发送邮件,从而避免追踪,使用域名反向解析可以降低垃圾邮件的数量;

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

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

相关文章

C++指针与其它复合类型

目录 前言&#xff1a; 1.指针与字符串 1.1cout接收char类型的地址的反应 1.2字符串字面值 1.3字符串备份 2.使用new创建动态结构 3.使用new和delete搭配存储键盘输入的字符串 前言&#xff1a; 指针我们已经知道如何使用了&#xff0c;也知道指针和数组配合起来使用&am…

DHCP及中继(UOS)

DHCP服务器 中继器 客户端 服务器 安装DHCP apt install isc-dhcp-server -y 编辑配置文件 vim /etc/dhcp/dhcpd.conf 重启服务 systemctl restart isc-dhcp-server 配置监听网卡 vim /etc/default/isc-dhcp-server 中继器 安装dhcp yum install dhcp -y nmtui 修改…

【LeetCode每日一题: 1042. 不邻接植花 | 图论 | 染色问题】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

Qt中调用C#制作的com组件

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 这里记录一下在 Qt 64位程序中调用 C# 制作的 com 组件的流程&#xff0c;方便后期自己回顾。 1. 了解 TLB 格式 拿到的依赖库最…

hbase进阶操作——读流程与写流程介绍

系列文章目录 centos7虚拟机下hbase的使用案例讲解 文章目录 系列文章目录 一、hbase架构原理 1.1、StoreFile 1.2、MemStore 1.3、WAL 二、hbase的写流程 2.1、写流程的流程图 2.2、写流程的流程图说明 三、hbase读流程 3.1、读流程的流程图 3.2、读流程的流程图解…

C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

文章目录2-3 : C语言内存空间的使用指针概述示例&#xff1a;指针修饰符指针运算符示例示例1多级指针例子省略argc&#xff08;个数&#xff09;的常用写法&#xff1a;参考&#xff1a; 麦子学院-嵌入式C语言高级-内存空间2-3 : C语言内存空间的使用 指针概述 内存类型资源地…

CPU工作原理

CPU&#xff08;中央处理器&#xff09;是计算机中的重要组件&#xff0c;它负责执行计算机程序中的指令。在了解CPU的工作原理之前&#xff0c;我们需要先了解一些基本概念。 指令和指令集 指令是计算机程序中的基本单位&#xff0c;它指示计算机执行某个操作。指令集是一组…

我在“Now In Android”中学到的 9 件事

我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序&#xff0c;完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践&#xff0c;旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…

淘宝悄悄内测“店号一体”的新模式

4月17日消息&#xff0c;淘宝近日已开始小规模测试“店号一体”新模式。新模式下&#xff0c;淘宝店铺将与逛逛、直播等账号完全打通&#xff1b;此前针对达人及内容型商家的新店铺模式“视频内容店”也同步升级。 内测商家透露&#xff0c;目前在淘宝发布的图文、短视频、直播…

腾讯学长分享的这份Java面试八股文手册,让我GitHub下载量破百万!!!

一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展&#xff0c;但在跳槽前我们也不能确定下家就是更好的归宿&#xff0c;这就更加需要我们审慎地去对待&#xff0c;不能盲目跳槽。 其次&a…

知识图谱专栏简介:数据增强,智能标注,文本信息抽取(实体关系事件抽取)、知识融合算法方案、知识推理、模型优化、模型压缩技术等

知识图谱专栏简介&#xff1a;数据增强&#xff0c;智能标注&#xff0c;文本信息抽取&#xff08;实体关系事件抽取&#xff09;、知识融合算法方案、知识推理、模型优化、模型压缩技术等 专栏链接&#xff1a;NLP知识图谱相关技术业务落地方案和码源 NLP知识图谱相关技术业…

程序员跳槽薪水涨了一倍,谈谈java工程师找新工作的八大技巧

大家好&#xff0c;这几天发生了一些事情&#xff0c;我找到了一份新工作&#xff0c;明天是第一天上班。我想先谈一下我的新工作待遇&#xff0c;因为我觉得相对来说还算比较满意。接下来我想谈一下我的个人经历&#xff0c;从毕业到现在的工作经历。第三个话题是我最近半个月…

k-d Tree算法

1.概述 本文介绍一种用于高维空间中的快速最近邻和近似最近邻查找技术——Kd- Tree(Kd树)。Kd-Tree&#xff0c;即K-dimensional tree&#xff0c;是一种高维索引树形数据结构&#xff0c;常用于在大规模的高维数据空间进行最近邻查找(Nearest Neighbor)和近似最近邻查找(Appro…

Java工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

反向代理自建教程:你懂的

一、为什么需要自建反代 OpenAI提供了两种访问方式&#xff0c;一种是直接在ChatGPT网页端使用的Access Token方式&#xff0c;这种方式可以免费使用GPT-3.5模型&#xff0c;只需要登录即可使用。但缺点是不稳定&#xff0c;且无法扩展。另一种是使用API&#xff0c;注册用户可…

Nacos 客户端服务注册源码分析-篇三

Nacos 客户端服务注册源码分析-篇三 版本说明&#xff1a; 源码版本 nacos-1.4.2 Nacos 的核心功能点 服务注册&#xff1a; Nacos Client 会通过发送 REST 请求的方式向 Nacos Server 注册自己的服务&#xff0c;提供自身的元数据&#xff0c;比如 ip 地址以及端口等信息。Na…

Sentinal持久化到Nacos

Springboot应用整合Sentinel实现限流、熔断、降级笔记https://blog.csdn.net/chenjian723122704/article/details/130101875 Sentinel版本 1.8.6 Nacos版本 2.2.0 下载Sentinel源码 Sentinel1.8.6&#xff1a;https://github.com/alibaba/Sentinel/releases/tag/1.8.6 拷贝源…

AtCoder Beginner Contest 295——F - substr = S

蒟蒻来讲题&#xff0c;还望大家喜。若哪有问题&#xff0c;大家尽可提&#xff01; Hello, 大家好哇&#xff01;本初中生蒟蒻讲解一下AtCoder Beginner Contest 295这场比赛的F题&#xff01; F - substr S 原题 Problem Statement You are given a string SSS consisti…

双塔模型:微软DSSM模型浅析

1.背景 DSSM是Deep Structured Semantic Model (深层结构语义模型) 的缩写&#xff0c;即我们通常说的基于深度网络的语义模型&#xff0c;其核心思想是将query和doc映射到到共同维度的语义空间中&#xff0c;通过最大化query和doc语义向量之间的余弦相似度&#xff0c;从而训…

2023好玩的解压游戏,压力大点开玩可以放松自己

你是不是经常感觉到压力大&#xff1f; 现代社会&#xff0c;竞争逐步激烈&#xff0c;不管是来自学习上&#xff0c;工作上&#xff0c;还是生活上的&#xff0c;压力都非常大&#xff01; 这时候&#xff0c;我们要学会自我减压&#xff0c;有效的放松是为了更好地前行。 …