首页 > 其他分享 >面试官:DNS解析都整不明白,敢说你懂网络?我:嘤嘤嘤!

面试官:DNS解析都整不明白,敢说你懂网络?我:嘤嘤嘤!

时间:2024-12-18 09:01:37浏览次数:3  
标签:面试官 记录 报文 查询 域名 DNS 服务器 解析

一、写在开头

在OSI七层协议模型中应用层是距离我们最近,且日后开发使用到最多的一层,在上一篇博文中我们已经学习了应用层中的HTTP协议,在本文中我们再一起来学一下DNS。啥?DNS不是很了解?那还不快往下看!

其实早几年和一个朋友聊天,当时,他是一个网络条线的技术经理,向我吐槽说,现在来面试的很多都是学不好编程语言的,转来搞网络了,结果问一个DNS,他都整不明白,就这还好意思干网络?我当时吓得不敢说话,因为我自己对于网络编程也是那种浅尝辄止的心态,生怕他回头问我一个问题,哈哈。

二、DNS的定义

DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。

image




DNS是一个联机的分布式数据库系统,它具有分布式、层次化、模块化等特点,它属于应用层的协议,基于UDP传输,端口为53。

三、DNS服务器类别

我们上面说到DNS具有层次化结构,而这个层次化主要体现在它的服务器部署之上,DNS的域名层次结构是一棵树,从「根域名服务器」「顶级域名服务器」「权威域名服务器」,再到「本地域名服务器」,而我们所有遇到的DNS服务器,都囊括在这四类之中。

  • 「根域名DNS服务器」:是为提供TLD服务器的IP地址,目前世界上仅有13组根服务器,我国境内仍然没有,不过后来任播应用后,DNS分解出1089个根域名服务器节点,而在我国便有了26个根域名服务器节点。
  • 「顶级域名服务器(TLD服务器)」:顶级域名指的域名的后缀,像com、org、net等都是,不同国家也有自己的域名,如uk、ca、fr这些,我国的是cn。而顶级域名系统则是提供权威DNS服务器IP地址的。

    image

  • 「权威域名DNS服务器」:所有在因特网上具有公共可访问主机的组织机构,必须提供可访问的DNS记录,而这些记录里则保存着域名与IP映射等信息,而这些记录则存储在权威DNS服务器上。
  • 「本地域名服务器」:每个 ISP(互联网服务提供商)都有一个自己的本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 层次结构中。

那么了解了DNS的底层服务器结构,它们是如何合作的,或者说是通过怎样的机制,达到解析域名,响应到对应的IP上的呢?继续往下看!

四、DNS的解析过程

开局先上一张图:

image



现在假设我们用浏览器去访问“ www.baidu.com.cn” 的IP地址,那么DNS解析系统的整个解析过程大致可以分为如下这几步:

  1. 第一步:客户端向本地DNS服务器发送DNS请求报文,报文中包含域名 www.baidu.com.cn ,若本地DNS中有相应的记录,直接反馈客户端,若没有则访问根DNS服务器,继续处理请求;
  2. 第二步:本地DNS服务器向根域名服务器发送请求,根域名服务器是域名系统的最顶层,它负责管理所有顶级域名(如.com、.net、.org以及国家和地区代码如.cn)。根域名服务器会返回所查询域(在这个例子中是“.cn”域)的主域名服务器的地址;
  3. 第三步:本地DNS在接收到根服务器返回的地址后,便向cn顶级域名服务器发送请求,一般到这里是有可能找到了对应的域名映射的IP地址的,但若还没有,它会查询自己的记录以找到“.com.cn”域的主域名服务器(权威DNS服务器)地址返回;
  4. 第四步:本地DNS服务器只得继续向权威DNS服务器发去请求,终于,www.baidu.com.cn已经向权威域名DNS备案过了,在这里找到了它对应的记录,便把记录返回给本地DNS;
  5. 第五步:本地dns服务器将收到的返回地址发给客户端,同时写入自己的缓存,以便下次查询;

「需要注意的是:」 从请求主机到本地 DNS 服务器的查询是递归的,其余的查询时迭代的;当找不到相应记录,会返回空结果,而不是超时信息。

五、DNS报文格式

DNS报文格式是DNS协议中用于客户端和服务器之间通信的一种结构化数据格式。DNS报文主要分为两种:查询报文和回答报文,它们具有相同的格式。

image




DNS(Domain Name System,域名系统)报文是在域名解析过程中,DNS客户端和DNS服务器之间传输的消息,其报文格式主要包括以下几个部分:

「我们可以将其分成三个部分来看:」

报文头部

  • 「标识」:16位的标识符,用于标识该DNS报文,客户端发送请求时会生成一个随机的标识,服务器在响应时会使用相同的标识,以便客户端能够将响应与请求对应起来。
  • 「标志」:16位的标志字段,包含多个标志位,用于表示报文的类型、操作码、响应状态等信息。例如,QR位表示是查询报文(0)还是响应报文(1);OPCODE位表示操作码,通常为标准查询(0)等。
  • 「问题数量」:16位的字段,指明报文中包含的问题记录数量。
  • 「回答数量」:16位的字段,指明报文中包含的回答记录数量。
  • 「权威机构数量」:16位的字段,指明报文中包含的权威机构记录数量。
  • 「附加信息数量」:16位的字段,指明报文中包含的附加信息记录数量。

问题部分

  • 「查询名称」:可变长度字段,包含要查询的域名,域名采用一种特殊的编码方式,将域名的各个部分以标签的形式表示,每个标签前面有一个字节表示该标签的长度,最后以一个字节的0结束。
  • 「查询类型」:16位的字段,指定查询的资源记录类型,如A记录(表示主机地址)、NS记录(表示域名服务器)、CNAME记录(表示别名)等。
  • 「查询类」:通常为1,表示Internet类。

