DNS 解析过程

文章目录

  • 简介
  • 特点
  • 查询方式⚡️
    • 1. 浏览器缓存
    • 2. 系统缓存(hosts文件)
    • 3. 路由器缓存
    • 4. 本地域名服务器
    • 5. 根域名服务器
    • 6. 顶级域名服务器
    • 7. 权限域名服务器
    • 8. 本地域名服务器缓存并返回
    • 9. 操作系统缓存并返回
    • 10. 浏览器缓存并访问
    • 流程图
  • 总结

简介

DNS(Domain Names System),域名系统,是互联网一项服务,是将域名转换为IP地址。简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址。

  • IP 地址:一长串能够唯一地标记网络上的计算机的数字。

  • 域名:是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。

-在这里插入图片描述

域名

域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名…
在这里插入图片描述

例如 www.baidu.com

  • www 为三级域名
  • baidu 为二级域名
  • com 为顶级域名

系统为用户做了兼容,域名末尾的根域名.一般不需要输入

在域名的每一层都会有一个域名服务器

除此之外,还有电脑默认的本地域名服务器


特点

  • 分布式

    DNS信息存储在全球各地的DNS服务器上,没有中央控制点。

    这种分布式架构提高了系统的可靠性和容错性。

  • 层次化

    DNS系统采用层次化的结构,将域名划分为多个级别(如根域、顶级域、二级域等)。

    这种结构使得DNS系统易于管理和扩展。

  • 可扩展性

    DNS系统支持添加新的域名和服务,而无需对整个系统进行大规模的修改。

    此外,它还支持各种新的技术和协议(如IPv6和DNSSEC)。


查询方式⚡️

1. 浏览器缓存

当用户请求一个域名时,浏览器首先会在其缓存中查找对应的IP地址

如果有,就直接返回结果;如果没有,则继续下一步

2. 系统缓存(hosts文件)

操作系统中的hosts文件也包含了一些域名到IP地址的映射。浏览器会检查这个文件,看是否有对应的IP地址

如果有,就直接返回结果;如果没有,则继续下一步

3. 路由器缓存

有些路由器也会缓存DNS解析的结果。当数据包经过路由器时,路由器会检查其缓存,看是否有对应的IP地址

如果有,就直接返回结果;如果没有,则继续下一步

4. 本地域名服务器

本地域名服务器(通常是ISP运营商提供的DNS服务器,也可以是用户自己设置的DNS服务器)是DNS解析过程中的重要环节

当其他缓存都没有找到对应的IP地址时,浏览器会向本地域名服务器发送查询请求

本地域名服务器会采用递归查询的方式,依次向根域名服务器、顶级域名服务器和权限域名服务器查询,直到找到对应的IP地址

5. 根域名服务器

根域名服务器是DNS系统的最顶层,负责管理顶级域名服务器的信息

当本地域名服务器向根域名服务器查询时,根域名服务器不会直接返回IP地址,而是返回相应的顶级域名服务器的地址

本地域名服务器 => 根域名服务器

6. 顶级域名服务器

当本地域名服务器向顶级域名服务器查询时,顶级域名服务器会返回相应的权限域名服务器的地址

本地域名服务器 => 顶级域名服务器

7. 权限域名服务器

当本地域名服务器向权限域名服务器查询时,权限域名服务器会返回目标域名的IP地址

本地域名服务器 => 权限域名服务器 => 获得IP

8. 本地域名服务器缓存并返回

本地域名服务器将查询到的IP地址缓存并返回给操作系统。

本地域名服务器缓存IP => 操作系统

9. 操作系统缓存并返回

操作系统会将IP地址缓存在本地并将IP地址返回给浏览器

操作系统缓存IP => 浏览器

10. 浏览器缓存并访问

浏览器拿到这个IP地址后,会缓存并用这个IP地址访问目标网站。

浏览器缓存IP => 访问IP

流程图

在这里插入图片描述


