面试被虐,是时候搞懂DNS了

网络知识扫盲,一文搞懂 DNS 在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象。 而网络知识,通常是很抽象,不容易理解的,有很多同学就在这里裁了跟头。为了更好地通过面试,本文讲进行一次网络知识大扫盲,聊一聊网络知识最基本的DNS。 网络知识扫盲,一文搞懂 DNS DNS 是什么? DNS是 Domain Name System 的缩写,也就是 域名解析系统,它的作用非常简单,就是根据域名查出对应的 IP地址。 你可以把它想象成一本巨大的电话本,比如当你要访问域名www.163. 阅读详情

👦🏻:“浏览器从输入URL到显示页面发生了什么?”

👧🏻:%^&@#^&(这我怎么可能没有准备?从网络到渲染说了一通后)

👦🏻:“你刚刚提到了 DNS,那说说 DNS 的查询过程吧”

👧🏻:“DNS 查询是一个递归 + 迭代的过程...”

👦🏻:“那具体的递归和迭代过程是怎样的呢?”

👧🏻:“...”

我直接哑口无言,所以是时候搞懂DNS了

    • 什么是DNS

dns即域名系统,当我们在浏览器中输入一个url时,浏览器要向这个URL的主机名对应的服务器发送请求,就得知道URL对应服务器的IP,对于浏览器而言DNS的作用就是将主机名转换成IP地址。

DNS 是:

  1. 一个由分层的 DNS 服务器实现的分布式数据库

  1. 一个使得主机能够查询分布式数据库的应用层协议

也就是,DNS 是一个应用层协议,我们发送一个请求,其中包含我们要查询的主机名,它就会给我们返回这个主机名对应的 IP;

其次,DNS 是一个分布式数据库,整个 DNS 系统由分散在世界各地的很多台 DNS 服务器组成,每台 DNS 服务器上都保存了一些数据,这些数据可以让我们最终查到主机名对应的 IP。

所以 DNS 的查询过程,说白了,就是去向这些 DNS 服务器询问,你知道这个主机名的 IP 是多少吗,不知道?那你知道去哪台 DNS 服务器上可以查到吗?直到查到我想要的 IP 为止。

分层式、层次数据库
什么是分布式?

这个世界上没有一台 DNS 服务器拥有因特网上所有主机的映射,每台 DNS 只负责部分映射。

什么是层次?

DNS 服务器有 3 种类型:根 DNS 服务器、顶级域(Top-Level Domain, TLD)DNS 服务器和权威 DNS 服务器。它们的层次结构如下图所示:

  • 根 DNS 服务器

首先我们要明确根域名是什么,比如 www.baidu.com,有些同学可能会误以为 com 就是根域名,其实 com 是顶级域名,www.baidu.com 的完整写法是 www.baidu.com.,最后的这个 . 就是根域名。

根 DNS 服务器的作用是什么呢?就是管理它的下一级,也就是顶级域 DNS 服务器。通过询问根 DNS 服务器,我们可以知道一个主机名对应的顶级域 DNS 服务器的 IP 是多少,从而继续向顶级域 DNS 服务器发起查询请求。

  • 顶级域 DNS 服务器

除了前面提到的 com 是顶级域名,常见的顶级域名还有 cn、org、edu 等。顶级域 DNS 服务器,也就是 TLD,提供了它的下一级,也就是权威 DNS 服务器的 IP 地址。

  • 权威 DNS 服务器

权威 DNS 服务器可以返回主机 - IP 的最终映射。

关于这几个层次的服务器之间是怎么交互的,接下来我们会讲到 DNS 具体的查询过程,结合查询过程,大家就不难理解它们之间的关系了。

本地 DNS 服务器

之前对 DNS 有过了解的同学可能会发现,上一节的 DNS 层次结构,为什么没有提到本地 DNS 服务器?因为严格来说,本地 DNS 服务器并不属于 DNS 的层次结构,但它对 DNS 层次结构是至关重要的。那什么是本地 DNS 服务器呢?

