中科大计网学习记录笔记(九):DNS

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容😊😊😊

文章目录

      • 2.5 DNS
        • 2.5.1 DNS 的必要性
        • 2.5.2 DNS 的实现思路与目的
        • 2.5.3 DNS 的域名解构
        • 2.5.4 DNS 的名字空间
        • 2.5.5 DNS 的工作过程
        • 2.5.6 DNS 协议报文
        • 2.5.7 如何新增一个域名?

2.5 DNS

💡 DNS(Domain Name System,域名系统)是互联网中用于将域名解析为与之对应的 IP 地址的分布式数据库系统。它实现了域名到 IP 地址的映射,为用户提供了便于记忆的域名访问方式,而不必记住复杂的 IP 地址。

2.5.1 DNS 的必要性

👉 IP 地址标识主机和路由器,但是 IP 地址的问题是 不好记忆,不便于人类的使用

  • 人类还是更倾向于用一个有意义的字符串来标识 Internet 上的设备。
  • 但访问还是要通过 IP 地址(通过 TCP 来通信),所以需要有一个应用能够将这个字符串转换为 IP 地址(域名 => IP 地址)

👉 问题 1:如何使用唯一的字符串去标示一个 IP 地址?

  • 使用层次化的命名方式

👉 问题 2:如何完成名字到 IP 地址的转换?

  • 全球范围内的服务导致访问量很大,且对速度有要求,需要分布式的数据库维护和响应名字查询

👉 问题 3:如何维护这些对应关系?增加或者删除域名的业务

2.5.2 DNS 的实现思路与目的

👉 DSN 的实现思路:

  1. 分词的、基于域的命名机制
  2. 若干分布式的数据库完成名字到 IP 地址的转换
  3. 运行在 UDP 之上端口为 53 的应用服务(无连接的)
  4. 核心的 Internet 功能,但以应用层的协议去实现

👉 DNS 的主要功能

  1. 域名解析: 将人类可读的域名(如example.com)解析为计算机可识别的IP地址(如192.0.2.1)。
  2. 逆向解析: 将IP地址解析为相应的域名。
  3. 负载均衡: 通过DNS解析将访问请求分发到多个服务器上,实现负载均衡,提高网站的性能和可用性。
  4. 邮件路由: 通过DNS解析确定邮件服务器的路由,将电子邮件发送到正确的目标邮箱。
  5. 安全防护: DNS可以实现一些安全功能,如阻止恶意网站、拦截垃圾邮件等。

💡 这里来提一下负载均衡,首先要知道,一个分布式的应用会有多个服务器

  • 也就对应着多个地址,而一个域名是可以绑定多个 IP 地址的
  • 当客户端向DNS服务器发起域名解析请求时,DNS服务器会返回多个IP地址中的一个给客户端,客户端随机选择一个IP地址进行连接。
2.5.3 DNS 的域名解构

💡 域名是用于在互联网上唯一标识主机或域的名称,它具有 层次结构,由多个部分组成,各部分之间用点号(.)分隔。

在DNS的域名解析过程中,域名被划分为多个层次,从右向左依次为:

  • 顶级域名(Top-Level Domain,TLD)
  • 二级域名(Second-Level Domain)、三级域名(Third-Level Domain)
  • 子域名(Subdomain)

顶级域名有上百个,这里举例一些常用的

  • 通用的(generic)
    • .com; .edu ; .gov ; .int ; .mil ; .net ; .org .firm ; .hsop ; .web ; .arts ; .rec ;
  • 国家的(countries)
    • .cn ; .us ; .nl ; .jp

每一级的域名会对应着一个或者多个域名服务器的地址,而顶级域名也对应着一个DNS根名字服务器

  • DNS 根名字服务器 是 DNS系统中的最高层次的域名服务器,负责管理顶级域名(Top-Level Domains,TLDs)的域名解析。
  • DNS系统的域名解析过程是 逐级向下 查询的,直到能够找到目标域名对应的IP地址为止。当客户端发送域名解析请求时,本地DNS服务器会按照域名的层次结构逐级查询,直到找到目标域名的IP地址或者查询失败为止。

域名的划分是逻辑上的划分而不是物理上的划分,同一个网络下的主机可能是属于不同的域名。

2.5.4 DNS 的名字空间

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
💡 DNS的命名空间(Namespace)是指 所有可能的域名构成的集合,它描述了整个DNS系统中所有可用的域名。DNS的命名空间是一个层次结构,类似于文件系统中的目录结构,其中每个域名都位于特定的层次,并且可以有任意数量的子域名。

👉 每个域去管理其下面的子域,创建一个新的子域需要向其所属域去申请

