DNS原理1-nameserver

name servers介绍及历史 本篇文章我们会讨论互联网世界里最重要和不可避免的资源,我们每个人有意或无意地使用它。 网络中的每台机器都是由一个ip(数字地址)标识。这个地址可以被网络中的其它机器使用,以便进行通信。在没有和这个ip地址相关的名称时,ip地址难以记忆,即使本地网络少量机器地址也难以记住,更不用说网络中成千上万机器地址了。 最初主机文件(hosts file, hosts file介绍看这里)的概念是为了解决这个问题而诞生的,网络中的每一台机器都有一个主机文件(Un*x下是/etc/hosts),记录了主机名称(computer name/host name)跟IP地址映射关系(dns出现后也可以记录域名和ip映射关系),转换为IP地址就是在这里完成的。有了hosts file,只要记住主机名称即可,通过目标机器的主机名称来访问目标机器,不需要再记ip地址了。 但随时间推移,网络中机器越来越多且不同网络间通信需求,hosts file方式暴露了一些问题: 每次出现新机器时,网络中其它机器都要更新映射关系 没有有效的机制,通知这些机器去更新映射关系 随时间推移,主机文件越来越大,很难维护 hosts file适用于机器较少的本地网络,不适用于分布在不同网络上的大量机器场景 在1970年中期,name server(名称服务器)的概念出现了。这个name server背后的基本思想是,人们发现名称比起数字更容易记,特别是当名称描述资源的一些属性时。而名称转换为ip的问题与计算机网络本身一样古老。 当网络中有name server时,网络中的其它机器只要知道name server的ip地址以及目标机器或网站的名称。有了这些信息后就可以跟name server请求目标机器的ip地址。 中心化的name server服务器比起hosts file主机文件方案要好的多,因为现在有了专门用于名称到地址映射的中心化服务器,网络中机器只要记住它的ip,然后向它发起查询请求即可返回名称对应的ip地址。 中心化的name server主要好处是机器修改ip地址后,不需要通知网络中其它机器了,机器ip修改后,只需要在name server上更新下最新ip地址即可。缺点也显而易见,服务器挂的话整个网络访问都不可用了,所以出现了多台name server的方案,一个作为master或primary,其它作为slave或secondary,如果master不可用则slave提供查询服务。 即使是多台name server的实现也有一些缺点: 随着网络中名称不断增加,name server从数百万个条目中检索信息变得非常困难,所以我们需要一种方法来组织这些名称。 想象单台name server每秒执行越来越多请求,这种情况下name server负载会增加,所以我们需要想办法分散负载。 我们需要一种机制来分离name server上的条目管理,以便不同管理员可以添加条目。 为了有效的管理名称或域名的解析(解析成IP地址)工作,随后设计了DNS(域名系统) DNS(Domain Name System) 域名系统 域名结构和域名系统是为了在大型分布式网络中组织和查找计算机ip地址而开发的。在域名结构出现之前,通过上文提到的hosts file来记录主机名称和ip地址映射关系 在介绍dns之前,先看下域名结构。 DNS系统设计成一个与域名结构类似的倒树层次化的dns名称服务器结构,树根叫root name server(根名称服务器),接着是TLD name server(顶级域名称服务器),TLD后是SLD name server(二级域/权威名称服务器) 完整的dns功能描述请查阅RFC 1034 1035 dns系统中,每个节点都被分配给一个权威机构或组织进行管理。负责特定节点的组织是该节点的权威。 现在位于dns系统层次顶端的是根名称服务器,它是由ICANN这个组织管理。 gTLD通用顶级域名称服务器如(.com, .net)等也是由ICANN管理并委托给注册管理机构,ccTLD国家顶级域名称服务器被授权给不同国家进行管理 在域名中,经常出现的www(如www.baidu.com)是主机名称,仅仅是个惯例,你也可以叫 xyz.baidu.com 当我在浏览器地址栏上输入www.example.com回车时会发生什么? 在名称服务器层级里,根名称服务器是最重要资源,当其它名称服务器查询不到信息时,它们首先会请求根名称服务器。 全球有13组根服务器: a.root-servers.net. b.root-servers.net. c....

May 23, 2021 · 2 min