DNS域名查询过程

目录

DNS(Domain Names System)

域名转IP

IP转域名 

域名

域名查询流程

浏览器DNS缓存

操作系统缓存

本地host文件

完整流程

递归查询

迭代查询


DNS(Domain Names System)

域名系统,将域名和 IP 地址进行转换的服务器。

域名转IP

在命令行中通过nslookup + 域名可以查看域名解析到ip

也可以在Chrome浏览器中chrome://net-internals/?#dns去输入域名查看ip 

IP转域名 

 nslookup -qt=ptr ip地址,可以查看ip到域名的解析

域名

url链接由协议+主机+端口+路径组成,其中主机对应的部分为域名。域名组成是先写低级域名再写高级域名。

域名查询流程

1.查询浏览器的DNS缓存。(Chrome浏览器对每个域名会默认缓存60s,具体查看得通过网络日志查看)

浏览器DNS缓存

https://www.cnblogs.com/hls-code/p/17124489.html

2.查询操作系统DNS缓存

操作系统缓存

命令行中通过ipconfig/displaydns查看。

3.本地host文件

本地host文件

4.查询路由器DNS缓存(本地域名服务器)

5.迭代查询上级域名服务器,直到返回正确ip。

完整流程

1. 客户端发起一个DNS请求,先查看本地浏览器是否有这个域名的缓存,有解析结束
2. 没有则去看操作系统是否有缓存,有解析结束
3. 没有则去看本地host文件,有解析结束
4. 没有则发送该请求到本地DNS服务器,本地域名服务器采用递归查询自己的 DNS 缓存,如果本地DNS服务器存在则返回
5. 不存在本地DNS服务器则请求根域名服务器,比如请求"www.baidu.com",根域名服务器告诉本地DNS “.com” 顶级域名服务器的位置
6. 本地DNS服务器收到顶级域名服务器位置后则向顶级域名服务器请求"www.baidu.com"的IP地址,顶级域名服务器收到后则告诉本地DNS服务器"www.baidu.com"的权威域名服务器地址
7. 本地DNS服务器再向权威DNS服务器发起请求,权威DNS服务器查询后将对应的IP地址告诉本地DNS
8. 本地DNS服务器缓存该域名与对应IP然后返回IP给客户端
9. 浏览器根据TTL缓存该值

1-4为递归查询,5-7为迭代查询

递归查询

转发器将相应的查询结果返回至本地DNS服务器192.168.16.1,本地DNS服务器将查询结果返回至主机,最终得出http://qq.com的ns记录。因为本地DNS服务器不是http://qq.com的授权解析服务器,所以查询得出的结果是非权威应答。

  递归的意思是:只需要发出一次请求,就能得到相应的结果。比如主机-本地DNS、本地DNS-转发器,都是递归查询。

迭代查询

本地域名服务器(本机)发起请求向根域名服务器,根域名服务器告诉本地域名服务器继续应该向谁查询,直到找到

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模型 冰山理论

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。冰山下面才是重点。 1 冰山理论的应用 1.1 冰山理论在生活中的常见应用 人际交往:在人际交往中,很多人只关注表面的行为和语言,而忽略了内在的情感和动…

免费的云服务器推荐~三丰云

对于许多初创企业和小型公司来说,寻找一个经济实惠且可靠的云服务提供商是至关重要的。在这方面,三丰云以其免费虚拟主机和云服务器吸引了大量用户。 1. 注册与界面 注册三丰云的账户过程简单明了,只需按照步骤填写必要信息即可。其界面设计…

Unity之地形的构建

