6.4、域名系统 DNS

news2024/11/20 7:16:23

1、DNS的作用

如下所示,因特网中的某台主机要访问某台 Web 服务器

image-20230109195559845

只需在用户主机中运行某个游览器软件,在其地址栏中输入要访问的 Web 服务器的域名,并按下回车键即可访问到 Web 服务器所提供的内容


我们在用户主机中使用 ping 命令测试 Web 服务器的连通性

  • ping 的是服务器的域名

    ping 命令实际上 ping 的是 Web 服务器的 IP 地址

image-20230109195923438

也就是说即使不适用域名也可以通过 IP 地址来寻址目的主机

但域名与 IP 地址相比,便于记忆

  • 因此,对于大多数网络应用,一般使用域名来访问目的主机,而不是直接使用 IP 地址访问

简单来说,当我们在游览器地址栏中输入某个 Web 服务器的域名时

用户主机会首先在自己的 DNS 高速缓存中查找该域名所对应的 IP 地址

image-20230109201046338


如果没有找到,则会向网络中的某台 DNS 服务器查询

DNS 服务器中有域名和 IP 地址映射关系的数据库

DNS 服务器收到 DNS 查询报文后,在其数据库中进行查询,之后将查询结果发送给用户主机

现在用户主机的游览器可以通过 IP 地址对其进行访问了

image-20230109201213947


image-20230109201318115

尽管理论上是可以的,但在实践中这种做法并不可取

  • 因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。

早在 1983 1983 1983 年,因特网就开始采用 层次结构的命名树 \color{blue}层次结构的命名树 层次结构的命名树作为主机的名字(即域名),并使用 分布式的域名系统 \color{blue}分布式的域名系统 分布式的域名系统 DNS

DNS 使 大多数域名都在本地解析 \color{blue}大多数域名都在本地解析 大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。

由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。

2、因特网采用层次树状结构的域名结构

因特网采用 层次树状结构的域名结构 \color{red}层次树状结构的域名结构 层次树状结构的域名结构

域名的结构由若干个分量组成,各分量之间用 “点” 隔开,分别代表不同级别的域名。

image-20230109202213576

  • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。

  • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。

  • 整的域名不超过 255 255 255 个字符。

域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。

各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构 ICANN 进行管理。


例如:

  • cn 是顶级域名,表示中国

  • edu 是在其下注册的二级域名,表示教育机构

  • hnust 是在 edu 下注册的三级域名,表示湖南科技大学

  • nic 是该校自行管理的四级域名,表示网络信息中心

image-20230109202504143


2.1、顶级域名 TCL(Top Level Domain) (三类)

顶级域名 TLD (Top Level Domain)分为以下三类:

①国家顶级域名 nTLD

  • 采用 ISO 3166的规定。如 cn 表示中国,us 表示美国,uk 表示英国、等等。

②通用顶级域名 gTLD

  • 最常见的通用顶级域名有七个,
  • 即:com (公司企业)、net (网络服务机构)、org (非营利性组织)、int (国际组织)、edu(美国教育结构)、gov(美国政府部门)、 mil(美国军事部门)。

③反向域 arpa

  • 用于反向域名解析,即 IP 地址反向解析为域名。

2.2、二级域名

国家顶级域名下注册的二级域名均由该国家自行确定 \color{red}国家顶级域名下注册的二级域名均由该国家自行确定 国家顶级域名下注册的二级域名均由该国家自行确定

例如,顶级域名为 jp 的日本,将其教育和企业机构的二级域名定为 acco ,而不用 educom

我国 \color{red}我国 我国则将 二级域名 \color{red}二级域名 二级域名划分为以下 两类 \color{red}两类 两类:

类别域名

  • 共七个: ac(科研机构)、com (工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和 org(非营利性组织)。

行政区域名

  • 34 34 34 个,适用于我国的各省、自治区、直辖市。

    例如:bj 为北京市、sh 为上海市、js 为江苏省,等等。

需要注意:名称相同的域名其等级未必相同

  • 例如:com 是通用顶级域名,但我国顶级域名 cn 下也有一个名称为 com 的二级域名

2.3、因特网的域名空间

image-20230109203627059


3、域名服务器(四种类型)

域名和 IP 地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS 使用 分布在各地的域名服务器 \color{red}分布在各地的域名服务器 分布在各地的域名服务器来实现域名到 IP 地址的转换。

域名服务器可以划分为以下四种不同的类型:
根域名服务器

  • 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其 IP 地址。
  • 因特网上共有 13 13 13 个不同 IP 地址的根域名服务器。
  • 尽管我们将这 13 13 13 个根域名服务器中的每一个都视为单个的服务器,但“ 每台服务器” 实际上是由许多分布在世界各地的计算机构成的 服务器群集 \color{red}服务器群集 服务器群集
  • 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个 DNS 客户最近的一个根域名服务器。这就加快了 DNS 的查询过程,同时也更合理地利用了因特网的资源。
  • 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的 IP 地址。 \color{red}根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的\texttt{IP}地址。 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。

顶级域名服务器

  • 这些域名服务器负责 管理在该顶级域名服务器注册的所有二级域名 \color{red}管理在该顶级域名服务器注册的所有二级域名 管理在该顶级域名服务器注册的所有二级域名
  • 当收到 DNS 查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的 IP 地址)。

