当前位置: 首页 > news >正文

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;

相关文章:

DNS 解析过程

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

Golang | Leetcode Golang题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; func generate(numRows int) [][]int {ans : make([][]int, numRows)for i : range ans {ans[i] make([]int, i1)ans[i][0] 1ans[i][i] 1for j : 1; j < i; j {ans[i][j] ans[i-1][j] ans[i-1][j-1]}}return ans }...

操作系统实验——线程与进程

如果代码或文章中&#xff0c;有什么错误或疑惑&#xff0c;欢迎交流沟通哦~ ## 进程与线程的区别 1. **各自定义**&#xff1a; 进程是操作系统进行资源分配和调度的一个独立单位&#xff0c;具有一定独立功能的程序关于某个数据集合的依次运行活动。 线程被称为轻量级的进程…...

最强端侧多模态模型MiniCPM-V 2.5,8B 参数,性能超越 GPT-4V 和 Gemini Pro

前言 近年来&#xff0c;人工智能领域掀起了一股大模型热潮&#xff0c;然而大模型的巨大参数量级和高昂的算力需求&#xff0c;限制了其在端侧设备上的应用。为了打破这一局限&#xff0c;面壁智能推出了 MiniCPM 模型家族&#xff0c;致力于打造高性能、低参数量的端侧模型。…...

Spring Boot中如何查询PGSQL分表后的数据

数据库用的pgsql&#xff0c;在表数据超过100w条的时候执行定时任务进行了分表&#xff0c;分表后表名命名为原的表名后面拼接时间&#xff0c;如原表名是card_device_trajectory_info&#xff0c;分表后拼接时间后得到card_device_trajectory_info_20240503&#xff0c;然后分…...

如何学习一个新技能

1. 提出想法 2.找到学习方法&#xff0c;学习路径 3.开始学 参考视频&#xff1a;如何成为超速学习者&#xff1f;快速学会任何新技能&#xff01;_哔哩哔哩_bilibili...

sklearn之logistic回归

文章目录 logistic回归logit logistic回归 logistic regression被称之为logistic回归&#xff0c;对于logistic这个单词来说&#xff0c;他本身的翻译其实不太容易&#xff0c;比较有名的译法是对数几率回归&#xff0c;我也认为这种译法是比较合适的&#xff0c;虽然并非logi…...

Warning: Each child in a list should have a unique “key“ prop.

问题描述&#xff1a; 使用ProTable的时候&#xff0c;报错如下 原因分析&#xff1a; 根据报错内容可以分析出&#xff0c;表格数据缺少唯一key&#xff0c; <PaginationTablecolumns{columns}pagination{{pageSize: 10,current: 1,showSizeChanger: true,showQuickJum…...

JavaSE:StringBuilder和StringBuffer类

1、引言 在上一篇文章中&#xff0c;我们理解了字符串的常用方法&#xff0c;细心的同学大概已经发现&#xff0c;不管是将字符串中的字符转变为大写或小写&#xff0c;或是完成字符串的替换&#xff0c;又或是去除空白字符等等&#xff0c;只要涉及到字符串的修改&#xff0c…...

C语言在线编程网站:探索编程的奥秘与深度

C语言在线编程网站&#xff1a;探索编程的奥秘与深度 在数字世界的浩瀚海洋中&#xff0c;编程已成为连接现实与虚拟的桥梁。而C语言&#xff0c;作为编程领域的经典之作&#xff0c;其深度与广度令无数探索者着迷。为了满足广大编程爱好者的需求&#xff0c;C语言在线编程网站…...

Android 之广播监听网络变化

