DNS 杂谈

news2024/11/15 12:38:08

一、定义

DNS(Domain Name System),域名系统,该系统记录域名和Ip地址的相互映射关系。用户访问互联网时,通过域名地址得到对应的IP地址,这个过程称为域名解析。DNS运行于UDP协议之上,使用的端口为53。

递归查询:客户端只发出一次请求,直到服务器响应该请求,并返回结果到客户端。客户端向本地域名服务器的查询一般是递归查询。

迭代查询:服务器发出多次请求,层层请求后知道查询到结果并返回。本地域名服务器向域名系统中各级域名服务器的请求查询是迭代查询。

若上级DNS服务器并不能直接提供该DNS的解析结果,则该上级DNS服务器会告知本地域名服务器另对一个可能查询到该DNS解析结果的DNS服务器IP,本地域名服务器再次向这个DNS服务器发起解析请求,层层问询,直到查询到应的结果为止。

1、常见的记录类型

A(Address Mapping records)指示了对应名称的IPv4地址, A记录用来将域名转换为ip地址。

AAAA:指示对应名称的IPv6地址。

SOA(Start Of Authority): 起始授权记录,一个区域解析库有且仅能有一个SOA记录,而且必须为解析库的第一条记录。

NS(Name Server):记录当前区域中的某个DNS服务器的名字,一个区域可有多个NS记录。

PTR(Reverse-lookup Pointer records):反向查找记录,是一种 DNS 记录类型,用于将 IP 地址映射到对应的主机名。这与 A 记录和 AAAA 记录的作用相反,后者是将主机名映射到 IP 地址

CNAME(Canonical Name):域名的别名记录,用于记录某个主机域名的别名。

NAME                    TYPE   VALUE
--------------------------------------------------
bar.example.com.        CNAME  foo.example.com.
foo.example.com.        A      192.0.2.23

当用户查询 bar.example.com 的时候,DNS Server 实际返回的是 foo.example.com 的 IP 地址。

MX(Mail Exchanger records):为某个DNS域名指定邮件交换的服务器。

TXT(text records):包含任意非格式化的文本信息。

二、常用linux命令

1、ping

最常用的通常用于检查网络连通性,但也会执行 DNS 解析以获取目标主机的 IP 地址。

ping example.com

2、 nslookup

一个用于查询 DNS 记录的命令行工具

查询主机名的 IP 地址:nslookup example.com

指定 DNS 服务器进行查询:nslookup example.com 8.8.8.8

3、 dig

DNS 查询工具,提供更多的查询选项和详细信息,下面列举一个最常见的 dig www.baidu.com

参考:

   反演 百度DNS解析规则 | ESON

DNS 服务器在响应查询时,需要查询自己的数据库,数据库中的条目被称为 资源记录(Resource Record,RR) 。RR 提供了主机名到 IP 地址的映射。RR 是一个包含了Name, Value, Type, TTL四个字段的四元组。dig结果的每一行解释

//dig 的版本信息和查询的域名。

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.baidu.com

//表示全局选项和命令行参数
;; global options: +cmd

//表明收到了响应。
;; Got answer:

//这是响应头信息,opcode: QUERY:表示这是一个查询操作

//status: NOERROR:表示查询成功,无错误

//id: 46143:查询的 ID
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39913

//标志和计数。
//qr:查询响应;rd:递归查询已请求;ra:递归查询已可用。
//QUERY: 查询问题部分的计数;ANSWER: 回答部分的计数;AUTHORITY: 权威部分的计数; ADDITIONAL: 附加部分的计数。
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512

//查询问题部分,显示了所请求的信息,查询类型是 A 记录
;; QUESTION SECTION:
;www.baidu.com.                 IN      A

//回答部分,显示了查询的结果

;; ANSWER SECTION:
www.baidu.com.          492     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       21      IN      CNAME   www.wshifen.com.
www.wshifen.com.        261     IN      A       45.113.192.102
www.wshifen.com.        261     IN      A       45.113.192.101

//查询耗时 50 毫秒

;; Query time: 1 msec
//使用的 DNS 服务器是 127.0.0.1,端口号为 53
;; SERVER: 127.0.0.1#53(127.0.0.1)