总结

  1. 浏览器缓存中查找,如果没有则进行下一步;
  2. 系统缓存(本地的hosts文件)中查找,如果没有则进行下一步;
  3. 路由器缓存中查找,如果没有则进行下一步;
  4. 本地域名服务器中递归查找,如果没有则进行下一步;
  5. 根域名服务器中查找,返回顶级域名服务器的地址;
  6. 顶级域名服务器中查找,返回权限域名服务器的地址;
  7. 权限域名服务器中查找,返回目标IP地址;
  8. 本地域名服务器缓存IP并返回给操作系统;
  9. 操作系统缓存IP并返回给浏览器;
  10. 浏览器缓存IP并访问IP;

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

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

相关文章

springboot2+mybatis-plus+vue3创建入门小项目[学生管理系统]02[实战篇]

01学习篇 创建一个 vue 项目 创建这个新的文件夹 创建前端项目 eggbox 数据库 SQL CREATE DATABASE IF NOT EXISTS egg DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE egg;CREATE TABLE stu (id INT AUTO_INCREMENT, -- 自增主键name VARCHAR(64) NOT NULL, -- 非空…

如何使用前端表格控件实现多数据源整合?

前言 作为表格产品的典型应用场景之一,几乎所有的行业都会存在类 Excel 报表开发这样的应用场景,而在这些应用场景中,经常会遇见下面的这些痛点: 报表数据往往来自多个不同的数据源,需要报表系统能够同时连接多个数据源…

反VC情绪:加密市场需要新的分布式代币发行方式

GME事件 GME事件反应了社交媒体在金融决策中的影响力,散户投资者群体通过集体行动,改变了很多人对股市的看法和参与方式。 GME事件中,meme扮演了核心角色。散户投资者使用各种meme来沟通策略、激励持股行为,创造了一种反对华尔街…

5. MySQL运算符和函数

文章目录 【 1. 算术运算符 】【 2. 逻辑运算符 】2.1 逻辑非 (NOT 或者 !)2.2 逻辑与运算符 (AND 或者 &&)2.3 逻辑或 (OR 或者 ||)2.4 异或运算 (XOR) 【 3. 比较运算符 】3.1 等于 3.2 安全等于运算符 <>3.3 不等于运算符 (<> 或者 !)3.4 小于等于运算符…

AdroitFisherman模块安装日志(2024/5/31)

安装指令 pip install AdroitFisherman-0.0.29.tar.gz -v 安装条件 1:Microsoft Visual Studio Build Tools 2:python 3.10.x 显示输出 Using pip 24.0 from C:\Users\12952\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10) Processing c:\u…

QT加载CAD文件(二)LibreCAD源码编译

一、LibreCAD LibreCAD是一个开源软件&#xff0c;不用破解激活&#xff0c;可以打开编辑DXF格式的文档&#xff0c;软件大小只有二十多M&#xff0c;对于一些比较简单的图纸还是可以胜任的。本文主要讲该软件源码编译。如果了解软件的基本使用可以参考https://blog.csdn.net/…

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 目前&#xff0c;模型最全的网站是HuggingFace&#xff0c;但是国内需要魔法流量才能访问。另外&#xff0c;现在大模型权重文件都较大&#xff0c;也会浪费不少流量&#xff0c;因此这里推荐使用魔搭社区下…

一文学懂Base64编码原理

前言 Base64编码与ASCII编码一样&#xff0c;也是一种编码方式。不同的是ASCII码采用7位二进制数表示&#xff08;包括大小写字母、数字、标点符号和一些不可见字符&#xff09;&#xff0c;而Base64采用6位二进制数表示&#xff08;包括大小写字母、0~9数字、和/&#xff09;…

