使用 DoH 查询域名 —— 以 core.tantanapp.com 为例的实战分析

前言

在现代 iOS 应用中,为了确保 DNS 查询的隐私和完整性,我们可以使用 DoH(DNS over HTTPS) 来查询域名信息。

本文将以 https://cloudflare-dns.com/dns-query?name=core.tantanapp.com&type=A 为例,通过 Postman 发起一次标准的 DoH GET 请求,完整解析请求与响应内容,并深入讲解相关概念,比如:

  • type=A 的含义
  • 响应中 TTL 的作用
  • 结果如何理解
  • 代码+注释逐行讲解
  • 插图帮助理解域名解析跳转流程

请求分析

在 Postman 中,你发送了如下请求:

http 复制代码
GET https://cloudflare-dns.com/dns-query?name=core.tantanapp.com&type=A
Accept: application/dns-json

请求参数详解:

参数 说明
name 要查询的域名(这里是 core.tantanapp.com
type=A 查询类型是 A 记录(即获取 IPv4 地址)
Accept 请求头部,告诉服务器返回 JSON 格式的 DNS 响应

什么是 type=A

在 DNS 协议中,每个查询都有一个 "Type",指明你想要查询什么类型的资源。

Type 含义
A 查询域名对应的 IPv4 地址
AAAA 查询域名对应的 IPv6 地址
CNAME 查询域名的别名记录
MX 查询邮件服务器记录
TXT 查询文本信息记录

在这里,type=A 意味着我们想要查找 core.tantanapp.comIPv4 地址,即标准的访问 IP 地址。

✅ 这通常是 Web App、移动 App 访问服务器最常见的查询类型。


响应内容分析

服务器返回了以下 JSON 数据(已格式化并加注释):

json 复制代码
{
    "Status": 0,            // 0 表示查询成功
    "TC": false,            // TC = Truncated, 没有被截断
    "RD": true,             // RD = Recursion Desired, 允许递归查询
    "RA": true,             // RA = Recursion Available, 服务器支持递归查询
    "AD": false,            // AD = Authenticated Data, 响应未使用 DNSSEC 验证
    "CD": false,            // CD = Checking Disabled, 检查未禁用
    "Question": [
        {
            "name": "core.tantanapp.com",
            "type": 1          // 1 = A记录
        }
    ],
    "Answer": [
        {
            "name": "core.tantanapp.com",
            "type": 5,         // 5 = CNAME(别名)
            "TTL": 67,         // 生存时间,秒
            "data": "core.cf.vip.tantanapp.com."
        },
        {
            "name": "core.cf.vip.tantanapp.com",
            "type": 5,
            "TTL": 67,
            "data": "core.tantanapp.com.cdn.cloudflare.net."
        },
        {
            "name": "core.tantanapp.com.cdn.cloudflare.net",
            "type": 1,
            "TTL": 247,
            "data": "104.18.11.175"
        },
        {
            "name": "core.tantanapp.com.cdn.cloudflare.net",
            "type": 1,
            "TTL": 247,
            "data": "104.18.10.175"
        }
    ]
}

响应字段重点解释

1. Status = 0

  • 0 表示查询成功。
  • 如果返回其他值,比如 3(Name Error),就表示域名不存在。

2. Answer 数组

DNS 查询的最终结果都在 Answer 中。

第一条记录:
  • name: core.tantanapp.com
  • type: 5 → 表示是 CNAME(别名)记录
  • data: core.cf.vip.tantanapp.com.

👉 说明 core.tantanapp.com 并没有直接绑定 IP,而是指向了 core.cf.vip.tantanapp.com

第二条记录:
  • name: core.cf.vip.tantanapp.com
  • type: 5 → 再次是 CNAME(别名)
  • data: core.tantanapp.com.cdn.cloudflare.net

👉 继续跳转,最终指向 Cloudflare 的 CDN 域名。

第三、四条记录:
  • name: core.tantanapp.com.cdn.cloudflare.net
  • type: 1 → 这才是最终的 A 记录
  • data: 104.18.11.175104.18.10.175

👉 终于拿到最终的服务器 IPv4 地址!


什么是 TTL?

每条记录里都有一个 TTL 字段,比如 67 秒 或 247 秒。

  • TTL(Time To Live) 表示这条 DNS 记录在缓存中可以保存多久(单位:秒)。
  • 过期后客户端必须重新查询 DNS,获取最新的 IP 地址。

📌 举例:

如果 TTL = 67,表示 67 秒内你都可以直接使用缓存 IP,不用再次请求 DNS 服务器。

这可以显著减少延迟和服务器压力,同时在 IP 改变时能够及时刷新。


整体解析跳转流程图

为了更直观理解,我们用一个简单流程图总结整个解析过程:

复制代码
[core.tantanapp.com]
         ↓ (CNAME)
[core.cf.vip.tantanapp.com]
         ↓ (CNAME)
[core.tantanapp.com.cdn.cloudflare.net]
         ↓ (A记录)
[104.18.11.175] 和 [104.18.10.175]

小结

通过本次 Postman 测试,我们清楚了解了:

项目 内容
查询类型 A,查询域名对应的 IPv4 地址
返回数据 包含多层 CNAME 跳转,最终指向真实 IP
TTL 每条记录缓存的有效时间(秒)
使用场景 验证 App 的请求路径、抵御 DNS 劫持、缓存优化

掌握这种查询和解析流程,对于网络安全、性能优化和网络故障排查,都是非常实用的技能!


相关推荐
Johny_Zhao2 小时前
VMware Workstation 部署企业级 AD 域、DNS、DHCP 系统操作指南
网络·人工智能·网络安全·信息安全·云计算·ad·dns·dhcp·系统运维·itsm
利刃大大18 小时前
【网络编程】十三、DNS && ICMP && NAT/NAPT && 代理服务器
服务器·网络·dns·nat·代理·icmp
言之。18 小时前
CentOS7 BIND9域名解析失败排查指南
dns
ii_best19 小时前
按键精灵ios/安卓辅助工具高级函数OcrEx文字识别(增强版)脚本开发介绍
android·ios
Digitally1 天前
如何从不同位置将联系人导入 iPhone(完整指南)
ios·iphone
咕噜企业签名分发-淼淼1 天前
iOS苹果和Android安卓测试APP应用程序的区别差异
android·ios·cocoa
I烟雨云渊T1 天前
iOS APP启动页及广告页的实现
ios
鸿蒙布道师1 天前
鸿蒙NEXT开发动画案例9
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
羑悻的小杀马特2 天前
iOS:重新定义移动交互,引领智能生活新潮流
macos·ios·objective-c·cocoa·mac
I烟雨云渊T2 天前
iOS热更新技术要点与风险分析
ios