DNS协议(DNS规范、DNS报文、DNS智能选路)

目录

DNS协议基本概念

DNS相关规范

DNS服务器的记录

DNS报文

DNS域名查询的两种方式

DNS工作过程

DNS智能选路


DNS协议基本概念

DNS的背景

我们知道主机通信需要依靠IP地址,但是每次通过输入对方的IP地址和对端通信不够方便,IP地址不好记忆

因此提出了通过主机名(也就是后面定义的域名中的某个部分)来和IP地址对应,通过访问主机名来实现访问IP地址,达到通信的效果;由于最开始网络上的主机比较少,通过使用本地的HOSTS.TXT文件来记录域名和IP地址之间的关系,并定期手动更新(Windows下的Host主机文件在:C:\Windows\System32\drivers\etc\hosts)

但是后来随着主机数量的增加,人工更新HOSTS.TXT文件不再适用,因此后面就提出了DNS规范

DNS协议的作用

DNS是一种具有层次结构的将域名和IP地址互相映射的分布式数据库(分布式:可以理解为通过大量的服务器来实现DNS解析—因为域名越来越多,少量服务器不够用)

其中记录了各种主机域名与IP地址的对应关系,能够使得用户更加方便的访问网站

即:

用户直接输入域名登录网站,通过DNS服务器将域名解析为IP地址,然后用户根据该IP地址进行报文封装和传输

DNS协议端口号

DNS端口号为53,支持TCP和UDP(TCP能够提供可靠的连接,并且可以处理更大的数据量)

使用UDP情况:

一般普通DNS查询为UDP协议

使用TCP情况:

区域传输的时候会使用TCP(即DNS服务器之间迁移记录的时候会使用到TCP协议)

在DNS记录的TTL为0时,服务器重新请求该记录也会使用到TCP

当DNS的响应报文大于512字节而使得TC标志位置位(表示被截断)时,会使用TCP重新查询

DNS相关规范

域名的分类

根域名

. 就是根域(不过一般在书写时省略)

顶级域名(又分为国家顶级域名和国际顶级域名)

国家顶级域名

        中国cn

        美国us等

国际顶级域名

       .com     表示网络提供商提供的域名

       .net     表示非盈利组织

       .org等

二级域名(又分为国际域名下的二级域名和国家域名下的二级域名)

国际顶级域名下的二级域名

一般指域名注册人的网上名称(一般为企业名称);、

例如ibm、yahoo、microsoft、sangfor等

国家顶级域名下的二级域名(以下针对中国来说)

我国二级域名又分为类别域名和行政区域名两大类

                     类别域名6个

                                   ac          用于科研机构

                                   edu        用于教育机构

                                   gov       用于政府部分

                                   net       用于互联网信息中心

                                   org        用于非盈利组织

                                   com       工商金融企业

                     行政区域有34个,分别对应我国各省、自治区、直辖市

三级域名

       使用字母、数字、连接符组成(各级域名之间用实点.连接)

DNS服务器类型

按照地域性划分

根域名服务器:最高层次的域名服务器(每一个根域名副武器都要存储所有顶级域名服务器的IP地址和域名)

顶级域名服务器:顶级域名服务器负责管理在本顶级域名服务器上注册的所有二级域名

权威域名服务器:负责将区域管辖内的主机域名转换为该主机的IP地址

本地域名服务器:默认域名服务器,离用户较近

根据工作性质划分

主域名服务器:负责维护某一个特定DNS区域的所有域名信息(对其中的解析记录具有自主控制权);是指定区域中唯一存在的权威服务器

辅助域名服务器:作为主域名服务器的备份,自动同步主域名服务器的域名信息(即从域名服务器提供的解析结果来自于主域名服务器—一般辅助服务器会定时向主域服务器进行查询-来了解记录是否发生变化通过TCP协议)

缓存域名服务器:没有自己的域名数据库,只提供域名解析结果的缓存功能;它从某个远程服务器取得每次域名服务器的查询回答(因此需要设置根域或其他DNS服务器作为解析来源),并将答案放在高速缓存中;以后查询相同的信息就会从缓存中的信息进行回答,提高查询速度和效率

转发域名服务器:负责所有非区域的本地查询;接到查询请求后,在本地缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止

常用DNS服务器地址

114.114.114.114  国内通用DNS服务器地址

223.5.5.5  阿里云服务器

8.8.8.8  美国谷歌

DNS服务器的记录

DNS相关记录

记录名称

记录内容

补充说明

SOA(Start of Authority)记录

是授权机构起使记录(记录有关区域的重要信息)

例如:管理员相关信息、上次更新时间参数等信息
所有的DNS区域都需要一个SOA记录