PS:公司没活干,好无聊偷偷摸鱼学Unity,害怕自己学完之后忘记,写下这一篇博客 先来看一下效果图:有山有水有树有草地 创建一个新的Unity3D项目 这里要用到Unity官方的免费资源包(现在好像已经下架了百度网盘…

Mybatis分页插件之PageHelper生效and失效原理解析

文章目录 前言整合PageHelperPageHelper生效原理PageHelper的分页参数和线程绑定核心拦截逻辑生成分页SQLdialect.afterAll() PageHelper失效原理分页失效案例分页失效原理总结 Mybatis拦截器系列文章:从零开始的 MyBatis 拦截器之旅:实战经验分享 构建自…

S32K312使用ITCM向FLASH代码区写入数据

使用C40_IP的系列方法向FLASH代码区写入数据时,程序会卡死在读取写操作的状态C40_Ip_MainInterfaceWriteStatus()这个方法中。本文主要介绍S32K312通过ITCM的方式,通过C40_IP的方法向FLASH代码区成功写入数据的方法和步骤。 首先,验证一下C4…

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

python大于等于小于等于,python大于等于怎么写

大家好,小编为大家解答python中大于等于且小于等于的问题。很多人还不知道python大于号小于号如何运用,现在让我们一起来看看吧! 大家好,小编来为大家解答以下问题,python中大于并小于一个数代码,python 大…

数据结构【线性表篇】(二)

数据结构【线性表篇】(二) 文章目录 数据结构【线性表篇】(二)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、单链表(一)、单链表的定义(二)、单链表的建立(三)、单链表的插入删除(四)、单链表的查找 二、主函…

springBoot2.3-基本介绍及入门案例

本次学习雷丰阳springBoot(2.3版本)。建议先修ssm 一、SpringBoot基本介绍 springBoot是当今最为流行的java开发框架。 1、springBoot的底层是spring, 因此继承了spring的粘合其他框架的能力。 2、本质上还是其他框架包括spring在工作 , springBoot起到一个整合其他…

LeetCode刷题--- 黄金矿工

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述…

基于SSM的学生信息管理系统

基于SSM的学生信息管理系统资源-CSDN文库 项目介绍 学生管理系统是我从自己学校的综合信息平台得到灵感,于是使用学习过的Spring、SpringMVC、Mybatis框架LayUI完成了这么一套系统。 项目整体难度不大,部署简单,界面友好,代码结…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览: 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个?扩展的可能? 什么是JSONPlaceho…

机器学习(一) -- 概述

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理 未完待续…… 目录 系列文章目录 前言 一、机器学习定义(是什么) 二、机器学习的应用(能做什么) 三、***机器…

ArkUI动画概述

目录 1、按照页面分类 2、按照功能分类 3、显示动画 4、属性动画 动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新&a…

图像分割实战-系列教程2:Unet系列算法(Unet、Unet++、Unet+++、网络架构、损失计算方法)

图像分割实战-系列教程 总目录 语义分割与实例分割概述 Unet系列算法 1、Unet网络 1.1 概述 整体结构:概述就是编码解码过程简单但是很实用,应用广起初是做医学方向,现在也是 虽然用的不是很多,在16年特别火,在医学…

GRNdb:解码不同人类和小鼠条件下的基因调控网络

GRNdb:解码不同人类和小鼠条件下的基因调控网络 摘要introduction数据收集和处理Single-cell and bulk RNA-seq data collection and processing 单细胞和bulk RNA-seq 数据收集和处理Cell cluster identification for scRNA-seq datasets (scRNA-seq 数…

在 Linux 中使用 cat 命令

cat 命令用于打印文本文件的文件内容。至少,大多数 Linux 用户都是这么做的,而且没有什么问题。 cat 实际上代表 “连接(concatenate)”,创建它是为了 合并文本文件。但只要有一个参数,它就会打印文件内容。因此,它是用…

vscode中默认shell选择

terminal.integrated.defaultProfile.linux在vs的Preference的Settings里面搜索terminal.integrated.defaultProfile.linux,默认的应该是null,将其修改为bash即可。 linux———/bin/sh、 /bin/bash、 /bin/dash的区别

[设计模式 Go实现] 创建型~抽象工厂模式

抽象工厂模式用于生成产品族的工厂,所生成的对象是有关联的。 如果抽象工厂退化成生成的对象无关联则成为工厂函数模式。 比如本例子中使用RDB和XML存储订单信息,抽象工厂分别能生成相关的主订单信息和订单详情信息。 如果业务逻辑中需要替换使用的时候…

基于JWT的用户token验证

1. 基于session的用户验证 2. 基于token的用户身份验证 3. jwt jwt代码实现方式 1. 导包 <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.2</version> </dependency> 2. 在登录…