每个 ISP 都有一台本地 DNS 服务器,比如一个居民区的 ISP、一个大学的 ISP、一个机构的 ISP,都有一台或多台本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,本地 DNS 服务器起着代理的作用,并负责将该请求转发到 DNS 服务器层次结构中。

接下来就让我们通过一个简单的例子,看看 DNS 的查询过程是怎样的,看看客户端、本地 DNS 服务器、DNS 服务器层次结构之间是如何交互的。

递归查询、迭代查询

如下图,假设主机 m.n.com 想要获取主机 a.b.com 的 IP 地址,会经过以下几个步骤:

  1. 首先,主机 m.n.com 向它的本地 DNS 服务器发送一个 DNS 查询报文,其中包含期待被转换的主机名 a.b.com;

  1. 本地 DNS 服务器将该报文转发到根 DNS 服务器;

  1. 该根 DNS 服务器注意到 com 前缀,便向本地 DNS 服务器返回 com 对应的顶级域 DNS 服务器(TLD)的 IP 地址列表。

意思就是,我不知道 a.b.com 的 IP,不过这些 TLD 服务器可能知道,你去问他们吧;

  1. 本地 DNS 服务器则向其中一台 TLD 服务器发送查询报文;

  1. 该 TLD 服务器注意到 b.com 前缀,便向本地 DNS 服务器返回权威 DNS 服务器的 IP 地址。

意思就是,我不知道 a.b.com 的 IP,不过这些权威服务器可能知道,你去问他们吧;

  1. 本地 DNS 服务器又向其中一台权威服务器发送查询报文;

  1. 终于,该权威服务器返回了 a.b.com 的 IP 地址;

  1. 本地 DNS 服务器将 a.b.com 跟 IP 地址的映射返回给主机 m.n.com,m.n.com 就可以用该 IP 向 a.b.com 发送请求啦。

“你说了这么多,递归呢?迭代呢?”

这位同学不要捉急,其实递归和迭代已经包含在上述过程里了。

主机 m.n.com 向本地 DNS 服务器 dns.n.com主机 m.n.com 向本地 DNS 服务器 dns.n.com 发出的查询就是递归查询,这个查询是主机 m.n.com 以自己的名义向本地 DNS 服务器请求想要的 IP 映射,并且本地 DNS 服务器直接返回映射结果给到主机。

而后继的三个查询是迭代查询,包括本地 DNS 服务器向根 DNS 服务器发送查询请求、本地 DNS 服务器向 TLD 服务器发送查询请求、本地 DNS 服务器向权威 DNS 服务器发送查询请求,所有的请求都是由本地 DNS 服务器发出,所有的响应都是直接返回给本地 DNS 服务器。

那么问题来了,所有的 DNS 查询都必须遵循这种递归 + 迭代的模式吗?

当然不是。

从理论上讲,任何 DNS 查询既可以是递归的,也可以是迭代的。下图的所有查询就都是递归的,不包含迭代。

看到这里,大家可能会有个疑问,TLD 一定知道权威 DNS 服务器的 IP 地址吗?

emmm...

还真不一定,有时 TLD 只是知道中间的某个 DNS 服务器,再由这个中间 DNS 服务器去找到权威 DNS 服务器。这种时候,整个查询过程就需要更多的 DNS 报文。

DNS 缓存

为了让我们更快的拿到想要的 IP,DNS 广泛使用了缓存技术。DNS 缓存的原理非常简单,在一个 DNS 查询的过程中,当某一台 DNS 服务器接收到一个 DNS 应答(例如,包含某主机名到 IP 地址的映射)时,它就能够将映射缓存到本地,下次查询就可以直接用缓存里的内容。当然,缓存并不是永久的,每一条映射记录都有一个对应的生存时间,一旦过了生存时间,这条记录就应该从缓存移出。

事实上,有了缓存,大多数 DNS 查询都绕过了根 DNS 服务器,需要向根 DNS 服务器发起查询的请求很少。

CS231n+assignment2(一) cs231n作业二详解+代码 阅读详情

相关推荐

离线安装PlutoSDR硬件支持包全攻略:没有MathWorks账号也能搞定MATLAB集成

