DNS协议

news2024/11/17 23:51:25

DNS服务器

人类更喜欢记忆主机名,而路由器更喜欢定长的、有结构层次的IP地址,DNS应运而生:DNS能进行主机名到IP地址转换的目录服务。


DSN是:
(1)一个由分层的DNS服务器(DNS server)实现的分布式数据库
(2)一个使得主机能够查询分布式数据库的应用协议

  • DNS服务器通常是运行BIND软件的UNIX机器;
  • DNS协议运行在UDP之上,使用53号端口
  • DNS通常使用UDP。

除了主机名到IP地址的转换,DNS还提供了以下非常重要的服务:(84)
(1)主机别名(host aliasing) —— 对应规范主机名(canonical hostname)
(2)邮件服务器别名(mail server aliasing)—— 对应邮件服务器的规范主机名
注:MX记录允许一个邮件服务器和Web服务器使用相同(别名化)的主机名;
(3)负载分配(load distribution)

DNS的服务由分布在全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成。

域名级别
在这里插入图片描述

  • . 代表根域名
  • .com代表顶级域名,也叫一级域名
  • baidu.com叫二级域名
  • www.baidu.com是三级域名

⭐资源记录 RR(Resource Record)

RR提供了主机名到IP地址的映射;
RR是一个包含了以下字段的四元组:(Name(域名),Value(IP),Type(记录类型),TTL(缓存时限))

TTL(Time To Live):该记录的生存时间,它决定了给了该记录应当从缓存中删除的时间;
而Name和Value的值取决于Type;

⭐RR四元组中Type的常见类型 :
(1)A : Name是主机名,Value是该主机对应的IP地址 —— 一条A类型的资源记录提供了标准主机名到IP地址的映射;
例:(relay1.bar.foo.com, 145.37.93.126, A,TTL)

(2)NS :Name是个域(如foo.com),Value是一个权威DNS服务器的主机名,该权威DNS服务器知道如何获得该域(即Name)中主机的IP地址 —— 一条NS类型的RR用于沿着查询链路来路由DNS查询;
例:(foo.com, dns.foo.com, NS, TTL)

(3)CNAME:Name为某主机的别名,Value为对应的规范主机名 —— 一条CNAME类型的RR能够提供一个主机名对应的规范主机名;
例:(foo.com, relay1.bar.foo.com, CNAME, TTL)

(4)MX: Name为某邮件服务器的别名,Value对应其邮件服务器的规范主机名 —— 一条MX类型的RR能够提供一个邮件服务器对应的规范主机名;
例:(foo.com, mail.bar.foo.com, MX, TTL)

(5)PTR:反向解析 —— 从IP到主机名

DNS通常是由其他应用层协议使用的,包括HTTP,SMTP,FTP;
但是DNS本身也属于应用层协议,因为它是使用C/S模式(客户-服务器模式)运行在通信的端系统之间的。

⭐DNS的设计模式

(1)因特网只是用一个DNS服务器:

问题包括:单点故障、通信容量、远距离的集中式数据库、维护

(2)分布式、层次数据库

当今的DNS设计模式。为了处理拓展性的问题,DNS使用了大量以层次方式组织并分布于全球范围的大量DNS服务器。没有一台DNS服务器拥有因特网上所有主机的映射,相反,这些映射分布于所有的DNS服务器上。

⭐DNS服务器分类

  • 一、根域名服务器——根DNS

    LDNS没有任何缓存,就去问根DNS,根能告诉LDNS下一步该问谁。 全球有400多个根DNS服务器,由13个组织管理,10个在美国,英国和瑞典各1个,日本1个。

  • 二、权威DNS服务器

    负责对请求作出权威的回答

    权威DNS中存储着资源记录(Resource Record),最常见的3种:A记录(记录某域名和其IP的对应),NS记录(记录某域名和负责解析该域的权威DNS),CNAME记录(负责记录某域名及其别名)。

    ① 权威能直接回答的,就回A记录;

    ② 需要其他权威DNS回答的,就回NS记录,然后LDNS再去找其他权威DNS问;

    ③ 如果该记录是别名类型的,就回CNAME,LDNS就会再去解析别名。

  • 三、TLD,顶级域名DNS服务器(Top-Level Domain)
    常见的顶级域名:com,org,net,edu,gov ; 国家顶级域名:uk,fr,jp,ca;

还有严格来说不属于上述DNS服务器层次结构的一类很重要的DNS服务器:

本地域名服务器LDNS(local DNS server)

每个ISP(如一个居民区的ISP或一个机构的ISP)都有有一台本地DNS服务器;

主机发出DNS请求时,该请求先被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中

DNS工作方式

