中科大计网学习记录笔记(九):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://www.hqwc.cn/news/464660.html

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

相关文章

华为云ModelBox实战:体感小游戏应用实操

目录 一、VsCode插件注册ModelBox设备二、Windows SDK安装1.安装Git for Windows2.下载ModelBox SDK3.相关插件安装 三、体感小游戏应用开发1.技能模板使用2.AI应用示例3.体感小游戏体验 参与华为云活动【HCSD】ModelBox实战营邀请活动,呼朋唤友学AIoT,完…

视频直播系统架构的设计与实现

视频直播系统作为一种实时性强、用户互动性高的应用,其架构设计至关重要。本文将介绍如何设计和实现一个稳定、高性能的直播系统架构,以提供良好的用户体验和可靠的服务。 1. 系统架构概述 - 介绍视频直播系统的整体架构,包括客户端、服务…

Linux操作系统基础(九):Linux用户与权限

文章目录 Linux用户与权限 一、文件权限概述 二、终端命令:组管理 三、终端命令:用户管理 1、创建用户 、 设置密码 、删除用户 2、查看用户信息 3、su切换用户 4、sudo 4.1、给指定用户授予权限 4.2、使用 用户 zhangsan登录, 操作管理员命令…

腾讯云4核8G服务器多少钱一年?

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,标准型SA2服务器1444.8元一年,轻量应用服务器4核8G12M带宽一…

Python爬虫——请求库安装

目录 1.打开Anaconda Prompt 创建环境2.安装resuests3.验证是否安装成功4.安装Selenium5.安装ChromeDriver5.1获取chrom的版本5.1.1点击浏览器右上三个点5.1.2点击设置5.1.3下拉菜单,点击最后关于Chrome,获得其版本 5.2 打开网址 [chromedriver](https:/…

yolo层数连接

head [-1,6]连接的是第六层 [-1,4连接的是第四层

「C++ 类和对象篇 11」explicit关键字

目录 〇、构造函数还具有类型转换的作用 一、explicit关键字是什么? 二、为什么需要explicit关键字? 三、怎么使用explicit关键字? 【总结】 〇、构造函数还具有类型转换的作用 构造函数不仅可以构造与初始化对象,对于只有一个参…

微信小程序(四十)API的封装与调用

注释很详细,直接上代码 上一篇 新增内容: 1.在单独的js文件中写js接口 2.以注册为全局wx的方式调用接口 源码: utils/testAPI.js const testAPI{/*** * param {*} title */simpleToast(title提示){//可传参,默认为‘提示’wx.sho…

精读《js 模块化发展》

1 引言 如今,Javascript 模块化规范非常方便、自然,但这个新规范仅执行了 2 年,就在 4 年前,js 的模块化还停留在运行时支持,10 年前,通过后端模版定义、注释定义模块依赖。对经历过来的人来说,…

专业135+总400+中国科学院大学859国科大信号与系统考研经验电子信息与通信,真题,大纲,参考书

今年考研专业课859信号与系统135,总分400上岸国科大,总结一下自己这一年的复习经验,希望对后面报考中科院大学的同学有所帮助。 专业课: 国科大不同研究所都是统一命题,859信号与系统的参考书目是郑君里的《信号与系…

网课:数独挑战——牛客(题解与疑问)

涉及知识点:打表 题目描述 数独是一种填数字游戏,英文名叫 Sudoku,起源于瑞士,上世纪 70 年代由美国一家数学逻辑游戏杂志首先发表,名为 Number Place,后在日本流行,1984 年将 Sudoku 命名为…

【深度学习】:实验6布置,图像自然语言描述生成(让计算机“看图说话”)

清华大学驭风计划 因为篇幅原因实验答案分开上传,深度学习专栏持续更新中,期待的小伙伴敬请关注 实验答案链接http://t.csdnimg.cn/bA48U 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~ 案例 6 :图像自…