当前位置: 首页 > Linux

理解了这9个步骤,DNS访问的原理就清楚了

时间:2023-04-06 01:24:26 Linux

又到了招聘季。前两天,认识了一个面试伙伴。他说面试官跟他聊的很投机,不小心说到了DNS请求。的过程。他一时语塞,随口应付。虽然对方并没有多问的意思,但是最后的面试结果却并不尽如人意。本着边面试边学习的态度,我们来看看DNS请求过程中涉及到的定义和原理。DNS的含义和结构众所周知,IP用于标识Internet上的服务器。IP地址虽然可以代表一个设备,但是很难记住,所以用一个可以理解和识别的名字来代替,我们称之为域名。例如:www.51cto.com是一个域名,域名后面会定义一个IP地址指向网站服务器。那么问题来了,谁来做域名到IP地址的对应呢?答案是通过DNS。DNS即域名系统(DomainNameSystem,缩写:DNS)是互联网的一项服务。它是一个将域名与IP地址相互映射的分布式数据库,将域名与IP地址的映射关系存储在数据库中,使人们更方便地访问互联网。DNS解析是分布式存储的。从结构上来说,最上层是根域名服务器(ROOTDNSServer),里面存放着260个顶级域名服务器的IP地址。对于Ipv4,全球有13个根域名服务器,里面存放着各个域名(如.com.net.cn)的解析和域名服务器的地址信息。简单的说,根域名服务器就是顶级域名服务器的地址。根域名服务器的下一级是顶级域名服务器。例如,.com的域名服务器存储了一些一级域名(如今日头条的DNS)的权威DNS服务器地址。顶级域名也称为一级域名。顶级域名可分为三类,即gTLD、ccTLD和NewgTLD:gTLD:国际顶级域名(generictop-leveldomains,gTLD),如:.com/.net/.org等.都属于gTLD;ccTLD:国家代码顶级域名(简称ccTLD),例如:中国是.cn域名,日本是.jp域名;新通用顶级域:新顶级域名(NewgTLD),例如:.xyz/.top/.red/.help等新顶级域。顶级域名服务器根据以上三类保存域名IP对应的数据。顶级域名服务器下面一层是本地域名服务器(LocalDNS),一般是运营商的DNS,主要作用是代表用户进行域名解析。如图1所示,DNS域名服务器分为三级,从上到下分别是根域名服务器(RootDNSServer)、顶级域名服务器(gTLD、ccTLD、NewgTLD)、本地域名服务器(本地DNS服务器)。图1DNS层次结构DNS解析原理说完DNS的结构,再来说说它的工作原理。通过用户访问网页的过程来描述DNS解析和获取URL到IP映射的整个过程。过程比较复杂,还会有信息来回传递。在画图的过程中,我们将来回简化信息传输的线段,重点关注信息传输的路径,通过9个步骤来讲解DNS解析过程。图2用户请求及DNS解析全过程1、用户请求通过浏览器输入要访问的网站地址,例如:www.51cto.com。浏览器会在自己的缓存中查找该URL对应的IP地址。如果你之前访问过并保存了这个URL的IP地址对应的缓存,那么直接访问IP地址。如果没有缓存,则转步骤2。2、通过计算机本地host文件配置,可以设置URL与IP地址的映射关系。比如在Windows下是通过C:windwossystem32driveretchosts文件设置的,在Linux下是/etc/named.confg文件。在这里找到本地的Host文件,看看有没有IP地址的缓存。如果在该文件中仍未找到映射关系,则转到步骤3。3.通过本地运营商请求LocalDNSServer获取URL和IP的映射关系。如果是校园网,DNS服务器在学校,如果是小区网,DNS服务器由运营商提供。简而言之,服务器在物理上离发起请求的计算机更近。LocalDNSServer缓存了大量的DNS解析结果。由于其性能较好,物理距离相对较近,通常会在较短的时间内返回指定域名的解析结果。这一步满足了80%的DNS解析要求。如果此步骤还没有完成DNS解析,则转步骤4。4.通过RootDNSServer进行解析,ROOTDNSServer会根据需要返回LocalDNSServer的顶级域名服务器地址到请求的URL。例如:查询“.com”域名,则查询gTL对应的域名服务器地址。5、返回顶级域名服务器地址后,访问对应的顶级域名服务器(gTLD、ccTLD、NewgTLD),返回NameServer服务器地址。这个NameServer是网站注册的域名服务器,里面包含了网站URL和IP的对应信息。比如你向域名服务商申请一个域名,这个域名就会由他们的服务器进行解析。此名称服务器由域名提供商维护。6.NameServer会将指定域名的A记录或CNAME返回给LocalDNSServer,并设置一个TTL。(Address)记录用于指定主机名(或域名)对应的IP地址记录。用户可以将域名下的网站服务器指向自己的网站服务器。同时,您还可以设置您的域名的二级域名。CNAME:别名记录。这种类型的记录允许您将多个名称映射到另一个域名。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台名为“host.mydomain.com”(A记录)的计算机。同时提供WWW和MAIL服务,方便用户访问服务。从维护方便的角度考虑,服务商一般建议用户使用CNAME记录绑定域名。如果主机使用的是双线IP,使用CNAME显然更方便。TTL(TimeToLive):设置本次DNS解析在LocalDNSServer上的过期时间。过了这个过期时间,URL和IP的映射就会被删除,必须请求NameServer获取。7、如果此时获取到了A记录,那么就可以直接访问该网站的IP了。但一般来说,大型网站都会返回CNAME,然后传给GTMServer。GTM(GlobalTrafficManager的缩写)是全局流量管理。基于网宿智能DNS和分布式监控系统,实现实时故障切换和全局负载均衡,保证应用服务持续高可用。传递给GTM的目的是通过GTM的负载均衡机制,帮助用户找到最合适的服务器IP。也就是离你最近的,性能最好的,服务器状态最健康的。而且大部分网站都会做CDN缓存。这时候就更需要使用GTM来帮助你在网络节点中找到适合你的CDN缓存服务器了。8、找到CDN缓存服务器后,可以直接从服务器获取一些静态资源,如HTML、CSS、JS、图片等。但是有些动态资源,比如商品信息,订单信息,需要经过第9步。9、对于需要从应用服务器获取的没有缓存的动态资源,通常在应用服务器和互联网之间有一层负载均衡器负责反向代理。将其路由到应用程序服务器。总结NS服务器用于URL和IP地址解析,帮助用户找到访问服务器的IP。从DNS服务器的结构来看,大致分为三层:根域名服务器、顶级域名服务器、本地域名服务器。申请域名的供应商将提供NameServer作为DNS解析。从用户访问一个网站开始,通过浏览器、本地Host文件、LocalDNSServer、RootDNSServer、顶级域名服务器(gTLD、ccTLD、NewgTLD)、NameServer、GTM、CDN、ApplicationServer。总共有九个步骤。作者:51CTO崔昊来源:https://blog.51cto.com/142793...