//查询时间
;; WHEN: Tue Jul 09 16:37:56 CST 2024

//接收的消息大小为 127字节
;; MSG SIZE  rcvd: 127

三、DNS服务器方式

1、BGP + Anycast

        Anycast是一种网络通信方法,其中同一个 IP 地址被分配给多个地理位置不同的服务器节点。用户的请求会自动路由到距离最近或者最有效的服务器节点,这样可以减少延迟,提高访问速度和可靠性。

        分配相同的 IP 地址给多个服务器节点并通过 Anycast 实现请求的路由,主要是通过配置网络路由协议,特别是边界网关协议(BGP)。

参考:千亿级HttpDNS服务是怎样炼成的-腾讯云开发者社区-腾讯云

2、Localdns + dnsmasp+DPDK

        /etc/resolv.conf 文件是系统DNS解析的关键配置文件,它指定了系统在进行域名解析时应该使用的DNS服务器。正确配置这个文件对于确保系统的网络连接和互联网访问至关重要。

        dnsmasq支持解决DNS,DHCP和router等多方面问题,一个常见的认知dnsmasq是一个本地dns(/etc/resolv.conf)的加强版

参考:

DPDK开发之基于UDP的DNS服务器_dpdk千万级流量并发的dns处理 csdn-CSDN博客

3、Nacos-DNS

服务提供者将自己的服务实例信息(如IP地址、端口号、健康状态等)注册到Nacos注册中心。

当服务消费者(Consumer)需要调用某个服务时,会通过服务的名称发送DNS查询请求到Nacos DNS服务器。

Nacos DNS服务器接收到DNS查询请求后,会向Nacos注册中心查询该服务名称对应的所有可用的IP地址列表。

参考:

微服务架构中基于DNS的服务注册与发现

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

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

相关文章

HomeAssistant HAOS安装HACS集成

1. HAOS安装HACS集成 1.1 手动安装HACS 下载HACS压缩包 加载项安装samba&#xff0c;可能需要特殊网络环境不然非常慢 配置->加载项->加载项商店-> 搜索samba&#xff0c;并安装&#xff0c;配置用户名密码 Samba配置完成之后,如果启动不起来就需要重启HomeAssis…

图文讲解IDEA如何导入JDBC驱动包

前言 学习JDBC编程,势必要学会如何导入驱动包,这里笔者用图文的方式来介绍 视频版本在这里 50秒教你怎么导入驱动包然后进行JDBC编程的学习_哔哩哔哩_bilibili 忘记录音频了,大伙凑合着看 下载驱动包 https://mvnrepository.com/artifact/mysql/mysql-connector-java 去中…

SpringCloud代码实战

项目结构 实例实现功能:实现通过id查询用户的订单信息 OrderCommon&#xff1a;公共的一些模块类型&#xff0c;此处为一个user对象 Eureka-Service:配置Eureka的启动类&#xff0c;服务端 Order-Service:提供查询功能的服务端 Order-Client:查询的客户端 OrderCommon代码…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体&#xff0c;括号后分号不能丢类内成员可…

类型“RouteRecordName”上不存在属性“includes”。 类型“symbol”上不存在属性“includes”

确定 route.name 运行时是 字符串&#xff0c;强制转换 为字符串。 removeRoute(id: string) { this.dynamRoute this.dynamRoute.filter(route > !(route.name as string).includes(id)) localStorage.setItem(dynamRoute, JSON.stringify(this.dynamRoute)) delete this.t…

