计算机网络 —— 应用层(DNS域名系统)

计算机网络 —— 应用层(DNS域名系统)

  • 什么是DNS
  • 域名的层次结构
    • 域名分类
  • 域名服务器的分类
  • 域名解析方式
    • 递归查询(Recursive Query)
    • 迭代查询(Iterative Query)
    • 域名的高速缓存

我们今天来看DNS域名系统

什么是DNS

DNS,全称为Domain Name System,即域名系统,它是互联网的核心组件之一,扮演着互联网“电话簿”的角色。DNS的主要职责是将人类易于记忆和使用的域名(比如www.example.com)转换为计算机能够识别和连接的IP地址(如192.168.1.1)。这一过程称为域名解析。

DNS的工作原理大致如下:

  1. 客户端查询:当用户在浏览器中输入一个网址时,计算机首先查询本地DNS缓存(如果之前已经访问过该网站),看是否有该域名对应的IP地址记录。如果没有找到,请求会被转发到本地配置的DNS递归解析器,通常是用户的ISP(互联网服务提供商)提供的DNS服务器。
  1. 递归查询:DNS递归解析器接收到请求后,如果其缓存中也没有相关信息,它会代表客户端开始一个递归查询过程。这个过程涉及与多个DNS服务器的交互,从根域名服务器开始,然后到顶级域名(TLD)服务器,再至权威域名服务器,直到找到存储该域名对应IP地址的服务器。
  1. 解析过程
  • 根域名服务器会指引查询到正确的顶级域名服务器(如.com、.org)。
  • 顶级域名服务器进一步将查询转发到负责该特定域名的权威域名服务器。
  • 权威域名服务器最终提供该域名对应的IP地址给递归解析器,递归解析器再将此信息返回给客户端。
  1. 缓存:为了提高效率,每一级DNS服务器和客户端都会缓存得到的域名到IP地址的映射关系,这样后续相同的查询就可以直接从缓存中获取结果,而不需要重复完整的查询过程。

在这里插入图片描述

DNS不仅用于网站地址的解析,还应用于电子邮件路由、及其他依赖于域名的服务中。它是互联网基础设施的关键部分,确保了用户能通过简单易记的域名访问全球各地的网络资源。

域名的层次结构

DNS域名层次结构是一种倒置的树状结构,从最顶层的根域开始,向下依次是顶级域(TLD)、二级域、三级域等,直至具体的主机名。以下是DNS域名层次结构的组成部分及其说明:

  1. 根域(Root Domain)
    标志为一个点(.),位于树形结构的顶端,是所有域名查询的起点。实际上,它是所有DNS查询的最高层级,但通常在域名书写时不显示。全球共有13组根域名服务器,负责引导查询者前往相应的顶级域名服务器。
  1. 顶级域(Top-Level Domain, TLD)
    位于根域之下,是最靠近根域的一级域名,如.com.org.net.edu.gov.cn(中国)等。还包括国家代码顶级域名(ccTLDs),如.uk(英国)、.de(德国)等。
  1. 二级域(Second-Level Domain, SLD)
    在顶级域之下的域名层,通常代表组织或公司的名称,例如在example.com中,example就是二级域。
  1. 三级域(Third-Level Domain)及其他子域
    可以在二级域下继续细分,形成多级子域名结构。例如,在www.example.com中,www是一个三级域,通常用于指定特定的服务类型(如web服务器)。
  1. 主机名(Hostname)
    树状结构中最底层的部分,直接关联到具体的网络设备或服务,如wwwmailftp等。主机名加上前面各级域名,构成了完整的域名,用于唯一标识互联网上的每一台主机。

在这里插入图片描述举个简单的例子:

假设我们访问的网站是 www.example.com

  • 根域(Root Domain):虽然在实际的网址中不会显示出来,但在DNS查询过程中是起始点,用"."表示。
  • 顶级域(Top-Level Domain, TLD):在这个例子中是.com,表示这是一家商业机构的网站。
  • 二级域(Second-Level Domain, SLD)example 是二级域名,它代表了一个具体的组织或公司的名字。
  • 三级域(Third-Level Domain):在这个例子中是www,它是一个常见的前缀,用来指示该域名指向的是一个网站(World Wide Web)服务器。
    所以,当你在浏览器中输入 www.example.com 并敲击回车时,DNS系统会从根域开始,逐步向下查询到顶级域.com的DNS服务器,再到管理example.com这个二级域名的权威DNS服务器,最终找到与www相对应的IP地址,从而让你的电脑能够连接到存放该网站内容的服务器上。

