【HarmonyOs学习日志(14)】计算机网络之域名系统DNS

news/2024/12/24 3:10:58 标签: 学习, 计算机网络

域名系统DNS

域名系统DNS——从域名解析出IP地址

文章目录

    • 域名系统DNS
      • 概述
        • 域名到IP地址的解析
      • 互联网的域名结构
        • 命名标准
      • 域名服务器
        • 域名的解析过程

概述

域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

互联网的域名系统DNS被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机出了故障了,也不会妨碍整个DNS系统的正常运行。

域名到IP地址的解析

域名到IP地址的解析是由分布在互连网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的节点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器

解析要点如下:

  • 当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户。
  • 该进程把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。
  • 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信

。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

互联网的域名结构

互联网采用层次树状结构的命名方法,采用这种命名方法,任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构的名字,即域名(domain name)。这里,是名字空间中一个可被管理的划分。

域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。

从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开(请注意,这里所说的“点”是英语中的句号“.“)

在这里插入图片描述

其中com是顶级域名,cctv是二级域名,标号mail是三级域名。

命名标准
  • 域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符(为了记忆方便,最好不要超过12个字符)
  • 不区分大小写字母
  • 标号中除连字符(-)外不能使用其他的标点符号。
  • 级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。
  • 有多个标号组成的完整域名总共不超过255个字符。

DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围是唯一的,并且也容易设计出一种查找域名的机制。

需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。

在顶级域名中则分为:国家顶级域名,通用顶级域名,反向域名

国家顶级域名中国:cn, 美国:us,英国uk…
通用顶级域名com公司企业,edu教育机构,gov政府部门,int国际组织,mil军事部门 ,net网络,org非盈利组织…
反向域名arpa,用于PTR查询(IP地址转换为域名)

用域名树来表示互连网的域名系统是最清楚的,如图

在这里插入图片描述

在最上面的是,但没有对应的名字。根下面一级的节点就是最高一级的顶级域名。顶级域名往下可划分子域(依次向下划分)。域名树的树叶就是单台计算机的名字,它不能再继续往下划分子域了。

域名服务器

具体实现域名系统则是使用分布在各地的域名服务器。

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

区是DNS服务器实际管辖的范围。区可能等于或小于域,但一定不能大于域。(区是域的子集)

在这里插入图片描述

在这里插入图片描述

如图中每一个域名服务器都能够进行部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,他就设法找互联网上别的域名服务器进行解析。同时不难看出,互联网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型:

  • 根域名服务器:根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。
  • 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
  • 权限域名服务器:负责一个区的域名服务器。
  • 本地域名服务器:本地域名服务器并不属于如上图所示的域名服务器层次结构,但它对域名系统非常重要。

注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为 区域 (Zone)
关于分层, 需要注意的是:

  • 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
  • 每一级域名服务器都知道下级域名服务器的IP地址
  • 为了容灾, 每一级至少设置两个或以上的域名服务器
域名的解析过程
  1. 客户端发起请求:当用户在浏览器中输入域名时,客户端(如电脑、手机等)会向本地 DNS 服务器发送查询请求,请求解析该域名对应的 IP 地址。
  2. 本地 DNS 缓存查询:本地 DNS 服务器首先会检查自身的缓存,看是否已经有该域名的缓存记录。如果有,直接返回对应的 IP 地址,解析过程结束。
  3. 本地 DNS 服务器查询:如果本地 DNS 服务器缓存中没有该域名的记录,它会向根 DNS 服务器发送查询请求。
  4. 根 DNS 服务器响应:根 DNS 服务器收到请求后,会告知本地 DNS 服务器负责该域名顶级域名(如.com、.org 等)的权威 DNS 服务器的地址。
  5. 查询顶级域名服务器:本地 DNS 服务器根据根 DNS 服务器提供的地址,向对应的顶级域名服务器发送查询请求。
  6. 顶级域名服务器响应:顶级域名服务器会告知本地 DNS 服务器负责该域名二级域名(如 example.com 中的 example)的权威 DNS 服务器的地址。
  7. 查询权威 DNS 服务器:本地 DNS 服务器继续向二级域名的权威 DNS 服务器发送查询请求。
  8. 权威 DNS 服务器响应:权威 DNS 服务器查询到该域名对应的 IP 地址后,将其返回给本地 DNS 服务器。
  9. 本地 DNS 服务器缓存并响应:本地 DNS 服务器将查询到的 IP 地址缓存起来,并返回给客户端。
  10. 客户端与目标服务器通信:客户端获得 IP 地址后,就可以使用该 IP 地址与目标服务器进行通信。

http://www.niftyadmin.cn/n/5797254.html

相关文章

Qt中的QProcess与Boost.Interprocess:实现多进程编程

目录 QProcess简介 启动进程的不同方式 例子1:打开记事本程序 例子2:执行带有管道(|)的Linux命令 同步进程API Boost.Interprocess简介 (一)共享内存: (二)命名信…

kubernates实战

使用k8s来部署tomcat 1、创建一个部署,并指定镜像地址 kubectl create deployment tomcat6 --imagetomcat:6.0.53-jre82、查看部署pod状态 kubectl get pods # 获取default名称空间下的pods kubectl get pods --all-namespaces # 获取所有名称空间下的pods kubect…

【网络】超以太网联盟 UEC|下一代 “RoCE” 协议--编辑中

术语 UEC: 超级以太联盟 UET: 超级以太传输协议 Tail latency: 尾部延迟,(以通信阶段最后一条消息的到达时间为衡量标准)是系统性能的关键指标。 未来 AI 和 HPC 网络的关键需求 为了实现低尾延迟,UEC 规范通过满足下一代应用…

HarmonyOS 实践 - 设计模式在代码中的作用

文章目录 前言设计模式概述单例模式:全局状态管理代码分析 策略模式:界面主题切换代码分析 示例测试单例模式测试策略模式测试 体验评价总结 前言 在软件开发中,设计模式是公认的最佳实践,它能帮助开发者通过模块化和规范化的代码…

【Mybatis-Plus】连表查询 逻辑删除 多租户

文章目录 连表查询逻辑删除多租户 连表查询 引入 mybatis-plus-join-boot-starter 依赖 <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><version>1.5.1</version>…

VSCode 中 Git 功能比较:内置 Git、GitLens 与 Git History 插件

在软件开发领域&#xff0c;版本控制是维护代码变更的重要工具。Git 作为最流行的版本控制系统&#xff0c;被广泛集成在各种代码编辑器中。Visual Studio Code&#xff08;VSCode&#xff09;不仅内置了 Git 支持&#xff0c;还提供了丰富的扩展来增强 Git 功能。本文将对比 V…

SQL 使用带聚集函数的联结

聚集函数用于汇总数据&#xff0c;通常用于从一个表中计算统计信息&#xff0c;但也可以与联结一起使用。以下是一个例子&#xff0c;展示如何使用聚集函数统计每个顾客的订单数。 示例 1&#xff1a;使用 COUNT() 函数与 INNER JOIN 假设我们需要检索所有顾客及每个顾客所下…

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用&#xff0c;今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机&#xff08;SVM&#xff09;是一种监督学习算法&#xff0c;广泛用于分类和回归问题。 它的核心思想是通过…