You need to enable JavaScript to run this app.
导航
如何接入移动解析 HTTPDNS
最近更新时间:2024.09.18 10:48:20首次发布时间:2023.06.06 20:23:22

本文档介绍如何在您的客户端 App 中接入火山引擎移动解析(HTTPDNS)。

您可以在您的 App 服务端或客户端接入移动解析 HTTPDNS。

在服务端接入移动解析 HTTPDNS

在以下情况下,您可以在 App 服务端接入移动解析 HTTPDNS:

  • 您在 App 服务端已有可用于向客户端下发 DNS 解析结果的自建系统或通道。推荐您使用 HTTP API 或 DoH。参见 HTTP API 集成方案概述什么是 DoH
  • 您在 App 客户端配置了 DNS 转发服务,可以把客户端的 DNS 查询请求转发到指定的 DNS 服务器。推荐您使用 DoH。参见 什么是 DoH

在客户端接入移动解析 HTTPDNS

客户端的接入方案取决于您的 App 所使用的网络库是否允许自定义 Stub Resolver 及客户端系统是否支持 DoH 协议。

App 客户端在发送一个网络请求请求时,会首先调用 App 客户端中集成的网络库。

说明

网络库是负责执行网络请求的模块,可以是 libcurl、OkHttp、Cronet、NSURLSession 等网络库。不同的网络库在实现 DNS 功能的方式不同。

网络库默认通过系统 Stub Resolver 向递归 DNS 服务器发送 DNS 查询请求,获取域名的 IP 地址。递归 DNS 服务器一般是 Local DNS 服务器或公共 DNS 服务器。

说明

Stub Resolver 是网络库内部进行 DNS 解析的模块,可分类为系统 Stub Resolver 和自定义 Stub Resolver。

  • 系统 Stub Resolver:包括 glibc 的 getaddrinfo(),gethostbyname() 等。默认情况下,终端设备使用 ISP 提供的 Local DNS 服务器。Local DNS 服务器的地址是通过 DHCP 协议下发的。
  • 自定义 Stub Resolver:部分网络库支持自定义 DNS,如 curl 的 "--resolve" 选项、OKHTTP 的 OkHttpClient.Builder().dns() 方法等。

如果您希望网络库可以使用移动解析 HTTPDNS 服务端返回的解析结果,火山引擎推荐您按照以下顺序考虑接入方案:

  • 如果网络库允许您自定义 Stub Resolver:您可以通过 HTTPDNS SDK 为您的移动端 App 自定义一个 Stub Resolver。该自定义 Stub Resolver 可以向网络库注入移动解析 HTTPDNS 服务端返回的解析结果。参见 SDK 概览 了解什么是 HTTPDNS SDK。
  • 如果网络库不允许您自定义 Stub Resolver
    • 如果您可以接受更换 App 客户端的网络库:您可以使用 MNet SDK。MNet SDK 是一个支持 Android、iOS 等平台的网络库,可以实现 HTTPDNS 功能。您可以 提交工单 联系我们获取 MNet SDK。
    • 如果您不能接受更换 App 客户端的网络库
      • 如果客户端系统允许使用 DoH 协议:在系统侧启用 DoH 协议。这样,系统 Stub Resolver 就会通过 DoH 协议获取移动解析 HTTPDNS 服务端返回的解析结果。参见 什么是 DoH
      • 如果客户端系统不允许使用 DoH 协议:您需要把网络库的请求改写为 IP 直连请求。您需要从网络库外部自行指定 DNS 解析结果,包括将 URL 中的域名改为 IP 地址,并且自行在 SSL、Cookie、302 等环节做相应手动适配。

下图以一个 HTTP 请求为例,演示了如何通过自定义 Stub Resolver、DoH 协议或 IP 直连请求确保网络库使用移动解析 HTTPDNS 服务端返回的解析结果。
图片