A(Address)记录

主机记录(将DNS域名解析为IPv4地址)

--------------------

AAAA记录

主机记录(将DNS域名解析为IPv6地址)

--------------------

NS(Name Server)记录

域名服务器记录(记录域名和DNS服务器的关系,一般为DNS服务器为权限域名服务器;表示想要查询该域名,你需要去找这个DNS服务器来查询对应域名的IP地址)

该记录只能设置为域名(即:记录的DNS服务器是以域名的形式显示的,不能通过IP地址的形式显示)
因此,该记录一般会结合A记录使用(通过A记录来指明该DNS服务器域名对应的IP地址)

PTR(Pointer Record)记录

逆向查询记录(将IP地址解析成域名,主要用于判断垃圾邮件)

具体判断垃圾邮件的原理:垃圾邮件一般是伪造邮件头部的'From'字段(邮件的From字段有IP地址、域名等信息);当发送方发送邮件过来时,服务器通过PTR记录将IP地址解析为该IP地址对应的邮件域名,如果该邮件域名与发送方的邮件头中的'From'字段不一致(或者将邮件域名通过MX记录或A记录解析为IP地址,该IP地址与'From'字段不一致),则认为该邮件为垃圾邮件

MX(Mail eXchange)记录

邮件交换机器(告诉用户哪个邮件服务器负责接收特定域名的电子邮件,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器)

例子:当某用户要发送邮件到12313@qq.com时,该用户的邮件系统就会通过DNS查找qq.com这个邮件后缀的MX记录;如果MX记录存在则用户将邮件发送到该邮件后缀所对应的邮件服务器上(可以是IP地址,也可以是域名--如果是域名则需要A记录来记录域名对应的IP地址)

CNAME(Canonical Name)记录

别名记录(将一个域名指向另一个域名,然后再解析关于另一个域名的IP地址)

多个域名可以对应相同的IP地址(可以减少A记录条数)

SPF记录

用于防范垃圾邮件而提出来的一种DNS记录类型,是一种TXT类型的记录(记录了一个域名所拥有的用来发送邮件的所有IP地址)

通过IP地址来进行邮件的身份认证(如果发件人的IP地址被包含在SPF记录里面,就认为是正确的邮件)

记录域名映射信息的格式

记录一般为以下格式

Name(域名或IP地址等)、TTL(生存周期)、Class(网路协议类型)、Type(资源记录类型)、Data(记录包含的数据)

TTL:将该DNS记录缓存在DNS服务器的时间(以s为单位),当TTL为0时,该记录会被认为过期,服务器会重新查询该记录的并进行更新(重新查询时使用的TCP协议)

以CNMA记录为例


DNS报文

DNS Query DNS请求

包含域名、DNS服务器地址

Transaction ID:事务ID(DNS报文的ID标识)

Flags:标志位

Questions:DNS请求的记录数量

Answer RRs:DNS响应的记录数量

Authority RRs:权威名称服务器的数量

Additional RRs:额外的记录数目(指的是权威名称服务器对应的IP地址的数目)

Queries:请求的记录信息以及请求的记录类型

DNS Response DSN应答

包含域名对应的1个或多个地址(也有可能是DNS服务器地址)

Transaction ID:事务ID(DNS报文的ID标识)

Flags:标志位

Questions:DNS请求的记录数量

Answer RRs:DNS响应的记录数量

Authority RRs:权威名称服务器的数量

Additional RRs:额外的记录数目(指的是权威名称服务器对应的IP地址的数目)

Queries:请求的记录信息以及请求的记录类型

Answers:响应的记录信息以及响应的记录类型

具体的标志位讲解

Response(QR):查询响应标志位(1为响应,0为查询)

Opcode:操作码(0标识标准查询、1标识方向查询、2表示服务器状态请求)

Authoritative(AA):授权应答,在响应报文有效(1表示位权威服务器的回应,0表示不是)

Thruncated(TC):表示是否被截断(1表示响应超过512字节被截断,此时使用TCP重新查询)

Recursion desired(RD):期望递归(为1表示请求为递归查询、需要返回结果;为0表示请求为迭代查询,可以返回能够查询的DNS服务器)

Recursion available(RA):可用递归,在响应报文有效(1表示服务器支持递归查询)

Authenticated:身份认证和认证数据

Reply code(rcode):表示响应的差错状态(0表示没有错误、1表示报文格式错误、2表示域名服务器失败、3表示域名错误、4表示查询类型不支持、5表示拒绝响应)


DNS域名查询的两种方式

递归查询(客户端只需要发送一次DNS请求就可以得到结果)