Java | Leetcode Java题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n triangle.size();int[] f new int[n];f[0] triangle.get(0).get(0);for (int i 1; i < n; i) {f[i] f[i - 1] triangle.get(i).get(i…

如何修改开源项目中发现的bug?

如何修改开源项目中发现的bug&#xff1f; 目录 如何修改开源项目中发现的bug&#xff1f;第一步&#xff1a;找到开源项目并建立分支第二步&#xff1a;克隆分支到本地仓库第三步&#xff1a;在本地对项目进行修改第四步&#xff1a;依次使用命令行进行操作注意&#xff1a;Gi…

闽盾杯 2021 DNS协议分析

今年CISCN的Tough DNS 的前戏就是DNS协议分析 直接可以查找到flag的base64形式Zmxh 发现就是请求的dnslog 携带的数据 过滤器就是 dns tshark -r dns.pcapng -T json -Y "dns" >1.json 字段选择 dns.qry.name tshark -r dns.pcapng -T json -Y "dns"…

Linux 编译安装python

以deepin操作系统安装Python3.8.10为例。 下载 python3.8.10 官网下载 Linux要下载源码&#xff0c;进行编译。 下图tarball即tar包&#xff0c;是压缩包的意思。python官网给出两种压缩格式的tarball&#xff0c;下载哪个都可以。 方式一&#xff1a;直接点击链接下载 方式…

如何评价GPT-4o?GPT-4o和ChatGPT4.0的区别是啥呢?

如何评价GPT-4o? GPT-4o代表了人工智能领域的一个重要里程碑&#xff0c;它不仅继承了GPT-4的强大智能&#xff0c;还在多模态交互方面取得了显著进步。以下是几个方面的分析&#xff1a; 技术特点 多模态交互能力&#xff1a;GPT-4o支持文本、音频和图像的任意组合输入与输出…

数据结构:希尔排序

文章目录 前言一、排序的概念及其运用二、常见排序算法的实现 1.插入排序2.希尔排序总结 前言 排序在生活中有许多实际的运用。以下是一些例子&#xff1a; 购物清单&#xff1a;当我们去超市购物时&#xff0c;通常会列出一份购物清单。将购物清单按照需要购买的顺序排序&…

[羊城杯 2021]BabySmc

运行就是输入flag 不知道怎么跳过去的 这个应该就是smc加密的函数了 运行完这个函数才能继续往下 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v3; // rbx__int64 v4; // r12__int64 v5; // r13unsigned __int64 v6; // raxchar v7; // spcha…

一分钟学习数据安全——自主管理身份SSI基本概念

之前我们已经介绍过数字身份的几种模式。其中&#xff0c;分布式数字身份模式逐渐普及演进的结果就是自主管理身份&#xff08;SSI&#xff0c;Self-Sovereign Identity&#xff09;。当一个人能够完全拥有和控制其数字身份&#xff0c;而无需依赖中心化机构&#xff0c;这就是…

【深度密码】神经网络算法在机器学习中的前沿探索

目录 &#x1f69d;前言 &#x1f68d;什么是机器学习 1. 基本概念 2. 类型 3. 关键算法 4. 应用领域 5. 工作流程 &#x1f68b;什么是神经网络 基本结构 &#x1f682;神经网络的工作原理 前向传播&#xff08;Forward Propagation&#xff09;&#xff1a; 损失函…

20240531在飞凌的OK3588-C开发板上跑原厂的Buildroot测试ETH0接口【仅供参考】

20240531在飞凌的OK3588-C开发板上跑原厂的Buildroot测试ETH0接口 2024/5/31 20:28 rootrk3588-buildroot:/# ifconfig eth0 up rootrk3588-buildroot:/# ifconfig eth1 up rootrk3588-buildroot:/# ifconfig rootrk3588-buildroot:/# rootrk3588-buildroot:/# ifconfig eth1…

Postgresql源码(134)优化器针对volatile函数的排序优化分析

相关 《Postgresql源码&#xff08;133&#xff09;优化器动态规划生成连接路径的实例分析》 上一篇对路径的生成进行了分析&#xff0c;通过make_one_rel最终拿到了一个带着路径的RelOptInfo。本篇针对带volatile函数的排序场景继续分析subquery_planner的后续流程。 subquer…

使用 Vue 3 和 vue-print-nb 插件实现复杂申请表的打印

文章目录 1&#xff1a;创建 Vue 3 项目2&#xff1a;安装 vue-print-nb 插件3&#xff1a;配置 vue-print-nb 插件4&#xff1a;创建一个复杂的申请表5&#xff1a;使用 ApplicationForm 组件6&#xff1a;运行项目 在开发管理系统或申请表打印功能时&#xff0c;打印功能是一…