最近更新时间:2023.11.10 14:13:39
首次发布时间:2022.04.25 16:01:51
本文档介绍火山引擎移动解析(HTTPDNS)的工作原理。
在默认情况下,SDK 选择 HTTPDNS 服务端作为优先的解析结果来源。以 HTTPDNS 服务端的解析结果优先的解析过程如下:
如果您只是想把 HTTPDNS 服务端的解析结果作为备选,可以通过 setHttpDnsPrefer 方法(Android SDK)或 isLocalDnsMode 属性(iOS SDK)选择 Local DNS 服务器作为优先的解析结果来源。在以 Local DNS 解析结果优先的解析过程中,HTTPDNS SDK 在客户端缓存中找不到解析记录时,会首先向 Local DNS 服务器发送域名解析请求。其他步骤与以 HTTPDNS 服务端解析结果优先的解析过程类似。
说明
传统 DNS 解析基于 UDP 协议。移动解析 HTTPDNS 基于 HTTP 协议和 HTTPS 协议。在解析耗时上,Local DNS 具有解析延时低的优势,原因是:
为了降低解析延时,移动解析 HTTPDNS 在客户端和服务端提供了很多优化机制。这些优化机制使移动解析 HTTPDNS 的解析延时可以接近 Local DNS 的延时。
客户端优化:HTTPDNS SDK 中集成了很多的请求优化机制。主要的优化机制包括以下内容:
服务端优化:移动解析 HTTPDNS 在服务端优化了网络接入和支持多协议。主要的优化机制包括:
移动解析 HTTPDNS 的HTTPDNS SDK 会在本地内存中缓存解析记录,并通过预解析、自动刷新缓存等方式管理缓存的解析记录。如果 SDK 发起的解析请求命中了缓存,SDK 会直接返回缓存中的解析记录。
您可以参见 HTTPDNS SDK 的解析记录缓存机制 了解详细信息。
HTTPDNS 服务端支持 HTTPDNS 请求和 DoH 请求。
请求类型 | 接入方式 | 是否支持 | 相关文档 |
---|---|---|---|
HTTPDNS | Android SDK | 是 | 开发指南概述 |
iOS SDK | 是 | ||
HTTP API | 是 | ||
浏览器 | 否 | ||
DoH | Android SDK | 是。SDK 默认不开启 DoH。您需要手动开启 DoH。 | 什么是 DoH |
iOS SDK | 否。您需要基于 iOS 的原生功能发送 DoH 请求。 | ||
HTTP API | 否。您需要按照 DoH 协议发送 DNS wire format 的 API 请求。 | ||
浏览器 | 是 |