⭐在不考虑DNS缓存的角度上,假定一个DNS客户要获取www.amazon.com的IP地址,它需要经历以下层次:

(1)与根服务器之一联系,它将返回顶级域名com的TLD服务器的IP地址
(2)与这些TLD服务器之一联系,它将返回amazon.com的权威服务器的IP地址
(3)最后,与amazon.com的权威服务器之一联系,获取www.amazon.com的IP地址

⭐一个主机通过DNS获取指定主机名对应的IP地址并发起HTTP的TCP连接的过程:

(1)浏览器截取URL中的主机名字段发送给DNS应用的客户端
(2)DNS客户端向DNS服务器发送一个包含主机名的请求
(3)DNS客户端收到来自DNS服务器发出的回答报文,该报文中包含对应请求主机名对应的IP地址
(4)浏览器接收到来自DNS的该IP地址
(5)浏览器向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

可以看到DNS的使用带来了额外的时延,但通过DNS缓存技术和其分布式、层次数据库的特性,想获得的IP地址通常就缓存在“附近的”DNS服务器中,减少了DNS的网络流量和DNS的平均时延。

⭐DNS的迭代与递归查询
理论上任何DNS查询既可以是迭代的也可以是递归的,但实践中:

(1)从请求主机到本地DNS服务器的查询是递归的——以自己的名义请求获得映射
(2)其余的查询都是迭代的——所有的回答都直接返回给本地DNS服务器

⭐DNS缓存

  • 当某DNS服务器接收到一个DNS回答,它能将映射缓存在本地DNS服务器的存储器中。

  • 但这种缓存并不是永久的,DNS服务器在一段时间后(通常为两天)将丢弃缓存信息。

  • 因为有了缓存,除了少数DNS查询以外,根服务器都被绕过了(DNS服务器也可以缓存TLD服务器的IP地址)。

⭐ 具体过程:

  • 权威DNS:权威能直接回答的,就回ip;需要其他权威DNS回答的,就回NS记录(记录某域名和负责解析该域 的权威DNS),然后LDNS再去找其他权威DNS问;如果该记录是别名类型的,就回CNAME(负责记录某域名 及其别名),LDNS就会再去解析别名。
  • 递归DNS:通常就是LDNS,它接受终端的域名查询请求,负责在网上问一圈后,将答案返回终端

以访问 www.baidu.com为例:

  1. LDNS本地没有记录,则询问根DNS
  2. 根DNS会返回顶级域名com的DNS名字与IP(NS记录)
  3. LDNS询问com的权威DNS,返回baidu.com的权威DNS名字与IP(NS)
  4. LDNS询问baidu.com的权威DNS,返回对应www.baidu.com的IP地址(A记录或者给出别名继续询问)
  5. LDNS返回终端

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

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

相关文章

元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(2)

Saas/内部解决方案 2.5、Azure Purview 地址:Azure Purview - Unified Data Governance Solution | Microsoft Azure 特点: 1、创建跨整个数据资产的统一数据地图,为有效的数据治理和使用奠定基础 1.1、自动化和管理混合源的元数据&#xf…

重打包实现frida持久化 笔记

修改Dex Using Frida on Android without root 修改so [翻译]在未root的设备上使用frida 2个方法本质都是通过重打包让app自己加载frida-gadget.so (但感觉没有谁家app会让人轻易重打包吧。。。) apktool d org.telegram.messenger_4.8.4-12207.apk -r…

Tomcat配置SSL证书别名tomcat无法识别密钥项

Tomcat配置SSL证书一直启动失败,主要问题如下: java.io.IOException: Alias name tomcat does not identify a key entry at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:280) 别名tomcat无法识别密钥项,是因…

STM32单片机远程控制大棚种植系统

想要更多项目私wo!!! 一、电路设计 ​​​​​系统示意图硬件系统 系统由五个单片机系统组成的,其中51系列的单片机四个,STM32F407单片机一个,各个子系统之间通过NRF24L01无线模块进行通信。 系统硬件组成框图​​​​主控制板主要由STM32…

【VuePress2.0】快速开始(不用)

文章目录VuePress2.x1.1 安装安装VuePress2.x(手动安装)1.2 VuePress2.x 基本操作VuePress2.x主题2.1 安装VuePress2.x主题(yarn)2.2 报错解决(没效果,不用看)2.3 VuePress2.x主题 基本操作VueP…

Java基础深化和提高-------IO流

目录 IO流技术介绍 什么是IO 什么是数据源 流的概念 第一个简单的IO流程序 IO流的经典写法 IO流新语法经典写法 Java中流的概念细分 按流的方向分类: 按处理的数据单元分类: 按处理对象不同分类: Java中IO流类的体系 Java中IO的四大抽象…