权限域名服务器

  • 这些域名服务器负责 管理某个区的域名 \color{red}管理某个区的域名 管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与 IP 地址的映射关系。
  • 另外,权限域名服务器还知道其下级域名服务器的地址。

本地域名服务器

  • 本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出 DNS 请求报文时,这个报文就首先被送往该主机的本地域名服务器。
  • 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中 \color{red}本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中
  • 每一个因特网服务提供者 ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为 默认域名服务器 \color{red}默认域名服务器 默认域名服务器
  • 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。
  • 本地域名服务器的 IP 地址需要直接配置在需要域名解析的主机中。

4、域名解析的过程

4.1、递归查询

image-20230109204718009

主机首先向其本地域名服务器进行递归查询

  • 本地域名查询收到递归查询的委托后,也采用递归查询的方式向某个根域名的服务器查询

当查询到域名所对应的 IP 地址后,查询结果会在之前受委托的各域名服务器之间传递

  • 最终传回给用户主机

image-20230109205016585

4.2、迭代查询

主机首先向其本地域名服务器进行递归查询

本地域名服务器采用迭代查询

  • 它先向根域名服务器查询

根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的 IP 地址

本地域名服务器向顶级域名服务器进行迭代查询

image-20230109205316068

5、高速缓存

为了提高 DNS 的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛地使用了 高速缓存 \color{red}高速缓存 高速缓存

  • 高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

若不久前已经有用户查询过域名为 y.abc.com \texttt{y.abc.com} y.abc.comIP 地址

  • 则本地域名服务器的告诉缓存中应该存有该域名对应的 IP 地址

当主机向本地域名服务器递归查询该域名时

  • 本地域名服务器就没有必要再想某个根域名服务器进行迭代查询了

    而是直接把高速缓存中存放的上次查询结果(即:该域名的 IP 地址)告诉用户主机

image-20230109205732363

由于域名到 IP 地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,

  • 域名服务器 应为每项内容设置计时器并删除超过合理时间的项 \color{red}应为每项内容设置计时器并删除超过合理时间的项 应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。

不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。

  • 许多用户主机在启动时从本地域名服务器下载域名和 IP 地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。

  • 同理,主机也需要保持高速缓存中内容的正确性。

6、习题

image-20230109205941763

image-20230109210102024

答案:A


image-20230109210111826

image-20230109210118867

image-20230109210528441

7、 小结

image-20230109210601478

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

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

相关文章

【小练】day1

day1 选择题 1. 以下for循环的执行次数是&#xff08;&#xff09;。 for(x0,y0;(y123)&&(x<4););A 是无限循环 B 循环次数不定 C 4 D 3 本题主要考察for for(初始化部分&#xff1b;条件判断部分&#xff1b;调整部分) 初始化部分只执行一次。 &&&a…

大数据分析案例-基于多元线性回归算法构建广告投放收益模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

走好这三步,不再掉进云上安全的沟里!

序言一直以来&#xff0c;公有云安全是横亘在广大用户面前的一道鸿沟。云安全&#xff08;Cloud Security&#xff09;是指用于控制云计算的安全性、合规性和其他使用风险的过程、机制和服务。公有云提供商们都强调安全是其最高优先级工作&#xff0c;动辄就发布上百页的云上安…

谁还没个技术呢~PYTHON制作观看软件

前言 大家早好、午好、晚好吖 ❤ ~ 以前没钱时&#xff0c;我是这样嘚&#xff1a; 朋友说好一生一起走&#xff0c;账号先借我来耍耍 现在没钱时&#xff0c;我是这样嘚&#xff1a; 涨价就涨价&#xff0c;怎么还搞搞限制账号登录这一出呢~ 这年头~谁还没点技术不是,看我…

复盘一下slam中常用的几种点云类型

使用livox雷达常涉及至少3种点云格式&#xff0c;一个是livox官方定义的custom格式&#xff0c;另外两个就是激光、视觉常用的pcl类型和ros类型。之前总结过Livox雷达驱动程序发布点云格式CustomMsg和pcl::PointXYZI、pcl::PointXYZINormal之间的关系&#xff0c;现在再来复盘一…