回答部分、权威机构部分和附加信息部分

这三个部分的格式基本相同,每个部分都可以包含多个资源记录,每个资源记录的格式如下:

  • 「域名」:与问题部分的查询名称格式相同,通常是被查询域名或相关域名。
  • 「类型」:16位的字段,与问题部分的查询类型相对应,表示该资源记录的类型。
  • 「类」:通常为1,表示Internet类。
  • 「生存时间」:32位的字段,以秒为单位,表示该资源记录在缓存中的有效时间。
  • 「资源数据长度」:16位的字段,指明后面的资源数据的长度。
  • 「资源数据」:可变长度字段,包含与该资源记录类型相关的具体数据,如A记录的IP地址、NS记录的域名服务器名称等。

总结

以上就是DNS域名管理系统涉及到的知识点啦,虽然很多后端程序员吗,在日后的工作中几乎不再深追DNS的底层原理,但初期,我们还是有必要了解一些网络上的内容的,毕竟企业内转岗比较常见。

标签:面试官,记录,报文,查询,域名,DNS,服务器,解析
From: https://www.cnblogs.com/JavaBuild/p/18613789

相关文章

  • python sortedcontainers解析
    sortedcontainers介绍本篇文章将主要介绍sortedcontainers中各个容器的实现方式。第三方库地址:https://github.com/afthill/sorted_containerspython中含有大量的容器类型,比如list、set、dict等,但这些数据结构的有序版本却没有在标准库中实现。而在某些时候,可能需要一种......
  • 四大跨平台开发框架深度解析——uniapp、uniapp-X、React Native与Flutter
    引言随着移动互联网的飞速发展,跨平台开发框架成为了开发者们关注的焦点。这些框架旨在通过编写一套代码,实现多个平台的应用开发,从而大幅提高开发效率和降低维护成本。本文将深入剖析uniapp、uniapp-X、ReactNative和Flutter这四个主流的跨平台开发框架,探讨它们的优缺点及......
  • MeteoInfo-Java解析与绘图教程(十)_JAVA绘制雷达PPI图
    天气雷达的基本要素有很多,特别是双偏振雷达更多,但业务场景经常使用的一般为基本反射率,基本速度这两种要素接下来我们以基本反射率为例,其他的要素也是一样的,一通百通首先我们做基本反射率的图需要确定做哪一个仰角层,因为雷达体扫模式的扫描是不同仰角进行扫描的,常规的雷达......
  • IEC104协议初始化响应过程的深度解析
    在复杂多变的电力系统中, IEC104协议以其独特的优势,在配电主站与配电终端之间搭建起了一座高效、稳定的通信桥梁。而在这其中,初始化响应过程作为IEC104服务器应用的重要环节,扮演着举足轻重的角色。今天,我们就来一起深入探讨解析IEC104初始化响应过程。1、说明配电主站和配电......
  • 扬帆起航!《航海王壮志雄心》12月19日震撼上线,福利玩法全解析
    12月19日,航海王壮志雄心即将公测上线,这款游戏不仅重现了原作中的经典角色和情节,还融入了全新的玩法机制,今天就给大家抢先介绍一下首发内容!一、首发福利活动1.登录即送豪华礼包:在活动期间登录游戏,即可领取包含稀有角色碎片、高级装备、海量金币等在内的豪华新手礼包,帮助我们......
  • DNS缓存—互联网高效运行的幕后功臣
    在当今数字化时代,互联网已经渗透到我们生活的方方面面。当我们在浏览器中输入一个网址,瞬间就能访问到对应的网站,这背后DNS缓存功不可没。DNS缓存是一种优化域名解析过程的机制。我们知道,互联网上的计算机通过IP地址来相互识别和通信,但IP地址是一串难记的数字,于是域名应运而生。......
  • 7 Oracle 经典面试题解析
    PL/SQL面试题--1、创建序列seq_employee,该序列每次取的时候自动增加,从1开始计数,不设最大值,并且一直累加,不循环;CREATESEQUENCEseq_employeeSTARTWITH1INCREMENTBY1NOMAXVALUE;--也可以直接使用简单默认参数:--CREATESEQUENCEseq_employee;SELECTseq_employee.NEXTV......
  • 揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析
    揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析前言1.什么是后训练?2.指令微调(InstructionFine-Tuning,SFT)概念训练流程实践示例:TÜLU33.偏好调优(PreferenceTuning,DPO)概念关键步骤DPO的优势实践示例:TÜLU34.强化学习与可验证奖励(RLVR)概念RLVR流......
  • 使用Python脚本之家商品列表实现的解析
    本文将详细介绍如何使用Python脚本之家商品列表来实现各种功能。通过对不同方面的阐述,帮助读者更好地理解和应用这个功能。一、创建商品列表1、首先,我们需要导入所需的库,如下所示:代码语言:javascript复制importrequestsfrombs4importBeautifulSoup2、接下来,我们可以使用......
  • ip地址解析-纯真(CZ88.net) 中国IP地理位置数据库首创者
    纯真(CZ88.NET)自2005年起一直为广大社区用户提供社区版IP地址库,只要获得纯真的授权就能免费使用,并不断获取后续更新的版本。如果有需要免费版IP库的朋友可以前往纯真的官网进行申请。纯真除了免费的社区版IP库外,还提供数据更加准确、服务更加周全的商业版IP地址查询数据。纯真......