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

2023-12-06 07:12

本文主要是介绍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智能选路)

这篇关于DNS协议(DNS规范、DNS报文、DNS智能选路)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/460905

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订