【TypeScript】TS进阶-泛型(八)

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;前端领域新星创作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff1a;vue3从入门到…

【Linux】工具使用

文章目录一、Linux 软件包管理器 yum二、 Linux开发工具&#xff08;1&#xff09; Linux编辑器-vim使用&#xff08;2&#xff09;简单vim配置三、Linux编译器-gcc/g使用四、动态库和静态库五、Linux调试器-gdb使用六、Linux项目自动化构建工具-make/Makefile(1)make/Makefile…

如何才能精通 Redis?

为什么我要讲 Redis&#xff1f; 已经出过这么多主题的书籍和课程了&#xff0c;这次我为什么要选择 Redis 这个主题呢&#xff1f; 那自然是因为 Redis 是我们实际开发中不可或缺的组件之一&#xff0c;也是目前全球最流行的 KV 数据库。相信小伙伴们在工作中也会频繁接触到…

【入门篇】2 # 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度

说明 【数据结构与算法之美】专栏学习笔记。 为什么引入这些时间复杂度 先看下面代码 // n 表示数组 array 的长度 int find(int[] array, int n, int x) {int i 0;int pos -1;for (; i < n; i) {if (array[i] x) {pos i;break;}}return pos; }上面代码中如果没有 …

Redis序列化和java存入Redis数据序列化反序列化总结

背景&#xff1a; 最近考虑java代码数据在保存redis时&#xff0c;通常要配置序列化&#xff0c;才能保存到redis中&#xff0c;然而我们知道Redis中也有序列化&#xff08;RDB和AoF两种形式&#xff09;&#xff0c;有点混淆总结一下。 java中数据保存redis过程序列化的原因是…

图解:什么是二叉查找树?

文章目录1. 二叉查找树的概念2. 二叉查找树的实现&#x1f351; 定义节点&#x1f351; 函数接口总览&#x1f351; 构造函数&#x1f351; 拷贝构造&#x1f351; 赋值重载&#x1f351; 析构函数&#x1f351; 查找操作&#x1f345; 动图演示&#x1f345; 非递归实现&#…

【机器学习】线性回归(实战)

线性回归&#xff08;实战&#xff09; 目录一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、构建实验所需的数据&#xff08;以下实验将基于此数据&#xff09;三、实现线性回归的两种方式方法一&#xff1a;通过直接求解得到拟合方程参数&…

Python金融风控模型案例实战大全

大家好&#xff0c;我是Toby老师&#xff0c;今天介绍 《Python金融风控模型案例实战大全》。 1.《Python金融风控模型案例实战大全》程覆盖多个核心知识点&#xff0c;包括风控建模全流程知识介绍&#xff0c;信用评分卡&#xff0c;信用评分卡知识包含个人信用评分卡和企业信…

ifconfig-显示和配置网络

ifconfig是linux中用于显示或配置网络设备&#xff08;网络接口卡&#xff09;的命令&#xff0c;英文全称是network interfaces configuring。配置网卡的IP地址语法例&#xff1a;ifconfig eth0 192.168.0.1 netmask 255.255.255.0 系统命令 语法 ifconfig [网络设备][down up…

读Go语言精进之路

主要是摘取书中&#xff0c;个人感觉比较重要的内容。 文章目录第一部分 熟知Go的一切理解Go的设计哲学使用Go语言原生编程思维写Go代码第二部分 项目结构、代码风格和标识符命名第三部分 声明、类型、语句与控制结构13 了解切片的底层原理14 了解Map实现原理并高效使用15. str…

Word处理控件Aspose.Words功能演示:在 C# .NET 中将 DOC/DOCX 转换为 PNG

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

Linux系统中常见的压缩命令和特殊权限说明

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

PHP多进程(二)之pcntl_wait

上篇文章我们说到父进程应该回收子进程结束之后产生的数据,这样才会不浪费系统资源。 一个程序启动之后&#xff0c;变成了一个进程&#xff0c;进程在以下情况会退出 1&#xff09;运行到最后一行语句 2) 运行时遇到return 时 3) 运行时遇到exit()函数的时候 4) 程序异常的时…

docker搭建maven私服(nexus3),整合springboot上传下载依赖

一、前言 我们在JavaWeb开发中必不可少的就是jar包管理-maven&#xff0c;在没有maven之前&#xff0c;都是自己手动下载jar包导入到项目中&#xff0c;非常的繁琐。 maven出现之后&#xff0c;又迎来新的问题&#xff0c;对于仓库里人家发布的都可以引用下载&#xff0c;但是…

音视频面试基础题

编码原理 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息&#xff1a; 1&#xff09;空间冗余&#xff1a;图像相邻像素之间有较强的相关性 2&#xff09;时间冗余&#xff1a;视频序列的相邻图像之间内容相似 3&#xff09…