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

news2024/11/24 4:46:27

目录

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.coloradmin.cn/o/1287940.html

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

相关文章

备战春招——12.05算法

树、二叉树 本次主要是对树、二叉树的前中后和递归与非递归遍历以及通过这种结构完成一些操作实现。 二叉树 中序遍历 中序遍历就是中间打印出结果嘛,如下列递归实现的,中间取结果. /** 递归实现* Definition for a binary tree node.* struct TreeNode {* …

axios使用

Get请求 Post请求 出问题了: 并发请求 全局配置 多个实例如何处理 拦截器 axios在Vue中的模块封装

Pyside2 (Qt For Python)进度条功能实现

Pyside2 (Qt For Python)进度条功能实现 进度条(QProgressBar) 今天来介绍PySide2进度条(QProgressBar)的使用,如下所示: 说明 进度条也是一个常用的控件,当程序需要做一件比较耗费时间的任…

【PduR路由】PduR模块详细介绍

目录 1.PDUR模块功能介绍 2.关键概念理解 3.功能详细设计 3.1I-PDU handling 3.1.1 I-PDU Reception to upper module(s) 3.1.1.1 Communication Interface 3.1.1.2 Transport Protocol 3.1.2 I-PDU Transmission from upper module(s) 3.1.2.1 Multicast 3.1.2.2 Co…

流媒体音视频/安防视频云平台/可视化监控平台EasyCVR无法启动且打印panic报错,是什么原因?

国标GB视频监控管理平台/视频集中存储/云存储EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园…

软件设计模式之组合模式

组合模式:将对象组合成树形结构。 案例:公司管理。一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的…

Nodejs+vue+ElementUi自动排课系统

使用自动排课系统分为管理员和学生、教师三个角色的权限子模块。 管理员所能使用的功能主要有:首页、个人中心、学生管理、教师管理、班级信息管理、专业信息管理、教室信息管理、课程信息管理、排课信息管理、系统管理等。 学生可以实现首页、个人中心、排课信息管…

Linux系统调试课:PCIe调试手段

文章目录 一、lspci 命令二、pciutils 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍pcie调试手段。 一、lspci 命令 通过lspci可以查看当前系统挂载了哪些pci设备。 lspci - 列出 PCI 设备 lspci 命令可以列出计算机中所有 PCI 设备的详细信息,…

Leetcode每日一题学习训练——Python3版(到达首都的最少油耗)

版本说明 当前版本号[20231205]。 版本修改说明20231205初版 目录 文章目录 版本说明目录到达首都的最少油耗理解题目代码思路参考代码 原题可以点击此 2477. 到达首都的最少油耗 前去练习。 到达首都的最少油耗 ​ 给你一棵 n 个节点的树(一个无向、连通、无环…

处理k8s中创建ingress失败

创建ingress: 如果在创建过程中出错了: 处理方法就是: kubectl get ValidatingWebhookConfiguration kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission 然后再次创建,发现可以:

阿里云环境下的配置DNS和SLB的几种实践示例

一、背景 对于大多中小型公司来说,生产环境大多是购买阿里云或者腾讯云等等,也就存在以下需求: 外网域名内网域名SLB容器化部署 特别是前两项,一定是跳不过的。容器化部署,现在非K8S莫属了。 既然是购买阿里云&…

初级数据结构(一)——顺序表

文中代码源文件已上传:数据结构源码 1、顺序表的特点 1.1、数组 现实中数据记录一般都记录在表格中,如进货单、菜单等,它们的最大特点就是有序。表述中可以用第一项、第二项、第 n 项来描述表格中某个数据或者某串数据。在 C 语言中&#…

解决ssr服务端渲染程序启动报错: ReferenceError: location is not defined

现象: 原因:chatgpt给出的解释很到位: 该错误表明代码尝试访问 location 对象,该对象通常在浏览器环境中可用。 然而,你的服务器端代码正在 Node.js 环境中运行,而在这个环境中 location 对象未定义。 问…

Kafka 生产者 API 指南:深入理解生产者的实现与最佳实践

Kafka 是一个高性能、分布式的消息中间件系统,而其生产者 API 是连接应用程序与 Kafka 集群之间的纽带。本篇博客将深入探讨 Kafka 生产者 API 的核心概念、用法,以及一些最佳实践,帮助你更好地利用 Kafka 构建可靠的消息生产系统。 1. Kafk…

uniapp得app云打包问题

获取appid,具体可以查看详情 也可以配置图标,获取直接生成即可 发行 打包配置 自有证书测试使用时候不需要使用 编译打包 最后找到安装包apk安装到手机 打包前,图片命名使用要非中文,否则无法打包成功会报错

Kafka中的Topic

在Kafka中,Topic是消息的逻辑容器,用于组织和分类消息。本文将深入探讨Kafka Topic的各个方面,包括创建、配置、生产者和消费者,以及一些实际应用中的示例代码。 1. 介绍 在Kafka中,Topic是消息的逻辑通道&#xff0…

SpringBoot集成mail发送邮件

前言 发送邮件功能,借鉴 刚果商城,根据文档及项目代码实现。整理总结便有了此文,文章有不对的点,请联系博主指出,请多多点赞收藏,您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

MQTT框架和使用

目录 MQTT框架 1. MQTT概述 1.1 形象地理解三个角色 1.2 消息的传递 2. 在Windows上体验MQTT 2.1 安装APP 2.2 启动服务器 2.3 使用MQTTX 2.3.1 建立连接 2.3.2 订阅主题 2.3.3 发布主题 2.4 使用mosquitto 2.4.1 发布消息 2.4.2 订阅消息 3. kawaii-mqtt源码分析…

STM32下载程序的五种方法

刚开始学习 STM32 的时候,很多小伙伴满怀热情买好了各种设备,但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片~ STM32 的烧录方式多样且灵活,可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将…

ESP32-Web-Server编程-在网页中插入图片

ESP32-Web-Server编程-在网页中插入图片 概述 图胜与言,在网页端显示含义清晰的图片,可以使得内容更容易理解。 需求及功能解析 本节演示在 ESP32 Web 服务器上插入若干图片。在插入图片时还可以对图片设置一个超链接,用户点击该图片时&a…