👉 域名服务器的解析:分布式的域名服务器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 在DNS(Domain Name System)中,Zone(区域)是指一组共享相同的域名空间的DNS记录集合
  • 每个区域都对应着一个域名,该域名及其子域名的解析信息都由该区域内的DNS服务器负责管理和存储。区域的概念使得管理员可以将特定的域名空间分配给不同的DNS服务器进行管理,从而实现域名解析服务的分布式和灵活配置。

👉 对于域名服务器的理解

  • 首先要清楚,不是每个域名去对应一个域名服务器,而是一个 zone 去对应一个域名服务器。

  • 域名服务器的缓存中存储着它的 zone 内的所有信息,当通过域名服务器去解析域名的时候如果缓存中没有找到对应关系会去数据库中查询,然后查询的结果加入 TTL 构成一个新的对象存储在 缓存 中。

  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    robot 虽然在 yale 下面,但其并不是在同一个 zone,这也就说明

    当一个域名在另一个域名之下时,它们可能属于不同的 zone。

    • 例如,域名 “example.com” 和 “sub.example.com” 可能由不同的域名服务器管理和提供。如果 “example.com” 和 “sub.example.com” 分别由两个不同的域名服务器管理,那么它们就属于不同的zone。

👉 一个域名服务器之下维护着的信息由以下部分构成

  1. 域名(Domain Name): 表示资源记录所属的域名,可以是相对域名(相对于当前域名)或绝对域名(完整的域名)。
  2. TTL(Time to Live): 表示资源记录的生存时间,即该记录在DNS缓存中的存活时间。TTL字段是一个32位的整数,以秒为单位,用于控制DNS缓存中的记录失效时间。
  3. 类别(Class): 表示资源记录的类别,通常为IN(Internet)表示因特网资源记录。
  4. 类型(Type): 表示资源记录的类型,包括主机地址记录(A记录)、别名记录(CNAME记录)、邮件交换记录(MX记录)、文本记录(TXT记录)等。

💡 其中比较重要的字段是 Type,它的值表示当前对象存储的值的类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


  • 比较难理解的是 NS 类型,还是这个例子,cs 在 yale 的子域,但是它们又是不同的 zone,也就对应着不同的域名服务器,这就需要知道它的域名和它的服务器的域名
  • 其次是别名,别名主要是做一个重定向的作用允许将一个域名映射到另一个域名,从而提供了灵活性和可扩展性。
    • 以下是需要使用别名的一些常见情况:
      • 简化管理和维护: 别名可以使系统管理员更轻松地管理和维护域名系统。当一个主机或服务的IP地址发生变化时,管理员只需更新相应的别名记录,而不需要修改所有引用该主机或服务的地方。
      • 负载均衡和容错: 别名可以用于实现负载均衡和容错策略。通过将多个主机或服务映射到同一个别名下,系统可以根据负载情况或故障情况自动地将请求分发到可用的主机或服务上。
      • 提供服务的透明性: 别名可以使服务的实际提供者对用户透明化。例如,一个网站可能使用不同的域名别名指向同一个服务器,这样用户可以通过多个不同的域名访问同一个网站,而不需要关心实际服务器的地址。
      • 简化重定向和转发: 别名可以用于简化重定向和转发的配置。通过将一个别名指向另一个别名或目标地址,可以实现更灵活和简洁的重定向和转发规则。
2.5.5 DNS 的工作过程

👉 发起查询: 客户端应用程序通过系统调用或DNS解析库向 本地DNS解析器 发送域名解析请求。如果本地DNS解析器已经缓存了该域名的解析结果,则直接返回缓存中的IP地址;否则,继续向下一步。

👉 本地DNS解析器查询: 如果本地DNS解析器不具有该域名的解析结果,它将向根域名服务器发送查询请求。根域名服务器负责管理顶级域名(TLD)的域名服务器的地址。

👉 根域名服务器响应: 根域名服务器收到查询请求后,会返回TLD域名服务器的地址给本地DNS解析器。

👉 TLD域名服务器查询: 本地DNS解析器接收到根域名服务器返回的TLD域名服务器的地址后,会向TLD域名服务器发送查询请求。TLD域名服务器负责管理顶级域名下的权威域名服务器的地址。

👉 权威域名服务器查询: 本地DNS解析器收到TLD域名服务器返回的权威域名服务器的地址后,会向权威域名服务器发送查询请求。权威域名服务器是负责管理特定域名的DNS记录的服务器。

👉 DNS记录查询: 权威域名服务器收到查询请求后,会检查自己的数据库,查找对应域名的DNS记录。如果找到了匹配的记录,则返回给本地DNS解析器;如果未找到匹配的记录,则返回“域名不存在”的错误。

👉 返回结果: 本地DNS解析器收到权威域名服务器返回的DNS记录后,会将解析结果缓存起来,并将解析结果返回给客户端应用程序。

