DNS域名解析
我们在浏览一个网页时,人们很难去记住访问网页的真实IP地址,通过域名与IP的绑定,实现知道域名即可访问相对应的网页。所以需要一个地址谱,记录所有域名与IP绑定的一个表。这就是DNS服务器。
DNS服务器结构
dns结构为树状层次结构。
根DNS服务器
|---顶级域名DNS服务器(.com .cn .net)
|--权威DNS服务器(xxx.com xxx.cn xxx.net)
DNS解析流程
当我们需要访问www.baidu.com时
// 本地 DNS有缓存时
客户端 => 本地DNS
注* 本地DNS缓存分为两种
1. 本地设备的DNS表,
2. 本地运营商(电信,移动等)DNS表
// 本地 DNS无缓存时
客户端 => 根DNS => 顶级DNS => 权威DNS => 具体IP地址
注* 最后一步是为了负载均衡时反向代理服务器返回集群中某一个IP
全局负载均衡器
对于复杂的应用,尤其是跨地域跨运营商的大型应用,就需要专门的设备来做这件事,就是全局负载均衡器,为了解决不同的运营商客户,可以访问相同运营商机房中的资源。
客户端 => 根DNS => 顶级DNS => 权威DNS => 第一层GSLB => 第二次GSLB => 具体IP地址
第一层GSLB :判断用户是哪个运营商
第二层GSLB :判断用户是哪个区域返回多个内部负载均衡的地址
普通的DNS存在的问题
1.该地址可能已经发送了改变,导致访问不到从而重新进行DNS域名解析这条漫长的路。
2.由于缓存的DNS路径与实际去往的地址路径有偏差,导致“绕远路”。
3.如果A运营商转发给B运营商去处理,B运营商转发给到C运营商去解析,那么就会存在很慢问题
HTTP DNS
HTTP DNS一般用于移动端的一门技术,由于移动端发起的请求时的IP地址可以判断运营商,通过HTTPDNS服务器集群获取对应的DNS域名解析得到最近地址,而不走传统的去本地DNS解析。由于传统的DNS表我们无法去干预它,不能对其进行控制。通过HTTPDNS解决了可以通过客户端/HTTPDNS服务器去控制DNS表的更新及修改。
客户端 => HTTPDNS服务器IP表 =>客户端(缓存到本地)
当手机访问一个地址的时候,检查本地是否缓存,如果这个缓存跟本地的DNS不一样,就交给手机应用去做,由HTTPDNS代替了本地的DNS服务器,而非整个运营商统一做,如何更新,何时更新,手机应用客户端可以与服务器协调来做