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

news2024/12/28 4:19:02

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第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://www.coloradmin.cn/o/1445107.html

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

相关文章

linux系统下vscode portable版本的c++/Cmake环境搭建002:使用 VSIX 安装VSCODE插件(暂记)

使用 VSIX 安装VSCODE插件 在 Visual Studio Code (VSCode) 中,你可以通过以下步骤离线安装插件: 获取插件的 VSIX 文件: 在一个联网环境中,访问 Visual Studio Code Marketplace,搜索并找到你想要的插件。 比如&am…

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

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

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探:认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) 🌵文章目录🌵 🌳引言🌳🌳一、数据可视化简介🌳🌳二、Matplotlib库简介&#x…

synchronized关键字以及底层实现

目录 基本使用 底层实现 synchronized锁升级 对象的内存结构 ⅰ. 对象头 1. ① 运行时元数据 (Mark Word) (占64位) a. 哈希值 (HashCode) b. GC分代年龄 c. 锁状态标记 2. ② 类型指针: (Klass Point) (占 32位) ⅱ. 实例数据 ⅲ. 对齐填充 Moniter重量级锁 轻量…

PgSQL内核特性 - push-based pipeline 执行引擎

PgSQL内核特性 - push-based pipeline 执行引擎 数据库的SQL执行引擎负责处理和执行SQL请求。通常情况下,查询优化器会输出物理执行计划,一般由一系列的算子组成。当前,有两种算子流水线构建方式:1)需求驱动的流水线&a…

板块一 Servlet编程:第二节 Servlet的实现与生命周期 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程:第二节 Servlet的实现与生命周期 一、Servlet相关概念Serlvet的本质 二、中Web项目中实现Servlet规范(1)在普通的Java类中继承HttpServlet类(2)重写service方法编辑项目对外访问路径 二、Servlet工…

算法-4-归并排序

归并排序 public class Code01_MergeSort {// 递归方法实现public static void mergeSort1(int[] arr) {if (arr null || arr.length < 2) {return;}process(arr, 0, arr.length - 1);}// 请把arr[L..R]排有序// l...r N// T(N) 2 * T(N / 2) O(N)// O(N * logN)public …

MATLAB环境下一维时间序列信号的同步压缩小波包变换

时频分析相较于目前的时域、频域信号处理方法在分析时变信号方面&#xff0c;其主要优势在于可以同时提供时域和频域等多域信号信息&#xff0c;并清晰的刻画了频率随时间的变化规律&#xff0c;已被广泛用于医学工程、地震、雷达、生物及机械等领域。 线性时频分析方法是将信…

【知识整理】接手新技术团队、管理团队

引言 针对目前公司三大技术中心的不断升级&#xff0c;技术管理岗位要求越来越高&#xff0c;且团队人员特别是管理岗位的选择任命更是重中之重&#xff0c;下面针对接手新的技术团队做简要整理&#xff1b; 一、实践操作 1、前期准备 1、熟悉情况&#xff1a; 熟悉人员&am…

VTK 三维场景的基本要素(相机) vtkCamera

观众的眼睛好比三维渲染场景中的相机&#xff0c;在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕&#xff0c;相机投影示意图如下图所示。 1.与相机投影相关的要素主要有如下几个&#xff1a; 1&#xff09;相机位置: 相机所处的位置…

锐捷(十九)锐捷设备的接入安全

1、PC1的IP地址和mac地址做全局静态ARP绑定; 全局下&#xff1a;address-bind 192.168.1.1 mac&#xff08;pc1&#xff09; G0/2:ip verify source port-securityarp-check 2、PC2的IP地址和MAC地址做全局IPMAC绑定&#xff1a; Address-bind 192.168.1.2 0050.7966.6807Ad…

立体视觉几何 (三)

立体视觉系统概述 误差分析 考虑对应于深度 Z 的视差 d 的匹配对。我们想要评估 ΔZ&#xff0c;即视差误差引起的深度误差。将 Z 对 d 求导&#xff0c;得到&#xff1a; 立体视觉中基线&#xff08;baseline&#xff09;、焦距&#xff08;focal length&#xff09;和立体重…

【数据结构】11 堆栈(顺序存储和链式存储)

定义 可认为是具有一定约束的线性表&#xff0c;插入和删除操作都在一个称为栈顶的端点位置。也叫后入先出表&#xff08;LIFO&#xff09; 类型名称&#xff1a;堆栈&#xff08;STACK&#xff09; 数据对象集&#xff1a; 一个有0个或者多个元素的有穷线性表。 操作集&#…

Failed to parse multipart servlet request; nested exception is java.io.IOException,文件上传异常的问题如何解决

背景:有时候我们上传文件时会遇到这种报错,"Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\\Users\\XXXX\\AppData\\Local\\Temp\\tomcat.2460390372185321891.8082\\work\\Tomcat\\localho…

EXCEL函数学习之FREQUENCY函数

如下图&#xff0c;要统计各分数段的人数。 同时选中E2:E6&#xff0c;输入以下公式&#xff0c;按住ShiftCtrl不放&#xff0c;按回车。 FREQUENCY(B2:B11,D2:D5) FREQUENCY函数计算数值在某个区域内的出现频次&#xff0c;这个函数的用法为&#xff1a; FREQUENCY(要统计的…

grab,一个强大的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个强大的 Python 库 - grab。 Github地址&#xff1a;https://github.com/lorien/grab Python Grab 是一个功能强大的 Web 抓取框架&#xff0c;它提供了丰富的功能和灵活的接口&#xff0c;使得…

寒假思维训练day20

更新一道1600的反向贪心 题意&#xff1a; 有n场比赛&#xff0c;且小明的智商是m&#xff0c;每场比赛需要的智商是,当时, 可以直接看题&#xff0c;当时&#xff0c;需要智商m减1才能看这道题&#xff0c;当智商为0不能继续往下看题&#xff0c;问最多能看多少题 题解&#x…

《UE5_C++多人TPS完整教程》学习笔记9 ——《P10 创建会话(Creating A Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P10 创建会话&#xff08;Creating A Session&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…

C++学习笔记 | 基于Qt框架开发实时成绩显示排序系统1

目标&#xff1a;旨在开发一个用户友好的软件工具&#xff0c;用于协助用户基于输入对象的成绩数据进行排序。该工具的特色在于&#xff0c;新输入的数据将以红色高亮显示&#xff0c;从而直观地展现出排序过程中数据变化的每一个步骤。 结果展示&#xff1a; 本程序是一个基于…

2024刘谦春晚第二个扑克牌魔术

前言 就是刚才看春晚感觉这个很神奇&#xff0c;虽然第一个咱模仿不过来&#xff0c;第二个全国人民这么多人&#xff0c;包括全场观众都有成功&#xff0c;这肯定是不需要什么技术&#xff0c;那我觉得这个肯定就是数学了&#xff0c;于是我就胡乱分析一通。 正文 首先准备…