CleanMyMac X真正好用的Mac电脑系统优化软件应用工具

最用户友好的Mac问题修复程序。删除系统垃圾、不需要的应用程序和恶意软件,并调整您的Mac以获得最高速度。对于速度较慢的计算机,CleanMyMac就能立即使用。 CleanMyMac2023之所以能够获得众多Mac的老用户们的喜爱,是因为其有着非常强大功能提…

数据可视化之大数据平台可视化

一 前言 在简化数据量和降低大数据应用的复杂性中,大数据分析发挥着关键的作用。可视化是其中一个重要的途径,它能够帮助大数据获得完整的数据视图并挖掘数据的价值。大数据分析和可视化应该无缝连接,这样才能在大数据应用中发挥最大的功效。…

nodejs+mysql航空飞机票销售酒店预订系统vue

(1)对机票预订管理系统进行需求分析、确定所需要的模块;建立数据字典、数据流等;书写可行性分析和需求分析说明书。 (2)对机票预订管理系统进行概要设计:建立软件体系结构,画出用例图、E-R图等;书写数据要求说明书和各…

【雷达通信】阵列信号处理(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

聊聊Go里面的闭包

以前写 Java 的时候,听到前端同学谈论闭包,觉得甚是新奇,后面自己写了一小段时间 JS,虽只学到皮毛,也大概了解到闭包的概念,现在工作常用语言是 Go,很多优雅的代码中总是有闭包的身影&#xff0…

嵌入式图形开发框架Qt——让牙科手术开始迈入机器人时代

Neocis软件工程总监,Jim Tieman: “我们Neocis是一家致力于提高科医生能力和促进病人护理的牙科机器人公司。之前我们有一个Microsoft Foundations Class (MFC)的应用程序,由于现在团队擅长MFC开发的技术员并不多,维护起来也很费劲。之前这个…

AST 初探深浅,代码还能这样玩?

AST 听起来好像是个很新的东西,那么具体有什么用,好不好用就在这篇文章中找到答案吧~ 我们简单将这个词拆分抽象、语法、树,如果我们能够顺利将这个词拆分,那么我们也就掌握了其核心所在 抽象:抽象的反义词是具象&…

微信小程序|使用小程序制作一个2048小游戏

文章目录一、文章前言二、创建小程序三、功能开发一、文章前言 此文主要通过小程序实现2048游戏,游戏操作简单,容易上手。 规则:正常打开游戏的界面,会只有两个2,每次移动后都会出现一个2,数字大了之后会出…

RabbitMQ初步到精通-第八章-Java-AMQP-Client源码分析

目录 第八章-Java-AMQP-Client源码分析 1、背景 1.1 客户端介绍 1.2 看源码好处 1.3 如何看源码 2、生产者 3、消费者监听 4、创建连接 5、消费者消费 6. 总结: 第八章-Java-AMQP-Client源码分析 1、背景 1.1 客户端介绍 通过前面几章的学习,大家对…

工作以来一直在CRUD,Spring源码该怎么阅读?这份价值百万的源码解析让你如有神助!

初学SpringBoot框架时,第一次启动服务,直呼什么鬼?只需要简单的几步配置,几个核心的注解,就可以快速实现工程的搭建和运行; 虽然从Spring框架迁移到SpringBoot框架,在初期会有很多的不适应&…

谈谈对跨域(跨源)的一些理解

一、相关概念 1、什么是跨域? 跨域又称为跨源,是指在违反了浏览器的同源政策,也就是协议、域名和端口号三者不完全一致的情况下产生的。只要客户端与浏览器的三者有一项不同,就属于不同源,就会产生跨域。 很多初级开…

G 蛋白偶联受体与小分子化合物的相互作用

化学遗传学 (Chemogenetics) 是指一种蛋白被改造与先前未被识别的小分子化合物相互作用的过程。多种蛋白的改造已被报道,包括激酶、非激酶的酶类、G 蛋白偶联受体 (GPCRs) 和配体门控离子通道。化学遗传学技术 DREADDs (Designer receptors exclusively activated b…

MapReduce分区、排序、Combiner

Shuffle MapReduce的Map阶段与Reduce阶段之间有一个Shuffle的过程,包括分区、排序等内容。数据从Map阶段出来后,会进入一个环形缓冲区(默认100M),环形缓冲区中会同时记录数据和索引,当使用了80%的时候&…

PostgreSQL主从数据库数据同步

运行环境 操作系统:Debian 11.5 数 据 库:PostgreSQL 14.6 主数据库:192.168.8.68 从数据库:192.168.8.69 使用apt-get安装postgresql,安装方法可以参考 https://blog.csdn.net/itbs/article/details/127909359?…