主要用于主机向本地域名服务器请求时使用(要求本地域名服务器返回给主机结果,本地域名服务器如何获得该结果主机不需要知道---即要返回给主机域名对应的IP地址)

迭代查询(服务器只需要查询自己本地的数据库)

主要用于DNS服务器和DNS服务器之间的请求(要求服务器返回可以返回域名对应结果,也可以返回能够解析该域名的域名服务器地址)

如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,则本地域名服务器以DNS客户端的身份向其它根域名服务器继续发出查询请求报文(替主机查询)

根域名服务器收到本地域名服务器发出的迭代查询请求时,要么给出所查询域名的IP地址,要么告诉本地服务器下一步应该向哪一个域名服务器进行查询;就这样本地服务器依次发送DNS请求;最后本地域名服务将结果返回给主机


DNS工作过程

本地DNS服务器收到用户发来的DNS递归请求后具体如何工作

服务器收到DNS请求报文后,查看该域名自己是否能够解析

       如果可以解析,查找对应记录返回结果给请求方

       如果无法解析,则进行DNS请求(选择递归或者迭代—不过一般是迭代)

  1. 如果选择迭代,则发送DNS请求给其它服务器;其它服务器收到后,可以回应能够解析该域名的域名服务器地址,也可以回应结果(如果服务器回应能够解析该域名的域名服务器地址,则自身需要再发送DNS去请求—再此选择是迭代还是递归)
  2. 最后将得到的结果返回给主机
  3. 如果选择递归,则发送DNS请求给其它服务器;需要其它服务器回应具体的结果给自己(至于其它服务器如何获得结果自己不管)

DNS查询过程

  1. 当在浏览器中输入URL时,浏览器会先检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信;如浏览器没有缓存,则操作系统检查本地Hosts文件是否有域名IP的映射关系,有则使用IP进行通信;如果hosts没有这个域名的映射,则查找本地DNS解析器缓存是否有映射关系,有则直接返回完成域名解析;
  2. 如果还未找到映射关系,首先会找本地DNS服务器,如果服务器已缓存了映射关系,则使用这个IP地址映射返回完成域名解析(此解析不具有权威性)
  3. 如果本地DNS服务器缓存已经失效,进行递归查询,然后将结果返回给主机

DNS智能选路

如何实现DNS的智能选路

一个域名可能对应多个IP地址(每个运营商都有),正常情况下DNS服务器会随机选择一个给主机,这时主机访问就是随机访问,可能会出现跨运营商访问的问题,造成体验较差

此时就可以通过应用交付来实现DNS的智能选路

应用交付AD在DNS解析中的作用

AD可以解决DNS域名解析跨运营商访问的问题(通过智能选路选择对应的运营商地址--通过AD产品结合NS记录实现);在该场景下,AD其实是作为一个域名解析服务器,提供最终的域名到IP地址的解析

具体步骤

需要先将权威服务器中关于网站的A记录改为NS记录,并指向AD的域名(然后再通过A记录来记录AD域名对应的IP地址),最后将AD地址发给用户

此时用户主机向此AD发送DNS请求,AD根据主机的源IP地址,判断其所属的运营商;然后进行域名解析时,就解析该运营商对应域名的IP地址,将其返回给主机

访问网站全过程(通过AD智能选路)

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

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

相关文章

群体遗传 — 核苷酸多样性π

群体遗传 — 核苷酸多样性π **核苷酸多样性(nucleotide diversity),记为π,是分子遗传学中一个重要的概念,用于量化种群内部或不同种群间的遗传多样性。**这一概念由根井正利和李文雄在 1979 年提出。核苷酸多样性的…

2023-11-30 AIGC-让图片动起来的主流 AI 工具

摘要: 2023-11-30 AIGC-让图片动起来的主流 AI 工具 让图片动起来的主流 AI 工具 一、数字人播报 1、HeyGen 2、D-ID 3、SadTalker 二、图片生成视频 1、Runway Gen-2 2、Pika Labs 3、Genmo 三、伪3D动态效果 1、LeiaPix 2、剪映手机版 四、角色动画 Animated …

Linux各目录结构说明

文章目录 目录说明源码放哪里?拓展:Linux里面安装软件是装在home目录还是opt目录还是/usr/local好? bin boot dev etc home lib lib64 lostfound media mnt opt proc root run sbin srv sys tmp usr var 目录说明 bin 存放二进制可执行文件&…

再谈谈ThreadLocal

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 大部分面试官喜欢问Thr…

金蝶云星空表单插件获取基础资料的内码

