趣谈网络协议学习笔记——DNS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Q52077987/article/details/81746929

DNS就是将域名转换成IP的服务。

DNS服务器是一个树状结构,分为根DNS,顶级域DNS和权威DNS服务器,再下边就是分层的本地DNS服务器节点。

DNS解析流程

  1. 浏览器在访问一个域名之前,比如www.163.com,就会问本地的DNS服务器这个域名的IP是啥?本地的DNS服务器有网络服务商提供,通过DHCP服务获取(以前还常常自己配置电脑上的DNS服务器地址,最近一些年没有手动操作过)
  2. 本地的DNS服务器如果缓存了这个域名的IP就直接给返回,如果没有,就会问根域名服务器。根域名服务器做域名解析,但能指明一条道路。
  3. 根DNS收到来自本地的DNS请求,发现后缀是.com,就告诉本地DNS服务器去.com的顶级域名服务器查询。
  4. 本地DNS服务器再去问顶级域名服务器www.163.com 的IP。
  5. 顶级域名服务器会告诉本地服务器负责163.com的权威DNS服务器的地址。
  6. 本地DNS服务器再去问权威域名服务器www.163.com 的IP。
  7. 权威DNS会将163.com的IP告诉本地DNS服务器。
  8. 本地DNS服务器再将IP告诉客户端。

这里写图片描述
(图片来自极客时间刘超专栏《趣谈网络协议学习笔记》)

负载均衡

一个服务部署在多台机器上,在本地搭建的DNS服务器,外部通过域名来访问服务,DNS服务器可以根据调度策略来做本地负载均衡。

如果服务部署在多个机房,可以用GSLB做全局的负载均衡,就近访问服务。一般通过DNS服务的CNAME的配置,起一个别名。一般有两层负载均衡,分别考虑运营商和地理位置。
这里写图片描述

(图片来自极客时间刘超专栏《趣谈网络协议学习笔记》)

使用DNS有以下几个问题:
域名缓存问题

本地的DNS服务器缓存的域名,但是域名绑定的IP变了,本地的DNS不能及时更新,造成服务不可用。另外,由于本地DNS的域名缓存,对负载均衡也有一定的干扰。有些运营商会缓存一些静态页面,DNS会将域名指向这些缓存服务器,当原来的页面变化了,运营商的缓存服务器不一定能及时更新,反正不是掌握在自己手里。

域名转发问题

扫描二维码关注公众号,回复: 2974402 查看本文章

有些DNS服务器自己并不去权威的DNS服务器查询,而是将请求“外包”给其他DNS服务器,这将导致权威DNS服务器对请求的地址运营商判断失误,可能返回费用更高的路径。

域名更新问题

其实还是缓存引起的,就是当机房出了问题,即使修改了权威DNS绑定的IP,也可能需要很长时间生效,这对于有高可用要求的服务是不能接受的。

解决的办法就是搭建自己的DNS解析服务集群,HTTPDNS,分布在多个地点和多个运营商。当客户端需要DNS解析的时候,直接请求这个服务集群得到就近的地址。

一般移动客户端应用会使用HTTPDNS,客户端使用自己的HTTPDNS SDK,绕过传统DNS,访问自己的HTTPDNS服务,来获取自己需要的业务的服务IP,这样整个域名解析,流量调度,负载均衡还有缓存机制都掌握在自己手里。

猜你喜欢

转载自blog.csdn.net/Q52077987/article/details/81746929