网络状态变化监听帮助类 NetBroadcastReceiverHelper public class NetBroadcastReceiverHelper {private static final String TAG "NetBroadcastReceiverHelper";private static final String NET_CHANGE_ACTION "android.net.conn.CONNECTIVITY_CHANGE&qu…...

Hono 框架使用经验谈

Hono&#x1f525;是一个小型、快速并开源的 Serverless Web 框架&#xff0c;用 TypeScript 写就。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&#x…...

mac 下配置mysql的全局环境变量

前言 如果你还没有安装mysql&#xff0c;请参考这篇文章手把手教你MAC本地数据库的安装与使用&#xff1a;mysql python (pymysql)【一】 - 知乎 正文 1.打开终端&#xff0c;输入命令”echo $SHELL“,显示当前的shell ⚠️本人使用的终端shell是zsh&#xff0c;如果你使用…...

小红书云原生 Kafka 技术剖析:分层存储与弹性伸缩

面对 Kafka 规模快速增长带来的成本、效率和稳定性挑战时&#xff0c;小红书大数据存储团队采取云原生架构实践&#xff1a;通过引入冷热数据分层存储、容器化技术以及自研的负载均衡服务「Balance Control」&#xff0c;成功实现了集群存储成本的显著降低、分钟级的集群弹性迁…...

Python实现解码二进制数据以匹配给定的C++结构体

要在Python中实现解码二进制数据以匹配给定的C结构体Ytest&#xff0c;你需要了解每个字段在结构体中的偏移量&#xff08;由于结构体内存对齐&#xff0c;这些偏移量可能与字段的顺序和大小不完全对应&#xff09;。不过&#xff0c;在没有指定内存对齐的情况下&#xff0c;我…...

实施阶段(2024年5月)

【项目活动1】斐波拉契数列第n项的值&#xff1f; 数学思想&#xff1a;第一项和第二项的值都为1&#xff0c;从第三项开始值为前两项的和。 方法一&#xff1a;迭代 迭代变量&#xff1a;f1和f2 迭代表达式&#xff1a;f1,f2f2,f1f2 计数器&#xff1a;i 迭代表达式运算…...

(delphi11最新学习资料) Object Pascal 学习笔记---第13章第3节 (弱引用是系统托管的 )

13.4.2 弱引用是系统托管的 ​ 弱引用的托管是一个非常重要的内容。换句话说&#xff0c;系统会在内存中保存一个弱引用列表&#xff0c;当对象被销毁时&#xff0c;系统会检查是否有任何弱引用指向该对象&#xff0c;如果有&#xff0c;系统会将实际引用赋值为 nil&#xff0…...

安装WordPress

第 1 步&#xff1a;下载并解压 wget https://wordpress.org/latest.tar.gz 然后使用以下命令提取包&#xff1a; tar -xzvf latest.tar.gz 第 2 步&#xff1a;创建数据库 比如数据库名称为wordpress&#xff0c;编码格式为 utf8mb4_general_ci 第 3 步&#xff1a;设置wp-con…...

【STL库源码剖析】list 简单实现

从此音尘各悄然 春山如黛草如烟 目录 list 的结点设计 list 的迭代器 list 的部分框架 迭代器的实现 容量相关相关函数 实现 insert 在指定位置插入 val 实现 push_back 在尾部进行插入 实现 erase 在指定位置删除 实现 pop_back 在尾部进行删除 实现 list 的头插、头删 实现…...

web前端框架设计第十一课-常用插件

web前端框架设计第十一课-常用插件 一.预习笔记 1.路由的基础使用 2.动态路由 3.嵌套路由 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药&#xff0c;犹豫拖延将不断滋养恐惧...

Lingbot-Depth-Pretrain-ViTL-14 在AIGC领域的应用:为AI生成图像添加深度信息

Lingbot-Depth-Pretrain-ViTL-14 在AIGC领域的应用&#xff1a;为AI生成图像添加深度信息 最近在玩AI生成图片&#xff0c;大家是不是也遇到过这样的困惑&#xff1a;用Stable Diffusion、Midjourney这些工具生成了特别棒的二维画面&#xff0c;但总觉得少了点什么&#xff1f…...

深度学习模型可解释性详解:从原理到实践

深度学习模型可解释性详解&#xff1a;从原理到实践 1. 背景与动机 随着深度学习模型在各个领域的广泛应用&#xff0c;模型的可解释性变得越来越重要。深度学习模型通常被视为"黑盒"&#xff0c;其内部决策过程难以理解&#xff0c;这在医疗、金融、法律等关键领域应…...

ESP32Cam与YOLOv3构建边缘图像识别系统

1. 项目概述&#xff1a;ESP32CamYOLOv3图像识别系统这个项目构建了一个完整的嵌入式图像识别系统&#xff0c;核心由ESP32Cam模块和YOLOv3算法组成。作为一名长期从事嵌入式视觉开发的工程师&#xff0c;我认为这种组合是目前性价比最高的边缘计算视觉方案之一。ESP32Cam模块集…...

ESP32-CAM人脸识别从入门到实战:5步搞定考勤系统(附完整代码)

ESP32-CAM人脸识别考勤系统实战指南&#xff1a;低成本高精度部署方案 引言&#xff1a;重新定义考勤管理的技术革新 在传统考勤方式逐渐显露出效率瓶颈的今天&#xff0c;基于ESP32-CAM的人脸识别技术为中小企业和教育机构提供了一种革命性的解决方案。这套系统不仅突破了传统…...

PCB拼板工艺全解析:从设计到生产的核心要点

1. PCB拼板的核心价值与必要性PCB拼板是电子工程中一项看似简单却极为关键的工艺环节。作为一名从业十年的硬件工程师&#xff0c;我处理过上千款PCB设计&#xff0c;深刻体会到合理拼板对生产效率和成本控制的影响。简单来说&#xff0c;拼板就是将多块相同或不同的PCB按照特定…...

RimSort:重新定义RimWorld模组管理的智能工具

RimSort&#xff1a;重新定义RimWorld模组管理的智能工具 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 当你花费数小时手动调整上百个RimWorld模组的加载顺序&#xff0c;却依然遭遇游戏崩溃时&#xff1b;当你在多个平台间切换下载…...

官方定调:Token(词元)是智能时代“硬通货”,不懂它用AI要被淘汰!

文章介绍了Token&#xff08;词元&#xff09;的官方定义及其在智能时代的重要性。Token是AI处理和理解文本的基本单位&#xff0c;类似于AI的“母语”。文章解释了Token的来源和运作机制&#xff0c;特别是中文和英文Token计数的差异&#xff0c;以及如何计算文本的Token数量。…...

SSDTTime实战指南:从入门到精通的ACPI补丁工具应用

SSDTTime实战指南&#xff1a;从入门到精通的ACPI补丁工具应用 【免费下载链接】SSDTTime SSDT/DSDT hotpatch attempts. 项目地址: https://gitcode.com/gh_mirrors/ss/SSDTTime ACPI补丁工具SSDTTime是一款跨平台的开源解决方案&#xff0c;专为简化硬件兼容性补丁创建…...

springboot+vue基于web的线上文印店 校园打印店平台设计与实现

目录功能模块分析关键技术实现扩展功能建议数据模型示例&#xff08;简化的核心表&#xff09;部署架构项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块分析 后端&#xff08;SpringBoot&#xff09;功能模块 用户管理…...

零售行业自动化解决方案选型,核心看这几点:企业级智能体架构与落地实测分析

当前&#xff0c;零售行业正处于从“信息化”向“智能化”跨越的关键拐点。 面对全渠道运营的复杂性、劳动力成本的持续攀升以及消费者对交付时效的极致追求&#xff0c; 自动化解决方案已成为零售企业降本增效的核心战略工具。 然而&#xff0c;市场中各类技术路径分化严重&am…...