中科大计网学习记录笔记(九):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.mzph.cn/news/678978.shtml

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

相关文章

【MySQL】-18 MySQL综合-4(MySQL储存引擎精讲+MySQL数据类型简介+MySQL整数类型+MySQL小数类型)

MySQL储存引擎精讲MySQL数据类型简介MySQL整数类型MySQL小数类型 十一 MySQL存储引擎精讲11.1 什么是存储引擎11.2 MySQL 5.7 支持的存储引擎11.3 如何选择 MySQL 存储引擎11.4 MySQL 默认存储引擎 十二 MySQL数据类型简介12.1 MySQL 常见数据类型1) 整数类型2) 日期/时间类型3…

Python中的正则表达式(一)

在Python中,正则表达式是一种用于匹配和操作字符串的强大工具。正则表达式由一系列字符和特殊字符组成,用于定义搜索模式。 在Python中,我们使用内置的 re 模块来操作正则表达式。要使用正则表达式,我们首先需要导入 re 模块。 下…

飞天使-linux操作的一些技巧与知识点8-zabbix6.0 容器搭建

文章目录 安装docker安装步骤mysql下载镜像安装zabbix 使用zabbix非host模式创建 测试效果 安装docker 1. 配置官方 yum 源$ sudo yum install -y yum-utils $ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo2. 安装 Docker$ …

微服务入门篇:http客户端Feign(远程调用,自定义配置,Feign的性能优化,Feign服务抽取)

目录 1.基于Feign的远程调用1.RestTemplate方式调用存在的问题2.Feign的介绍3.定义和使用Feign客户端 2.自定义配置1.方式一:配置文件方式2.方式二: java代码方式,需要先声明一个Bean: 3.Feign的性能优化1.Feign底层的客户端实现2.连接池配置 4.Feign的最…

Open CASCADE学习|放样

在CAD(计算机辅助设计)建模中,放样是一种重要的技术,用于将二维图形或设计转化为三维模型。通过放样,设计师可以根据一系列二维剖面和一个或多个引导路径创建出复杂的三维形状。 CAD建模放样的基本步骤如下&#xff1…

2024.02.11作业

1.请使用递归实现n! #include <stdio.h> #include <stdlib.h> #include <string.h>int func(int n) {if (n 1){return 1;}return func(n - 1) * n; }int main() {int n 5;printf("%d\n", func(5));return 0; } 2.请使用递归实现0-n的和 #inclu…

【java基础题型】录入3位数,求每一位是?

\t 制表符&#xff0c;用于整到8个格子 Scanner类&#xff0c;导入Scanner包(1),代码里导入Scanner类写录入&#xff0c;调用录入的对象的方法 通用求个位数&#xff0c;%10即可&#xff0c;余数不会小于除数 package java录入3位数;import java.util.Scanner; …

【蓝桥杯Python】试题 算法训练 比较

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给出一个n长的数列&#xff0c;再进行m次询问&#xff0c;每次询问询问两个区间[L1,R1]&#xff0c;[L2,R2]&#xff0c;   …

中科大计网学习记录笔记(七):Web and HTTP

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

【计算机网络】协议层次及其服务模型

协议栈&#xff08;protocol stack&#xff09; 物理层链路层网络层运输层应用层我们自顶向下&#xff0c;所以从应用层开始探究应用层 协议 HTTP 提供了WEB文档的请求和传送SMTP 提供电子邮件报文的传输FTP 提供两个端系统之间的文件传输报文&#xff08;message&#xff09;是…

前端面试题——二叉树遍历

前言 二叉树遍历在各种算法和数据结构问题中都有广泛的应用&#xff0c;如二叉搜索树、表达式的树形表示、堆的实现等。同时也是前端面试中的常客&#xff0c;掌握好二叉树遍历算法对于一名合格的前端工程师来说至关重要。 概念 二叉树遍历&#xff08;Binary Tree Traversa…

Solidworks:平面工程图练习

把草图变成工程图&#xff0c;遇到第一个问题是线宽需要用鼠标选中后再设置线宽和颜色。我觉得应该有一个自动设置现款的功能&#xff0c;不知道有没有&#xff0c;我找了半天也没找到。 另一个问题是&#xff0c;作业代号字体上下颠倒了&#xff0c;不知道这是啥意思。 第三个…

springboot177健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

DevOps:CI、CD、CB、CT、CD

目录 一、软件开发流程演化快速回顾 &#xff08;一&#xff09;瀑布模型 &#xff08;二&#xff09;原型模型 &#xff08;三&#xff09;螺旋模型 &#xff08;四&#xff09;增量模型 &#xff08;五&#xff09;敏捷开发 &#xff08;六&#xff09;DevOps 二、走…

机器学习:过拟合和欠拟合的介绍与解决方法

过拟合和欠拟合的表现和解决方法。 其实除了欠拟合和过拟合&#xff0c;还有一种是适度拟合&#xff0c;适度拟合就是我们模型训练想要达到的状态&#xff0c;不过适度拟合这个词平时真的好少见。 过拟合 过拟合的表现 模型在训练集上的表现非常好&#xff0c;但是在测试集…

代码随想录刷题笔记 DAY 23 | 修剪二叉搜索树 No.669 | 将有序数组转换为二叉搜索树 No.108 | 把二叉搜索树转换为累加树 No.538

文章目录 Day 2301. 修剪二叉搜索树&#xff08;No. 669&#xff09;1.1 题目1.2 笔记1.3 代码 02. 将有序数组转换为二叉搜索树&#xff08;No. 108&#xff09;2.1 题目2.2 笔记2.3 代码 03. 把二叉搜索树转换为累加树&#xff08;No. 538&#xff09;3.1 题目3.2 笔记3.3 代…

Vue - 快速入门(一)

阅读文章可以收获&#xff1a; 1. 明白什么是vue 2. 如何创建一个vue实例 3. vue中的插值表达式如何使用 4. 如何安装vue的开发者工具 Vue 概念 什么是vue&#xff1f; Vue 是一个用于 构建用户界面 的 渐进式 框架 框架优点&#xff1a;大大提升开发效率 (70%↑) 缺点…

第80讲订单管理功能实现

后端 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.java1234.mapper.OrderM…

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas&#xff1a;数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一&#xff0c;提供了丰富的函数和工具&#xff0c;以便更轻松地处理和分析数据。在本文中&#xff0c;我们将深入探讨Pandas中一系列数据连接、合…

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断&#xff0c;其实就是基于时间分片的人眼最高能识别的帧数不超过30帧&#xff0c;电影的帧数差不多是在24浏览器的帧率一般来说是60帧&#xff0c;也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…