1.DNS
DNS维护域名与对应IP地址的映射关系,提供将域名翻译为IP地址的域名解析功能。
DNS功能
- 维护域名与多个IP地址的映射关系
- 变更IP地址时,仅需在DNS服务器中重新配置最新的IP地址
- 基于DNS实现负载均衡策略以及提出不可用服务器的功能
域名结构
- 顶级域名,后缀部分,最常见的.com .net .cn
- 二级域名,倒数第二部分,域名注册法人或主体,如google.com apple.com
- 三级域名等等
域名服务器
- 根DNS服务器
负责顶级域名的解析,13台IPv4根DNS服务器。 - 顶级DNS服务器
二级域名解析。 - 权威DNS服务器
最终决定一个域名到底被解析成哪个IP地址,是DNS中最核心的部分。 - 本地DNS服务器
不属于任何一层,相当于域名解析的缓存。
域名解析过程
- 查本地缓存,包括浏览器缓存、Hosts文件DNS缓存
- 请求本地域名服务器,有直接返回,无则代理客户端递归完成域名解析
- (本地域名服务器)请求根域名服务器,根据顶级域名例如.com将对应的对应的顶级域名服务器返回
- 请求顶级域名服务器,先查缓存,无则将对应的权威域名服务器地址返回
- 请求权威域名服务器
本地域名服务器缓存的记录格式
- 生存周期TTL,表示缓存时长
- 协议类型
- 记录类型:IPv4 or IPv6
- 记录数据:域名关联的地址信息
DNS存在的问题
- 访问延迟,递归查询引起的
- 本地域名服务器是分地区、分运营商的,不同运营商实现的DNS解析策略不同。最终解析得到的IP地址对于客户端而言可能不是距离最近、最优的访问节点
- DNS劫持问题,通过干预域名服务器把域名解析到错误的IP地址上
2.HTTP DNS
原理:
- 客户端指定HTTP DNS服务器的IP地址,使用HTTP调用域名解析接口/d,并传入待解析的域名和客户端IP地址。HTTP DNS服务器负责向权威DNS服务器发起域名解析请求,并将最优IP地址返回。
- 客户端获取到域名IP地址后,直接向此IP地址发送业务协议请求。
一个HTTP DNS服务的IP地址,如何解决访问延迟?
- 采用如BGP(边界网关协议)等手段让该IP地址在全国各地都做到就近访问。
如何解决高可用性问题
- 在多个数据中心部署了多个HTTP DNS服务节点,任意节点发生故障均可无缝切换到备用节点
HTTP DNS相比于DNS的优势
- 降低域名解析延迟,缩短了域名解析链路
- 防止域名劫持,直接发送到HTTP DNS服务器,绕过了运营商本地DNS服务器
- 调度精确性更高:HTTP DNS获取的是真实客户端的IP地址,而不是本地DNS服务器的IP地址,可以解析出更精确的更近的IP地址
- 快速生效,不受DNS多级缓存影响,域名更新能够更快地覆盖到全量客户端
3.最佳实践
技术方案设计
- 优先使用HTTP DNS尝试解析域名
- 服务HTTP DNS故障,则降级到DNS技术
- 如果DNS故障,则客户端使用预留的域名兜底IP地址作为域名解析结果
策略
- 安全策略,HTTP可以换成HTTPS
- IP地址选取策略:可以将最优IP地址按照顺序下发
- 批量拉取策略:客户端冷启动或网络切换,客户端自动批量拉取域名和IP地址列表的映射数据并缓存