整个域名系统通过这种层次化的结构,实现了域名到IP地址的有效映射,并且允许分散管理,便于查询和维护。每个级别的域名通常由不同的组织或个人管理,顶级域名由互联网号码分配局(IANA)和相应的注册管理机构负责,而更低级别的域名则由相应的注册人或组织管理。

域名分类

域名分类主要可以根据不同的标准来划分,以下是几种常见的分类方式:

  1. 按后缀分类
  • 通用顶级域名(gTLD):包括最早期的.com(商业)、.net(网络服务)、.org(非营利组织)等,以及后来新增的如.info(信息)、.biz(商业)、.mobi(移动设备)等。
  • 国家及地区顶级域名(ccTLD):根据ISO 3166国家代码分配,如.cn(中国)、.us(美国)、.uk(英国)等。
  • 新通用顶级域名(New gTLD):近年来大量增加的顶级域名,如.app(应用)、.shop(商店)、.xyz(通用)等,旨在提供更多样化的选择。
  1. 按功能或用途分类
  • 教育机构:如.edu(教育机构)。
  • 政府机构:如.gov(政府部门)、.gov.cn(中国政府部门)。
  • 军事组织:如.mil(军事机构)。
  • 网络服务:如.net(网络服务相关)。
  • 非营利组织:如.org(非营利组织)。
  1. 按结构或级别分类
  • 顶级域名(Top-Level Domain, TLD):上述提到的各类顶级域名。
  • 二级域名:在顶级域名之下的域名,例如在example.com中,"example"是二级域名。
  • 三级及以下域名:在二级域名基础上进一步细分,如sub.example.com中的"sub"。

在这里插入图片描述在这里插入图片描述

选择合适的域名时,考虑目标受众、品牌定位、易记性以及SEO优化等因素是很重要的。

域名服务器的分类

按照根域名服务器的标准来划分,DNS服务器可以分为以下几类,这种划分方式主要关注DNS层次结构的顶级元素:

  1. 根域名服务器(Root DNS Servers)

这是DNS层次结构的最高层级,全球共有13组根域名服务器,每组可能包含多个物理服务器和镜像站点,以确保稳定性和冗余。它们的主要职责是响应DNS查询的第一步,即指引查询者到适当的顶级域(TLD)服务器。根服务器并不直接提供域名到IP地址的具体映射,而是告诉查询者下一步应该询问哪个顶级域服务器。

  1. 顶级域(TLD)服务器

接收从根服务器转发来的查询请求,负责管理其下一级(即二级域)的域名解析,例如.com、.org、.net等通用顶级域以及国家和地区顶级域(ccTLD)。

  1. 权威域名服务器(Authoritative DNS Servers)

存储特定域的权威DNS记录,直接负责提供某个域名的最终解析结果。当一个域名的DNS记录发生更改时,这些更改会在权威服务器上进行。

  1. 本地缓存域名服务器(Local Caching DNS Servers)

有时也部署在企业网络或ISP内部,作为客户端的直接查询对象,以缓存之前查询过的域名记录,提高查询速度并减少对外部网络的流量需求。

在这里插入图片描述

综上所述,根域名服务器作为DNS查询路径的起始点,是整个域名解析流程的关键环节,而其他类型的DNS服务器则在其后各司其职,共同完成域名到IP地址的解析任务。

域名解析方式

递归查询(Recursive Query)

当一个客户端(如用户的计算机)向其配置的DNS递归解析器发出域名查询请求时,该解析器承担起查找完整答案的责任,并以最终的IP地址响应客户端。递归解析器会依次查询多个DNS服务器,直到找到最终的权威答案。在整个过程中,客户端只需发送一次查询请求,之后的工作由递归解析器“递归”地完成。

过程简述如下:

  • 客户端向递归解析器发送查询请求。
  • 递归解析器先查询本地缓存,若无结果,则向根域名服务器查询。
  • 根据根域名服务器的指引,递归解析器继续向相应的顶级域服务器查询,然后是二级域名服务器,直至找到权威域名服务器。
  • 权威服务器返回最终的IP地址给递归解析器。
  • 递归解析器将此信息返回给客户端,并可能缓存该结果以供将来使用。
    在这里插入图片描述

迭代查询(Iterative Query)