[leetcode] shortest-subarray-with-sum-at-least-k 和至少为 K 的最短子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int shortestSubarray(vector<int>& nums, int k) {int n nums.size();vector<long> preSumArr(n 1);for (int i 0; i < n; i) {preSumArr[i 1] preSumArr[i] nums[i];}int res n…

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…

九、函数递归

——————————————————————————————————————————— 目录 1、递归是什么&#xff1f; 1.1、递归的思想 1.2、递归的限制条件 2、递归举例 2.1、举例1&#xff1a;求n的阶乘 2.1.1、分析和代码实现 2.2.1分析和代码实现 3、递归与…

百度智能云将大模型引入网络故障定位的智能运维实践

物理网络中&#xff0c;某个设备发生故障&#xff0c;可能会引起一系列指标异常的告警。如何在短时间内从这些告警信息中找到真正的故障原因&#xff0c;犹如大海捞针&#xff0c;对于运维团队是一件很有挑战的事情。 在长期的物理网络运维工作建设中&#xff0c;百度智能云通…

文献阅读(1)——深度强化学习求解车辆路径问题的研究综述

doi&#xff1a; 10.3778/j.issn.1002-8331.2210-0153 深度强化学习求解车辆路径问题的研究综述 (ceaj.org) 组合最优化问题&#xff08; combinatorial optimization problem&#xff0c; COP &#xff09; 日常生活中常见的 COP 问题有旅行商问题&#xff08;traveling sale…

碾压SOTA!最新视觉SLAM:渲染速度提升176倍,内存占用减少150%

视觉SLAM&#xff0c;一种结合了CV与机器人技术的先进方法。与激光SLAM相比&#xff0c;它成本低廉且信息量大&#xff0c;易于安装&#xff0c;拥有更优秀的场景识别能力&#xff0c;因此在自动驾驶等许多场景上都非常适用&#xff0c;是学术界与工业界共同关注的热门研究方向…

【从零开始实现stm32无刷电机FOC】【理论】【3/6 位置、速度、电流控制】

目录 PID控制滤波单独位置控制单独速度控制单独电流控制位置-速度-电流串级控制 上一节&#xff0c;通过对SVPWM的推导&#xff0c;我们获得了控制电机转子任意受力的能力。本节&#xff0c;我们选用上节得到的转子dq轴解耦的SVPWM形式&#xff0c;对转子受力进行合理控制&…

C++——map和set类用法指南

一、前言 1.1 关联式容器 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key,value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。 1.2 键值对 用来表示具有一一对应关系的一种结构&#xff0c;该结构中一般…

ARM功耗管理标准接口之PSCI

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理有哪些标准接口&#xff1f;ACPI&PSCI&SCMI&#xff1f; Advanced Configuration and Power Interface Power State Coordination Interface System Control and Management Interface ARM V8架构的软件分…

组件设计原则和度量方法

在日常开发过程中&#xff0c;Spring、Dubbo、Mybatis等都是我们常用的开源框架。当你在使用这些框架时&#xff0c;不可避免需要通过分析源码来理解内部的实现原理。那么&#xff0c;你在翻阅源代码时&#xff0c;有没有想过这些框架的代码结构为什么要这样进行设计和实现呢&a…

自学鸿蒙HarmonyOS的ArkTS语言<五>attributeModifier动态属性和用attributeModifier封装公共组件

【官方文档传送门】 一、抽取组件样式 class MyModifier implements AttributeModifier<ButtonAttribute> {applyNormalAttribute(instance: ButtonAttribute): void {instance.backgroundColor(Color.Black)instance.width(200)instance.height(50)instance.margin(10…

2008年上半年软件设计师【下午题】真题及答案

文章目录 2008年上半年软件设计师下午题--真题2008年上半年软件设计师下午题--答案 2008年上半年软件设计师下午题–真题 2008年上半年软件设计师下午题–答案

数字滚动动画~

前言 数字从0.00滚动到某个数值的动画 实现&#xff08;React版本&#xff09; Dom <div className"number" ref{numberRef}>0.00</div> JS const _initNumber () > {const targetNumber 15454547.69;const duration 1500;const numberElement…

[leetcode]subarray-product-less-than-k 乘积小于K的子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int numSubarrayProductLessThanK(vector<int>& nums, int k) {if (k 0) {return 0;}int n nums.size();vector<double> logPrefix(n 1);for (int i 0; i < n; i) {logPrefix[i 1] …

E. Beautiful Array(cf954div3)

题意&#xff1a;给定一个数组&#xff0c;可以先对数组进行任意排序&#xff0c;每次操作可以选择一个ai&#xff0c;将它变成aik&#xff0c; 想让这个数组变成一个美丽数组&#xff08;回文数组&#xff09;&#xff0c;求最少操作次数 分析&#xff1a; 先找出相同的数字…