首页 > 其他分享 >DNS协议 是什么?说说DNS 完整的查询过程?

DNS协议 是什么?说说DNS 完整的查询过程?

时间:2024-03-26 18:22:20浏览次数:18  
标签:缓存 IP 域名 查询 完整 DNS 地址 服务器

一、是什么

DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器

简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址

  • IP 地址:一长串能够唯一地标记网络上的计算机的数字
  • 域名:是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识

二、域名

域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名...

例如www.xxx.comwww为三级域名、xxx为二级域名、com为顶级域名,系统为用户做了兼容,域名末尾的根域名.一般不需要输入

在域名的每一层都会有一个域名服务器,如下图:

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

三、查询方式

DNS 查询的方式有两种:

  • 递归查询:如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案

  • 迭代查询:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求

四、域名缓存

在域名服务器解析的时候,使用缓存保存域名和IP地址的映射

计算机中DNS的记录也分成了两种缓存方式:

  • 浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗
  • 操作系统缓存:操作系统的缓存其实是用户自己配置的 hosts 文件

五、查询过程

解析域名的过程如下:

  • 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表

  • 若没有命中,则继续搜索操作系统的 DNS 缓存

  • 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的 DNS 缓存,查找成功则返回结果

  • 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询

    • 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
    • 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
    • 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来

  • 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起

  • 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起

流程如下图所示:

参考文献

  • https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
  • https://www.cnblogs.com/jmilkfan-fanguiju/p/12789677.html
  • https://segmentfault.com/a/1190000039039275
  • https://vue3js.cn/interview

标签:缓存,IP,域名,查询,完整,DNS,地址,服务器
From: https://www.cnblogs.com/smileZAZ/p/18097285

相关文章

  • 【图论 | 数据结构】用链式前向星存图(保姆级教程,详细图解+完整代码)
    一、概述链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表)。这种方法的优点是存储空间小,查询速度快,尤其适合于处理大规模......
  • 【IT老齐074】海量数据大页码MySQL查询
    【IT老齐074】海量数据大页码MySQL查询场景分页最后数据查询慢,添加索引,索引失效SELECT *FROM blog_browse_historyORDERBY create_time LIMIT500000, 10;查询优化利用索引覆盖特性查找第50000页的起始时间,基于索引快速定位,向后取10条数据SELECT *FROM......
  • niushop模型查询格式 以DB方式查询
     案例代码 逻辑层if(!empty($title)){$condition[]=['title','like','%'.$title.'%'];}$condition[]=['delete','=','0'];......
  • ISBN信息查询api接口
     基本说明:接口地址:http://data.isbn.work/openApi/getInfoByIsbn?isbn={isbn}&appKey={appkey}返回格式:json请求方式:get请求示例:http://data.isbn.work/openApi/getInfoByIsbn?isbn=9787513159074&appKey=ae1718d4587744b0b79f940fbef69e77伽薇 809137232请求参数说明:名......
  • python常用语句查询
    #!/usr/bin/python3#-*-coding:UTF-8-*-#注释'''多行三点注释'''"""多行注释"""ifTrue: print("true")else: print("false")a1=b1=c1=99d,e,f=1,2,"myname"a,b,c,d=......
  • SQL查询关键字执行顺序及记忆口诀
    一、一张图了解查询sql执行顺序二、SQL执行顺序口诀FOJWGHDSOL执行顺序看字母锁定键盘轴心区首先锚点FJ(FROM/JOIN)紧跟兄弟GH(GROUPBY/HAVING)再看姐妹DS(DISTINCT/SELECT)Last字母是L(LIMT)最为特殊OW(ON/ORDERBY/WHERE)O的排名在二八(ON/ORDERBY)字数越小越靠前W字母有......
  • 前端下载超大文件的完整方案
    本文从前端方面出发实现浏览器下载大文件的功能。不考虑网络异常、关闭网页等原因造成传输中断的情况。分片下载采用串行方式(并行下载需要对切片计算hash,比对hash,丢失重传,合并chunks的时候需要按顺序合并等,很麻烦。对传输速度有追求的,并且在带宽允许的情况下可以做并行分片下载)。......
  • 完整的logback-spring.xml配置文件
    <?xmlversion="1.0"encoding="UTF-8"?><!--日志级别从低到高分为TRACE<DEBUG<INFO<WARN<ERROR<FATAL,如果设置为WARN,则低于WARN的信息都不会输出--><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true--><!--scanPeriod:设置监......
  • 注册表 REG文件 将所有程序强制窗口化运行 指定查询 强制窗口化运行
    将所有程序强制窗口化运行:CopyCodeWindowsRegistryEditorVersion5.00[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags\Layers]"*"="~WINCOMPATLAYER=HIGHDPIAWARE"你可以复制上述内容并保存为.reg格式的文件,然后双击运行该文件,确......
  • Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城
    随着互联网的快速发展,越来越多的企业开始注重数字化转型,以提升自身的竞争力和运营效率。在这个背景下,鸿鹄云商SAAS云产品应运而生,为企业提供了一种简单、高效、安全的数字化解决方案。鸿鹄云商SAAS云产品是一种基于云计算的软件服务,旨在帮助企业实现业务流程的自动化和优化。......