计算机网络 —— 应用层(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.mzph.cn/bicheng/26908.shtml

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

相关文章

批量文件重命名技巧:轻松替换删除文件夹名中的字母,实现高效文件管理新境界

在数字化时代,我们每天都会面对大量的文件和文件夹。无论是工作文档、学习资料还是个人收藏,文件命名的规范性都显得尤为重要。然而,手动一个一个去修改文件名,不仅耗时耗力,还容易出错。那么,有没有一种方…

SAP ABAP 之面向对象OO

文章目录 前言一、类的理解二、如何创建ABAP类 a.类的定义与构成 b.类的访问区域 c.特殊方法 d.类的继承 三、类中参数的使用 a.IMPORTING / EXPORTING b.CHANGING c.RETURNING d.EX…

【Jmeter】插件详解:PerfMon Metrics Collector 服务器性能监控插件

目录 一、前言 二、PerfMon Metrics Collector 插件详解 (1)插件简介 (2)功能介绍 (3)应用场景 (4)使用指南 ① 环境准备 ② 服务端插件配置 ③ 监听器配置 ④ 图表设置 ⑤ 非 GUI 模式 三、ServerAgent 下载 四、ServerAgent 安装 (1)安装 (…

在python中指定pytorch训练时使用多块或某块GPU的方法

1. 引入 PyTorch是一个流行的深度学习框架,它提供了方便的API,使得在GPU上进行模型训练变得简单。 然而,有时我们可能需要指定使用多个GPU或者特定的GPU来进行训练,以满足不同的需求。 之所以在python中指定GPU,而不是…

水库枢纽乙级设计资质下的团队构建

1. 技术负责人与核心团队 技术负责人:需具备高级专业技术职称,且在水利枢纽设计领域有丰富的实践经验,能够指导解决复杂技术难题。核心设计团队:包括但不限于水工结构、水文水资源、地质勘察、电气自动化、环境保护等专业领域的工…

PHP杂货铺家庭在线记账理财管理系统源码

家庭在线记帐理财系统,让你对自己的开支了如指掌,图形化界面操作更简单,非常适合家庭理财、记账,系统界面简洁优美,操作直观简单,非常容易上手。 安装说明: 1、上传到网站根目录 2、用phpMyad…

leetcode695 岛屿的最大面积

题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值…

13. FastLED 示例3则

Best of FastLED Discussions 1. Fire2012&#xff1a; FastLED 火灾模拟器 // Fire2012: a basic fire simulation for a one-dimensional string of LEDs // Mark Kriegsman, July 2012. // // Compiled size for Arduino/AVR is about 3,968 bytes.#include <FastLED.h…

基于springboot实现入校申报审批系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现入校申报审批系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装入校申报审批系统软…

【最新鸿蒙应用开发】——Context上下文对象

应用上下文Context 1. 概述 应用上下文&#xff08;Context&#xff09;是应用程序的全局信息的接口。它是一个抽象类&#xff0c;提供了访问应用程序环境的方法和资源的方法。应用上下文可以用于获取应用程序的资源、启动Ability、发送广播等。每个应用程序都有一个应用上下…

【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 机器学习在疾病诊断中的应用&#x1f9e9;医学影像分析&#xff1a;从X光到3D成像带代码&#x1…

NDS域名解析服务

3.1BIND域名服务基础 3.1.1 DNS系统的作用及类型 正向解析&#xff1a;根据域名查IP&#xff0c;即将指定的域名解析为相对应的IP地址。 反向解析&#xff1a;根据IP地址查域名&#xff0c;即将指定的IP地址解析为相对应的域名。 每一台DNS服务器都只负责管理一个有限范围内…

UltraISO 未找到虚拟光驱

VMWare Win7 虚拟机用 UltraISO 加载镜像时&#xff0c;提示“未找到虚拟光驱”&#xff1f; 1. 安装签名更新程序 https://www.catalog.update.microsoft.com/Search.aspx?qkb4474419 https://blog.csdn.net/m0_52072919/article/details/118895862 2. 打开 CMD, 进入…

C++面试准备

变量作用&#xff1a;给一段指定的内存空间起名&#xff0c;方便操作这段内存。 常量&#xff1a;用于记录程序中不可更改的数据。 #include <iostream> using namespace std;#define DAY 7 int main() {cout << "一周有" << DAY << "…

【Linux之·软件更新源】

系列文章目录 文章目录 前言一、 ARM架构二、x86架构总结 前言 一、 ARM架构 armv7l&#xff08; Ubuntu 14.04.4 LTS&#xff09; deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ trust…

路由器怎么设置局域网?

局域网&#xff08;Local Area Network&#xff0c;LAN&#xff09;是指在一个相对较小的地理范围内&#xff0c;如家庭、办公室或学校等&#xff0c;通过路由器等设备连接起来的计算机网络。设置局域网可以方便地实现内部资源共享和信息交流。本文将介绍如何设置局域网以及一个…

maven 显式依赖包包含隐式依赖包,引起依赖包冲突

问题&#xff1a;FlinkCDC 3.0.1 代码 maven依赖包冲突 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包&#xff0c;有多个不同的版本&#xff0c;因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它…

Redis缓存(笔记三:Redis6新数据类型)

目录 1. 介绍 2. Bitmaps&#xff08;可以称为字符串&#xff0c;专门进行位操作的字符串&#xff09; 2.1 概念 2.2 setbit&#xff08;设置Bitmaps中某个偏移量的值&#xff09; 2.3 getbit&#xff08;获取Bitmaps中某个偏移量的值&#xff09; 2.4 bitcount&#xff…

Java I/O操作

引言 在Java编程中&#xff0c;输入和输出&#xff08;I/O&#xff09;操作是必不可少的部分。Java I/O通过一系列流&#xff08;Stream&#xff09;类和方法&#xff0c;支持文件操作、控制台输入输出、网络I/O等多种I/O操作。本文将详细介绍Java I/O的基础概念、文件操作、字…

vue实现类似微信按住发送语音给后端

一、需求是点击发送按钮说话获取语音文件发送给后台、鼠标移除即发送,限制时长30s 代码如下 <ttemplete><div class="bottom"><el-button type="primary" size="small" @mousedown.native="startRecord" @mouseup.n…