文章目录 金蝶云星空表单插件获取基础资料的内码 金蝶云星空表单插件获取基础资料的内码 不能直接取内码 先获取基础资料数据包,再获取内码 long custId Convert.ToInt64((this.View.Model.GetValue("F_XXXX_CustId") as DynamicObject)["Id&quo…

【从零开始学习JVM | 第三篇】类的生命周期(高频面试)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。 在本文中,我们将深入探讨类的生命周期,从类加载到…

ros2与stm32通讯比较优秀的串口库

这个是我确定的串口库:serial: serial::Serial Class Reference (wjwwood.io) 我也不知道其他的串口库了,我就知道几个,然后我觉得这个是3个里面学习周期比较短,然后质量比较可靠的库 我隐隐觉得这个串口库就是ros1选择的串口库…

shell命令使用杂七杂八(1)——(待完善)

explainshell.com shell统计当前文件夹下的文件个数、目录个数Linux之shell常用命令(三) sort(排序)、uniq(处理重复字符) linux中shell将换行输入到文件中 shell脚本,将多行内容写入文件中 f…

PySpark开发环境搭建常见问题及解决

PySpark环境搭建常见问题及解决 1、winutils.exe问题2、SparkURL问题3、set_ugi()问题 本文主要收录PySpark开发环境搭建时常见的一些问题及解决方案,并收集一些相关资源 1、winutils.exe问题 报错摘要: WARN Shell: Did not find winutils.exe: {} ja…

批量创建/更新外协工序采购信息记录

批量创建/更新没有物料号的外协工序采购信息记录。 执行事务代码ZME1X_OP,下载模板。(此程序可同时用于外协工序的创建和修改)创建外协工序的时候如果是新建则不需要输入采购信息记录号,如果是要更新外协工序价格,则必须输入采购信息记录号。价格单位默认为‘1’,货币代码…

IPV6技术

配置广域网接入: PPP协议:点对点协议是作为点对点链路上进行IP特性的封装协议而被开发出来的。 ppp定义了IP地址的分配和管理、异步和面向位的同步封装、网络协议复用、链路配置、链路质量测试和错误检测等标准,以及网络层地址协议和数据压缩…

智能井盖倾斜预防方案,井盖监测方式推荐

随着每个城市的日益发展,城市基础设施的重要性慢慢凸显出来。其中井盖作为城市生命线的一部分,其安全问题不容小觑。为了保障市民的出行安全和城市基础设施正常运行,智能井盖传感器作为城市生命线智能监测仪有着重要的作用,该设备…

深圳锐杰金融的慈善承诺:健康社区,绿色未来

深圳市锐杰金融投资有限公司,作为中国经济特区的中流砥柱,近年来以其杰出的金融成绩和坚定的社会责任立场引人注目。然而,这并非一个寻常的金融机构。锐杰金融正在用自己的方式诠释企业责任和慈善精神,通过一系列独特的慈善项目&a…

封装ThreadLocal

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 为什么要封装ThreadLoc…

玄子Share-CSS3 弹性布局知识手册

玄子Share-CSS3 弹性布局知识手册 Flexbox Layout(弹性盒布局)是一种在 CSS 中用于设计复杂布局结构的模型。它提供了更加高效、简便的方式来对容器内的子元素进行排列、对齐和分布 主轴和交叉轴 使用弹性布局,最重要的一个概念就是主轴与…

CoDeF视频处理——视频风格转化部署使用与源码解析

一、算法简介与功能 CoDef是作为一种新型的视频表示形式,它包括一个规范内容场,聚合整个视频中的静态内容,以及一个时间变形场,记录了从规范图像(即从规范内容场渲染而成)到每个单独帧的变换过程。针对目标…

JavaScript中的this指向:如何避免常见的this陷阱

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-this指向 目录 this指向详解 强行改变 this 指向 修改上下文中的this…

17、pytest自动使用fixture

官方实例 # content of test_autouse_fixture.py import pytestpytest.fixture def first_entry():return "a"pytest.fixture def order():return []pytest.fixture(autouseTrue) def append_first(order, first_entry):return order.append(first_entry)def test_s…

数学建模-基于机器学习的家政行业整体素质提升因素分析

基于机器学习的家政行业整体素质提升因素分析 整体求解过程概述(摘要) 家政服务业即为家庭提供多种类服务的专门行业,在第三产业中占有重要地位。但近年来,由于人工智能家居产业的发展与客户对家政从业者的要求水平不断提高,家政行业仍面对较…

graphics.h安装后依旧报错

问题解决一: 我在网上找了很多,都说找到graphics.h这个文件,放到include这个目录下,我照做了,然后 当我进行编译时,自动跳到graphics.h这个文件并出现一堆报错 问题解决二: 看一下这两个文件是…