本文详细介绍了在没有MathWorks账号和网络环境的情况下,如何离线安装PlutoSDR硬件支持包并实现MATLAB集成的完整解决方案。从驱动安装、设备识别到MATLAB支持包的离线部署,提供了全面的步骤指导和常见问题排查方法,特别适合高校实验室、军工单位等内网环境使用。

js777的博客 267

字节面试被虐后,是时候搞懂 DNS 了

点击上方前端Q,关注公众号回复加群,加入前端Q技术交流群前几天面了字节????????:“浏览器从输入URL到显示页面发生了什么?”????????:%^&@#^&(这我怎么可能没有准备?从网络...

LuckyWinty的博客 341

多张图带你彻底搞懂DNS域名解析过程

1、DNS DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。 2、域名系统DNS 的作用 通常我们有两种方式识别主机:通过主机名或者 IP 地址。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的 IP 地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP 地址转换的目录服务,域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 因此,即使不使用域名

林深不见鹿 的博客 12万+

基于机器学习和辐射传输的地表温度模拟方法对比

对于不同的地表类型和不同的年份,经验方法是实用的,虽然整体精度不如物理方法,但具有计算速度快、对模型内部结构考虑较少等优点。尽管深度学习等回归的经验方法不需要考虑辐射传输和能量平衡的具体过程, 但在其输入参数的选择上也不能是无序和随机的,而是应选择有关相应物理过程的参数。经验方法在处理不同年份相同地表类型或表现相对较好, RMSE 约为 1.50K,但在不同地表类型且不同年份模拟结果较差, RMSE 约为 3.0K, 虽然精度不如物理方法,但它具有计算速度快,不需过多考虑模型内部结构的优点。

2301_77907355的博客 1021

银行会计第2课:交易和核算分离的思想

核算作为会计的基础,将交易转化为可量化的信息,而会计则通过整合核算结果,实现对经济活动的全面把控。- 本质:指企业或主体之间发生的、能引起经济利益变动的具体事项,比如采购商品、销售货物、支付工资等,是客观发生的经济事实。可售产品(业务视角的核算对象) + 属性条件(核算的分类,限制等) = 核算类型(会计视角,含有科目分类内容)- 核算:会计人员根据采购发票、入库单等,将这笔交易记为“借:原材料,贷:银行存款”(对事实的会计处理)。- 特点:是核算的源头,不涉及会计处理,仅代表经济行为的发生。

ademen的博客 499

网络知识扫盲:一篇文章搞懂 DNS

1) 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)2) 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)3) 从"次级域名服务器"查出"主机名"的IP地址。

Ruishine的博客 1253

基于Python批量获取过去某地某时的天气数据

此段代码为经Visual Weather API官网样例后修改。原代码返回数据格式为json,经测试json风速字段不可用,后改为返回数据格式为csv。若修改weather_api_endpoint,还可获取该地点的预测数据,但返回数据字段可能发生变化,请以官网文档为准。获取到的字段包括:平均温度、露点、湿度、风速、降雨量、能见度、云量、天气类型等。目的:已知某一地址,获取过去某一时间该地的天气数据,并能够批量运行。这一步也会有获取不到的时间和地点,因此为空白。此段代码为经百度地图api官网样例后修改。

wiseman1233的博客 905

搞懂 DNS 做了什么,再试试 GitHub520 项目的加速效果

本文作者:明哥在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象。而网络知识,通常是很抽象,不容易理解的,有很多同学就在这里裁了...

HelloGitHub 的博客 7533

Vivado时序违例debug

显示了数据路径延迟。例如,对于违例路径,若布线延迟超过50%,说明该延迟是导致时序不能收敛的主要因素,因此可围绕降低布线延迟这一靶心达到时序收敛。对于跨时钟域路径,Requirement数值会有所变化,但如果数值为0.1,显然是不合理的。目的时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达SRLC32E移位寄存器,对应。源时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达FDRE触发器,对应。

weixin_44513618的博客 1618

PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试去这一工程的,我去支付宝的蚂蚁金服开放平台里把各个知识点和文档大概都看了一遍,大致弄明白了要怎么操作了,建议大家看看电脑网站开发文档,忙到了夜里十二点左右,成功地用支付宝给的Demo完成了付款操...

爱玲姐姐的博客 1万+

8 张图带你彻底搞懂 DNS 域名解析过程

1、DNS DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。2、域名系统 DNS 的作用 通...

weixin_45727359的博客 1938

一文读懂“数据分发服务DDS”(Data Distribution Service,RTPS,OMG)

DDS 数据分发服务(Data Distribution Service) 数据分发服务DDS(DataDistributionService)是对象管理组织(OMG)在HLA及CORBA等标准的基础上制定的新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。DDS...

DDS技术交流推广大本营 4万+

搞懂这 9 个步骤,DNS 访问原理就明明白白了

前两天遇到一个面试的小伙伴,他说面试官和他聊得很投机,无意中谈到了DNS请求的过程。他一时语塞随便应付了两句,虽然对方没有追问的意思,但最后面试结果也并不理想。本着边面试边学习的态度,我...

weixin_45727359的博客 1008

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

搞懂这 9 步,DNS 访问原理就明明白白了

点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!又到了招聘季了,前两天遇到一个面试的小伙伴,他说面试官和他聊得很投机,无意中谈到了DNS请求的过程。他一...

民工哥的博客 902

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

一文搞懂 DNS 基础知识,收藏起来有备无患~

欢迎关注方志朋的博客,回复”666“获面试宝典DNS(Domain Name System), 也叫网域名称系统,是互联网的一项服务。它实质上是一个 域名 和 IP 相互映射的分布式数据库,有了它,我们就可以通过域名更方便的访问互联网。DNS 有以下特点:分布式的协议支持 TCP 和 UDP,常用端口是 53每一级域名的长度限制是 63域名总长度限制是 253那么,什么情...

方志朋的博客 437

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java游戏服务器面试_服务器 面试

Linux工作常见的面试题linux运维工程师在面试的时候经常会被问到各种问题,接下来小编根据自己的经验将面试题整理下来供大家参考。linux面试题整理linux面试题整理取出文件aaa.txt的第4到7行[root@localhost ~]# cat aaa.txt 1.aaa2.bbbbbbb3.cccccccccc...文章Linux技术干货2020-11-09329浏览量关于FTP主动模式...

weixin_35773916的博客 800

计算机网络高频面试题最新版

> 在秋招过程中看了大量面经,将常见的计算机网络面试题总结如下,并按照面试中提问的频率做了标注(星数越高,面试中提问频率越高),如有帮到你,可以收藏点赞支持哦。 > **推荐阅读:** - [一文搞定所有Java基础知识面试题](https://blog.youkuaiyun.com/zydybaby/article/details/109701816) - [一文搞定所有Java集合面试题](https://blog.youkuaiyun.com/zydybaby/article/details/110183

zydybaby的博客 2614

一篇文章搞懂OSI与TCP/IP模型:从理论到实战面试题

(示意图:OSI七层与TCP/IP四层对比),

坏柠的博客 763

输入网址后发生了什么?DNS 解析流程详解(附“通讯录”比喻)

域名系统。它的作用就是互联网的通讯录📒。👱人类:擅长记忆有意义的文字,如(人名)。💻计算机:只认识冷冰冰的 IP 地址,如(电话号码)。🔗DNS:负责把“域名”翻译成“IP 地址”。场景你想去银行🏦。如果你用的 Local DNS 是个黑店(或者被黑客篡改了)。它故意告诉你一个假 IP(钓鱼网站 🎣)。你输入账号密码,卒。对策🛡 手动设置靠谱的 DNS (如 114.114.114.114, 8.8.8.8)。🔒 使用 HTTPS (浏览器会校验证书,假网站没有真证书)。🧭。

👨‍💻 12年全栈老兵 | 擅长把复杂的代码逻辑翻译成“人话” | 只讲听得懂的技术故事 🚀 1004
上一篇: 以太坊详解
下一篇: MCP初学者指南(1)
goodfornothing-s
博客等级 码龄8年 105粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值