在迭代查询中,DNS服务器不会直接给出最终答案,而是每次回应客户端时提供下一步应该查询的DNS服务器的信息。因此,客户端需要自己负责后续的查询工作,一步步接近最终答案。

过程简述如下:

  • 客户端首先向本地DNS服务器(可能是递归解析器或迭代服务器)发起查询。
  • 如果本地服务器没有答案,它不会继续查询,而是直接告诉客户端应该去询问的下一个DNS服务器的地址(可能是根域名服务器)。
  • 客户端再向这个新的DNS服务器发送查询。
  • 该服务器如果也不能直接回答,会再次返回一个提示,告诉客户端接下来应该查询哪个服务器。
  • 这个过程重复,直到客户端联系到一个能提供权威答案的服务器。
    在这里插入图片描述

总结来说,递归查询中客户端只需要提出请求,剩余工作由DNS服务器完成;而在迭代查询中,客户端需要自己根据收到的提示一步步执行查询操作,直至找到最终答案。

域名的高速缓存

域名的高速缓存是DNS(域名系统)中一个重要的性能优化机制。它的工作原理如下:

当你的设备(比如电脑或手机)需要访问一个网站时,它会向DNS服务器发起请求,要求将网站的域名(如 example.com)转换为对应的IP地址。这个过程分为以下几个步骤:

  1. 查询本地缓存:首先,设备会检查自己的本地缓存中是否有该域名的解析记录。如果之前不久访问过该网站,解析记录可能还存储在本地,这样就可以直接使用而无需向外查询。
  1. 查询递归解析器:如果本地没有缓存,请求会转到递归解析器(通常是ISP提供的DNS服务器)。递归解析器同样会先查看自己的缓存。如果有,直接返回结果;如果没有,递归解析器会继续查询过程。
  1. 迭代查询至权威服务器:递归解析器随后会依次查询根域名服务器、顶级域名服务器(如.com)、二级域名服务器(如.example.com),直至找到负责该域名的权威DNS服务器。权威服务器会提供域名到IP的映射记录。
  1. 结果返回与缓存:一旦权威服务器提供了IP地址,递归解析器会将这个结果返回给初始请求者,并且通常会把这个解析结果在递归解析器上缓存一段时间,以便后续相同的查询可以更快响应。同时,发起查询的设备也会将结果缓存起来,以减少未来相同请求的解析时间。
  1. 缓存过期与刷新:缓存中的记录都有一个生存时间(Time to Live, TTL),过了这个时间,缓存记录就会被视为过期并被删除。下次再有相同的查询请求时,就需要重新进行DNS解析流程。

高速缓存的存在大大减少了对DNS系统根服务器和顶级域名服务器的压力,降低了网络延迟,提升了用户的上网体验。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画SD下载安装教程,学习AI绘画软件必看(SD怎么安装,SD安装教程,安装stable diffusion软件必看)

大家好,我是设计师阿威 最近很火很有趋势的便是AI人工智能了,提到AI大家肯定都不陌生(AIGC)大家也很熟知,但是要问应用的工具有哪些肯定很多人说不出来几个,但是比较厉害的就是大众所认识的SD-stable diff…

Vxe UI vxe-table custom 实现自定义列服务端保存,服务端恢复状态,实现用户个性化列信息保存

Vxe UI vue vxe-table custom 实现自定义列服务端保存,服务端恢复状态,实现用户个性化列信息保存 支持将自定义列状态信息,列宽、冻结列、列排序、列显示隐藏 等状态信息保存到本地或服务端 代码 实现自定义列状态保存功能,只需…

数据管理优化,支持从 API 和对象存储更新数据集|ModelWhale 版本更新

一年一端午,一岁一安康。端午佳节临近, ModelWhale 也带来了新一轮的版本更新,期待为大家带来更优质的使用体验。 本次更新中,ModelWhale 主要进行了以下功能迭代: 新增 从对象存储更新数据集(专业版✓ 团…

Android Room数据库使用介绍

1.简介 Room是Google提供的Android架构组件之一,旨在简化数据库操作。它是SQLite的一个抽象层,提供了更易用和安全的API。 Room的总体架构: 2.Room数据库的基础概念 Entity Entity是Room中的数据表,每个Entity类对应一个SQLite表。 DAO …

神经网络字符分类

按照题目要求修改了多层感知机 题目将图片的每个点作为输入,其中大小为28*28,中间有两个大小为100的隐藏层,激活函数是relu,然后输出大小是10,激活函数是softmax 优化器是Adam,结合了AdaGrad和RMSProp算法…

【elementui源码解析】如何实现自动渲染md文档-第三篇

目录 1.前言 2.webpack.demo.js 3.markdown文档 4.fence.js 1)tokens 2)::: 3) 5.containers.js 1)markdown-it-container 2)md.use() 3)代码逻辑 4)containers小结 6.congfig.js …