👉 应用程序处理结果: 客户端应用程序收到DNS解析器返回的IP地址后,将使用该IP地址与目标服务器建立连接,从而完成域名解析过程。

💡 本地名字服务器(Local Name Server)

  • 本地名称服务器通常由 互联网服务提供商(ISP)网络管理员 在本地网络中设置。设置本地名称服务器可以提高域名解析的性能和效率,并且可以在本地缓存常用域名的解析结果,从而加速后续的域名解析过程。
  • 通常,ISP 会提供本地名字服务器的 IP 地址,或者可以选择使用公共DNS服务器,如Google DNS(8.8.8.8)或Cloudflare DNS(1.1.1.1)。
  • Windows 电脑输入 ipconfig /all 可以找到自己电脑的本地DNS服务器
    • 如果发现没有可能是计算机当前没有配置静态DNS服务器,而是使用了DHCP(动态主机配置协议)来获取IP配置,包括DNS服务器的IP地址。
2.5.6 DNS 协议报文

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过 flags 实现识别查询报文的类型

通过 ID 来实现流水线查询,查询的报文与返回的结果报文的 ID 相同,可以一次查询多条

2.5.7 如何新增一个域名?
  1. 选择并注册域名: 选择一个适合您的网站或业务的域名,并注册该域名。可以使用各种域名注册服务提供商进行注册。
  2. 选择域名托管服务提供商: 一旦您注册了域名,您需要选择一个域名托管服务提供商,以便托管您的域名的DNS记录。域名托管服务提供商将帮助您管理域名的DNS配置。
  3. 设置DNS记录: 登录您选择的域名托管服务提供商的管理控制面板,并添加必要的DNS记录。这可能包括A记录(将域名映射到IP地址)、CNAME记录(为域名设置别名)、MX记录(指定邮件服务器)等。根据您的需求,您可能还需要添加其他类型的记录。
  4. 配置Web服务器: 如果您要在新域名上托管网站,您需要配置Web服务器以响应该域名的请求。您需要将网站文件上传到服务器,并确保Web服务器配置正确,以便它知道如何处理来自新域名的请求。
  5. 等待DNS传播: 一旦您添加了DNS记录并对域名进行了配置,您需要等待DNS传播完成。这可能需要几小时甚至一天时间,具体时间取决于DNS记录的TTL(生存时间)设置和因特网上DNS服务器之间的同步速度。
  6. 测试和验证: 等待DNS传播完成后,您可以测试新域名是否正常工作。在浏览器中输入新域名并访问,确保网站能够正确加载。
  7. 维护和更新: 一旦您的域名正常工作,您可能需要定期更新和维护您的DNS记录和网站内容,以确保它们始终保持最新状态并正常运行。

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

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

相关文章

刘知远LLM——神经网络基础

文章目录 神经网络基础基本构成如何训练? Word2Vec例子负采样: 循环神经网络 RNN门控计算单元 GRU长短时记忆网络 LSTM遗忘门输入门输出门双向RNN卷积神经网络 CNNpytorch实战 神经网络基础 基本构成 全称:人工神经网络。启发于生物神经细胞…

【前端web入门第五天】02 盒子模型基础

文章目录: 1.盒子模型的组成 1.1盒子模型重要组成部分1.2 盒子模型-边框线1.3 盒子模型–内边距 1.3.1 盒子模型–内边距-多值写法 1.4 盒子模型–尺寸计算 1.5 盒子模型-版心居中 1.盒子模型的组成 不同组件之间的空白就是盒子模型的功劳 作用:布局网页,摆放盒子…

模型 PMF(产品市场契合度)

系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。产品与市场高度契合。 1 PMF(Product Market Fit)产品市场契合度 的应用 1.1 PMF在创业过程中的应用-Vincy公司的产品PartnerShare 实现PMF需要企业深入了解目标市场的需求和用户的反馈&…

【Java八股面试系列】并发编程-进程与线程

目录 进程 线程 线程和进程的区别 Java线程和操作系统的线程的区别 请简要描述一下进程和线程在Java中的关系,区别及优缺点?​编辑​编辑​编辑 并发和并行的区别 为什么要使用多线程? 线程的生命周期 什么是线程上下文切换? sleep() 方法和…

解决 postman测试接口报404 Not Found

JDK版本:jdk17 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 问题描述原因分析解决方案 问题描述 当我使用postman测试接口时,报了 404 Not Found 的错误,报错截图如下所示 但我的后端程序中已经定义了该接口,如下所示 …

1898_野火FreeRTOS教程阅读笔记_链表操作

1898_野火FreeRTOS教程阅读笔记_链表操作 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 新的节点的插入,影响到的是链表中最后一个元素的后继以及当前被插入元素的前驱、后继以及归属属性。具体的操作效果为:新的节点更新自己的前…

