DNS域名解析系统

2025-09-07 12:03:15 28阅读

前言

前两篇记录了一下UDP、广播和多播的相关笔记。

那么我们在打开TCP连接或者用UDP发送一个数据报之前,接收方往往是一个域名,例如xxx.com,此时需要将这个域名转换成IP地址,那么怎么进行转换的呢???

就是通过这个DNS域名系统进行转换。

今天就来记录一下DNS域名系统。

DNS域名系统

DNS域名系统(Domain Name System) 是一种用于TCP/IP应用程序的分布式数据库,提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。

DNS提供了允许服务器和客户程序相互通信的协议。

从应用的角度上看,对DNS的访问是通过一个地址解析器来完成的。

解析器通过一个或多个名字服务器来完成主机名和IP的相互转换。

在一个应用程序请求TCP打开一个连接或使用UDP发送给一个数据报之前,必须将一个主机名转换成IP地址。

DNS解析流程详解_DNS域名系统原理_客户域名解析需要知道本地域名服务器的名字吗?

每个节点的标识最长63字符,不区分大小写,任何一个节点的域名就是将该节点到最高层的域名串连起来,用“.”分割。

以“.”结尾的域名被称为绝对域名或完全合格的域名FQDN,例如:sun.tuc.noao.edu.

如果非“.”结尾,则认为该域名是不完全的。如果不完整的域名由两个或两个以上的标号组成,则认为它是完整的,或者在该域名的右边加上一个局部后缀,例如,域名sun加上局部后缀 .tuc.noao.edu. 成为完整的。

「顶级域名被分成三个部分:」

(1)arpa是用作地址到名字转换的特殊域

(2)7个3字符长的普通域

(3)所有2字符长的域被称为国家域,或地理域

我们日常能接触到的就是以com结尾的域名

比如学校的就是这样

DNS域名系统原理_客户域名解析需要知道本地域名服务器的名字吗?_DNS解析流程详解

至于后面的“.cn”域名表示的是我国顶级域名

DNS服务器

DNS域名系统原理_DNS解析流程详解_客户域名解析需要知道本地域名服务器的名字吗?

DNS解析流程

DNS解析流程详解_DNS域名系统原理_客户域名解析需要知道本地域名服务器的名字吗?

为了提高DNS的解析性能,很多网络都会就近部署DNS缓存服务器。

浏览器访问www.xxx.com,发一个DNS请求,询问对应的IP是啥,并发给本地域名服务器(本地DNS)。「何为本地NDS?」 如果通过DHCP配置,本地DNS由网络服务商(ISP),如电信、移动等自动分配,通常就在网络服务商的某个机房。本地DNS收到请求,本地DNS缓存着一张域名和IP对应的表,如果找到则直接返回IP地址。如果没有,本地DNS会去询问根域名服务器对应的IP地址是啥,根域名服务器是最高层次的,不直接用于域名解析,当能说明可去哪解析。根DNS收到本地DNS请求后,发现后缀是.com,返回顶级域名服务器的地址本地DNS随即请求顶级域名服务器查询对应的IP,顶级域名服务器管理者二级域名,比如baidu.com,所以它返回权威DNS服务器的地址。本地DNS拿到权威DNS服务器地址,请求获取对应的IP,权威DNS服务器查询后将对应的IP地址返回给本地DNS本地DNS再将IP地址返回客户端,客户端和目标建立连接。

「本地设置域名和IP转换」

在linux机器上通过在文件“/etc/hosts”中配置域名对应的IP地址

DNS域名系统原理_DNS解析流程详解_客户域名解析需要知道本地域名服务器的名字吗?

「设置DNS域名服务器」

需要在“/etc/resolv.conf”文件中配置

添加如下内容

负载均衡

根据域名查询IP是一次DNS递归查询过程。本地DNS全权处理。在此过程中,DNS除了可以通过名称映射IP地址,还可以做另一件事,就是负载均衡。

DNS可以做内部负载均衡,域名和IP具有一对多的关系,配置域名比直接配置IP更具有灵活性。

DNS可以做全局负载均衡,高可用、就近访问

例如:DNS 访问数据中心中对象存储上的静态资源

假设全国有多个数据中心,托管在多个运营商,每个数据中心三个可用区(Available Zone)。对象存储通过跨可用区部署,实现高可用性。在每个数据中心中,都至少部署两个内部负载均衡器,内部负载均衡器后面对接多个对象存储的前置服务器(Proxy-server)。

DNS域名系统原理_客户域名解析需要知道本地域名服务器的名字吗?_DNS解析流程详解

对于复杂的应用、跨地域跨运营商的大型应用,则需要更加复杂的全局负载均衡机制,这就是全局负载均衡器(GSLB,Global Server Load Balance)。

权威DNS服务器中,一般通过配置CNAME的方式,给域名起一个别名,例如:www.vip.baidu.com,然后告诉本地DNS服务器,让它请求GSLB解析这个域名,GSLB就可以在解析这个域名的过程中,通过自身策略实现负载均衡。

图中画了两层的 GSLB,是因为分运营商和地域。不同运营商的客户,可以访问相同运营商机房中的资源,这样不跨运营商访问,有利于提高吞吐量,减少时延。

第一层 GSLB,通过查看请求它的本地 DNS 服务器所在的运营商,就知道用户所在的运营商。假设是移动,通过 CNAME 的方式,通过另一个别名 object.yd.yourcompany.com,告诉本地 DNS 服务器去请求第二层的 GSLB。第二层 GSLB,通过查看请求它的本地 DNS 服务器所在的地址,就知道用户所在的地理位置,然后将距离用户位置比较近的 Region 里面,六个内部负载均衡(SLB,Server Load Balancer)的地址,返回给本地 DNS 服务器。本地 DNS 服务器将结果返回给本地 DNS 解析器。本地 DNS 解析器将结果缓存后,返回给客户端。客户端开始访问属于相同运营商的距离较近的 Region 1 中的对象存储,当然客户端得到了六个 IP 地址,它可以通过负载均衡的方式,随机或者轮询选择一个可用区进行访问。对象存储一般会有三个备份,从而可以实现对存储读写的负载均衡。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。