Stable Diffusion【光影文字】:绚丽光影,文字与城市夜景的光影之约

今天我们我们结合城市夜景背景来看一下光影文字的效果,我们先来看一下效果图。 一. 字融城市夜景制作光影文字方法 【第一步】:制作底图这里制作底图使用黑底白字。我们使用美图秀秀制作一个"小梁子"字的底图。 字体:默认字体 图…

怕怕怕怕怕怕怕怕怕怕

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

期望14K,某小公司java社招面试经历

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 面试的是一家几百人的公司,基本面试的考察有八股文,也有按照项目问你的,总的来说比较全面吧 1、java代理模式 …

郑州企业资信评价资质:工程咨询单位专业资信申报材料清单

在郑州企业申请工程咨询单位专业资信评价资质时,需要准备一系列详细的申报材料。以下是根据参考文章中的相关数字和信息,清晰、分点表示和归纳的工程咨询单位专业资信申报材料清单: 一、基础材料 企业法人营业执照:提供企业法人营…

统计nginx访问日志前十名

可用下面五种方式来查看: 1. grep -oP ‘^\S’ access.log |sort -rn |uniq -c |sort -rn |head 命令详细讲解: grep: 是一个文本搜索工具,允许你在文件中搜索特定的模式。 -o: 只输出匹配的部分,而不是整行。 -P: 使用Perl兼容的…

Introducing Index-1.9B

简介 大家好,今天我们很高兴首次发布Index系列模型中的轻量版本:Index-1.9B系列 本次开源的Index-1.9B 系列包含以下模型: Index-1.9B base : 基座模型,具有 19亿 非词嵌入参数量,在2.8T 中英文为主的语料上预训练&…

【JavaEE精炼宝库】多线程(5)单例模式 | 指令重排序 | 阻塞队列

目录 一、单例模式: 1.1 饿汉模式: 1.2 懒汉模式: 1.2.1 线程安全的懒汉模式: 1.2.2 线程安全的懒汉模式的优化: 二、指令重排序 三、阻塞队列 3.1 阻塞队列的概念: 3.2 生产者消费者模型&#xf…

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别,箭头函数主要解决什么问题? 箭头函数与普通函数的区别: ⚫ 语法简洁性: ◼ 箭头函数使用>符号定义,省略了 function 关键字,使得语法更为紧凑。 ◼ 对于单行函…

剖析框架代码结构的系统方法(下)

当面对Dubbo、Spring Cloud、Mybatis等开源框架时,我们可以采用一定的系统性的方法来快速把握它们的代码结构。这些系统方法包括对架构演进过程、核心执行流程、基础架构组成和可扩展性设计等维度的讨论。 在上一讲中,我们已经讨论了架构演进过程和核心执行流程这两个系统方法…

【npm】console工具(含胶囊,表格,gif图片)

这是一款控制台花样输出工具 相对丰富的输出方式 文本输出属性值输出胶囊样式输出表格输出图片输出(含动图) 安装 npm install v_aot引用 import v_aot from "v_aot";字段说明 字段类型属性字符串值字符串类型default 、 primary 、 suc…

深入解析MySQL的层次化设计

一、基础架构 1.连接器 1.会先连接到这个数据库上,这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接 2.用户密码连接成功之后,会从权限表中拿出你的权限,后续操作权限都依赖于此时拿出的权限,这就意味着当链…

Github 2024-06-14 开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目2Python项目2非开发语言项目2TypeScript项目1Dart项目1Rust项目1Lua项目1Java项目1Jupyter Notebook项目1从零开始构建你喜爱的技…

代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、 108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 文档讲解:代码随想录 状态:还可以 思路: 如果节点的值在[low, high]之间,则递归修剪它的左子树和右子树。 节点值小于low:如果节点的值小于low&#xff…

【机器学习】简答

1.什么是机器学习? 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。“训练”与“预测”是机器学习的两个过程,“模型”则是过程的中间输出结果,“训练”产生“模型”,“模型”指导 “预测”。计…