第78讲 修改密码

系统管理实现 修改密码实现 前端 modifyPassword.vue&#xff1a; <template><el-card><el-formref"formRef":model"form":rules"rules"label-width"150px"><el-form-item label"用户名&#xff1a;&quo…

8种基本类型的包装类(与String的转换)

java针对8种基本数据类型&#xff0c;定义了相应的引用类型&#xff1a;包装类(封装类)&#xff0c;有了类的特点&#xff0c;就能调用类中的方法&#xff0c;java才是真正的面向对象。 基本数据类型 包装类byte Byteshort Shortint Integerlong Longfloat Floa…

HarmonyOS 状态管理装饰器 Observed与ObjectLink 处理嵌套对象/对象数组 结构双向绑定

本文 我们还是来说 两个 harmonyos 状态管理的装饰器 Observed与ObjectLink 他们是用于 嵌套对象 或者 以对象类型为数组元素 的数据结构 做双向同步的 之前 我们说过的 state和link 都无法捕捉到 这两种数据内部结构的变化 这里 我们模拟一个类数据结构 class Person{name:…

SpringCloud-微服务概述、SpringCloud入门概述、服务提供与消费

1.学习前言 1.1 学习前提 熟练使用SpringBoot 微服务快速开发框架了解过Dubbo Zookeeper 分布式基础电脑配置内存不低于8G 1.2 文章大纲 Spring Cloud 五大组件 服务注册与发现——Netflix Eureka负载均衡&#xff1a; ​ 客户端负载均衡——Netflix Ribbon ​ 服务端负载…

分享88个表单按钮JS特效,总有一款适合您

分享88个表单按钮JS特效&#xff0c;总有一款适合您 88个表单按钮JS特效下载链接&#xff1a;https://pan.baidu.com/s/1v-qcl8bv2kxZ8a98Xo9UAg?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

Java学习第十一节之命令行传参和断更原因

package method;public class Demo03 {public static void main(String[] args) {//args.length数组长度for (int i 0; i < args.length; i) {System.out.println("args[" i "]:"args[i]);}}}为什么没更新了&#xff1f; 家里有长辈生病了不好在医院照…

FreeRTOS.chg脚本出现意外状态

PE代码生成的时候遇到这么个问题 警报如下 Description Resource Path Location Type ERROR: Unexpected status of script: Beans\FreeRTOS\FreeRTOS.chg, please contact Freescale support. M18_BMCU FreeRTOS Processor Expert Problem 意思就是这个脚本文件有问题&…

【ES6】模块化

nodejs遵循了CommonJs的模块化规范 导入 require() 导出 module.exports 模块化的好处&#xff1a; 模块化可以避免命名冲突的问题大家都遵循同样的模块化写代码&#xff0c;降低了沟通的成本&#xff0c;极大方便了各个模块之间的相互调用需要啥模块&#xff0c;调用就行 …

【复现】大华 DSS SQL 注入漏洞_46

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 大华DSS是大华的大型监控管理应用平台&#xff0c;支持几乎所有涉及监控等方面的操作&#xff0c;支持多级跨平台联网等操作。 可…

「数据结构」二叉搜索树1:实现BST

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;Java数据结构 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 实现BST &#x1f349;二叉搜索树的性质&#x1f349;实现二叉搜索树&#x1f34c;插入&#x1f34c;查找&#x1f34c;删除 &am…

Linux防火墙开放

记录一次问题 写的网络服务无法通信 代码没问题&#xff0c;IP绑定、端口绑定没问题&#xff0c;就是无法进行通信&#xff0c;这里要分2步走。 服务器控制台开放 进入防火墙 添加规则&#xff0c;这里以开放udp的8899端口为例 这里在服务器后台就已经开放了&#xff0c;但此时…

问题:3【单选题】实现职业理想的一般步骤是()。 #媒体#媒体

问题&#xff1a;3【单选题】实现职业理想的一般步骤是()。 A、创业-立业-择业 B、择业-创业-立业 C、择业-立业-创业 D、立业-择业-创业 参考答案如图所示

LeetCode.144. 二叉树的前序遍历

题目 144. 二叉树的前序遍历 分析 这道题目是比较基础的题目&#xff0c;我们首先要知道二叉树的前序遍历是什么&#xff1f; 就是【根 左 右】 的顺序&#xff0c;然后利用递归的思想&#xff0c;就可以得到这道题的答案&#xff0c;任何的递归都可以采用 栈 的结构来实现…

小兔鲜项目网页版

头部模块 <!-- 头部模块 --><header><!-- 快捷菜单模块 --><div class"xtx-shortcut"><!-- 版心的盒子 --><nav class"container"><ul class"fr"><li><a href"#">请先登录<…