课题研究 域名数据与威胁监测 子课题01 · 第2篇 / 共8篇
01域名注册数据治理 · 协议与数据模型

域名注册数据治理

注册数据治理的前提是吃透数据的来龙去脉。本篇从WHOIS协议的碎片化陷阱讲起,逐层解剖RDAP协议栈——传输安全、查询操作、JSON对象模型(五类对象、事件/状态/角色)、Bootstrap自动发现,再向上游追溯EPP供应协议,最后给出ICANN合同合规要求与实施时间线以及可复用的工具链实操。

RDAPRFC 7483BootstrapEPP数据模型研究状态:研究中
所属专题域名数据与威胁监测
技术基础HTTP(S) / JSON / TCP 43 / TCP 700
本篇定位全文技术基座:第3篇质量评估与第7篇工具链的公共前提

01 · WHOIS协议技术解剖

1.1 协议交互模型

WHOIS(RFC 3912)定义了极为简单的交互模型:客户端通过TCP 43端口连接服务器,发送一个以换行符终止的查询词(域名、IP或句柄),服务器返回一段纯文本响应后主动断开连接。没有会话状态、没有认证、没有加密、没有结构化的错误码——连接异常与"查询无结果"在协议层面无法区分。这种设计在1982年面向人工查询的场景下足够用,但在今天自动化采集的场景下意味着:每次查询都是一次完整的TCP握手,大规模采集的效率与友好性都受到限制;更重要的是,明文传输使查询行为与查询结果对中间人完全可见,这在处理涉密调查目标时是不可接受的。

1.2 输出格式的碎片化陷阱

RFC 3912只规定了传输方式,没有规定输出格式。各注册局与注册商自行决定字段命名、排序、语言与排版——"Registrant""Registrant Name"" registrant_name""注册人"在不同服务器上表达同一含义;"Creation Date""created""Registered on"表达同一时刻。解析器必须为每个数据源单独编写适配规则,任何字段变更都会导致解析静默失败。这是WHOIS时代注册数据工程的最大隐性成本,也是RDAP统一JSON模型的直接动因。

1.3 Thick与Thin数据模型

按注册局保存数据的深度,注册数据服务分为thick与thin两种模型:

维度Thick(厚)模式Thin(薄)模式
数据保存方注册局保存完整注册数据(注册人、联系人、状态等)注册局仅保存域名、注册商、日期、名称服务器等指针信息;完整数据在注册商处
典型代表全部2013年后入根的新gTLD(ICANN强制要求thick);.CN亦由CNNIC集中管理传统gTLD中的.com、.net(Verisign运营)与.edu等
查询特点注册局查询即可看到完整注册档案注册局查询仅显示注册商信息,需再向注册商查询完整数据(二级查询)
治理影响数据集中,治理与监测可在注册局层统一开展数据分散在数百家注册商,批量治理成本高;注册商RDAP服务成为关键采集点

注:2013 RAA及新版注册局协议强制新gTLD采用thick模式;.com/.net的thick化迁移曾在ICANN政策议程中讨论,至今未实施。

1.4 WHOIS与RDAP关键差异对照

维度WHOIS(RFC 3912)RDAP(RFC 7480-7485/9082/9083)
传输层TCP 43端口,明文传输HTTP/HTTPS,继承Web安全基础设施
数据格式无结构纯文本,各注册局格式不一统一JSON对象模型(RFC 7483)
错误语义无法区分"无结果"与"服务故障"标准HTTP状态码与结构化错误(RFC 7481)
访问控制全无或全有,无法分级支持按身份分级访问与Redaction标注(RFC 9537)
服务发现依赖硬编码地址与文本引荐IANA Bootstrap注册表自动发现(RFC 7484/9224)
扩展机制无rdapConformance声明与后续扩展RFC

注:对照要点依据RFC 3912、RFC 7480-7484及IETF公开资料归纳。据ICANN统计,截至2024年12月全球各类RDAP服务的月查询总量已超过100亿次,RDAP已成为注册数据查询的事实主流。

02 · RDAP协议栈详解

2.1 传输与安全(RFC 7480/7481)

RDAP将查询承载于HTTP(S)之上,从而继承了整个Web安全基础设施:TLS加密、HTTP状态码、缓存与压缩。RFC 7481定义了明确的错误语义——400(语法错误)、401/403(未认证/未授权)、404(对象不存在)、408(超时)、409(冲突)、429(超过速率限制)与5xx系列,使客户端能够区分"域名不存在"与"服务器故障",这是WHOIS无法做到的。速率限制(429响应)是RDAP采集工程必须尊重的运行约束,也是本课题数据管道设计中"合规限速"模块的依据。

2.2 查询操作(RFC 7482)

RDAP定义了五类路径查询与对应的批量搜索:

查询路径说明示例
/domain/{domain}查询域名注册档案/domain/example.com
/nameserver/{host}查询名称服务器对象/nameserver/ns1.example.com
/entity/{handle}查询实体(注册人/注册商等)档案/entity/ABC123-EXAMPLE
/ip/{addr|prefix}查询IP网络对象/ip/192.0.2.0/24
/autnum/{asn}查询自治系统号对象/autnum/64500
/domains?name= 等批量搜索(按名称/NS名称/NS IP/实体名/句柄)/domains?name=*.example.com(通配符仅允许置于模式开头)

2021年发布的RFC 9082对查询格式进行了技术更新(如参数编码等细节修订),实现时应以最新文本为准。

2.3 响应语义与版本协商

RDAP响应中的rdapConformance数组声明服务端支持的协议特性,客户端据此判断能否使用扩展功能(如批量搜索、更名后的对象标签查询)。gTLD服务端通常声明包括rdap_level_0、ICANN RDAP Profile在内的多个标识——这为采集端的"服务端能力探测"提供了标准化入口。

03 · RDAP JSON对象模型(RFC 7483)

3.1 五类核心对象

RFC 7483定义了五类可独立查询的核心对象:domain(域名,含LDH名称与Unicode名称、句柄、状态、事件、名称服务器、实体、安全DNS信息)、entity(实体,注册人/注册商/联系人等,支持嵌套)、nameserver(名称服务器)、ip network(IP网络)、autnum(自治系统号)。对象间通过内嵌或链接(link)方式关联,构成注册数据的图结构——这一设计天然支持本课题第3篇的实体解析与关联分析。

3.2 事件与状态模型

模型取值/说明
eventAction(事件)registration(注册)、reregistration、last changed(最后变更)、expiration(到期)、deletion(删除)、reinstatement(恢复)、transfer(转移)、locked / unlocked、last update of RDAP database
domain status(域名状态)active、inactive、locked、hold、pending transfer、pending delete、pending renew、pending restore、pending update等(完整取值以IANA RDAP Status Values注册表为准,与EPP状态码存在映射关系)
entity roles(实体角色)registrant(注册人)、registrar(注册服务机构)、reseller(分销商)、sponsor、proxy(代理服务)、privacy(隐私服务)、abuse(滥用处置)、technical、administrative、billing等

注:完整取值列表以RFC 7483及IANA RDAP Status Values注册表为准,上表为研究中最常用的子集。

3.3 jCard联系方式编码

实体对象的联系方式采用jCard(RFC 7095)——vCard 4.0(RFC 6350)的JSON序列化形式表示。常见属性包括fn(姓名/名称)、adr(地址)、tel(电话)、email(邮箱)、org(组织)。Redaction场景下,公开层实体的这些字段被替换为"已隐藏"占位,仅保留角色与句柄——这一变化直接决定了第3篇数据质量模型中"可联系性"维度的评估方法。

{
  "objectClassName": "domain",
  "handle": "EXAMPLE1-COM",
  "ldhName": "example.com",
  "status": ["active", "client delete prohibited"],
  "events": [
    {"eventAction": "registration", "eventDate": "1995-08-14T04:00:00Z"},
    {"eventAction": "expiration",   "eventDate": "2026-08-13T04:00:00Z"}
  ],
  "entities": [
    {"objectClassName": "entity", "handle": "REG-EXAMPLE",
     "roles": ["registrar"], "vcardArray": ["vcard", [ ... ]]}
  ],
  "rdapConformance": ["rdap_level_0", "icann_rdap_response_profile_0"]
}

说明:上为RDAP域名响应的结构示意(节选自RFC 7483示例风格),非任何真实域名数据。

04 · Bootstrap服务发现(RFC 7484)

4.1 IANA维护的官方注册表

RDAP没有全局根服务器,取而代之的是由IANA维护的一组Bootstrap注册表,发布于https://data.iana.org/rdap/目录下:dns.json(TLD→RDAP服务端映射)、ipv4.json / ipv6.json(地址段→RIR RDAP服务端)、asns.json(ASN→RIR RDAP服务端)以及object-tags.json(实体标签空间映射)。每个注册表以版本号与发布日期标注,客户端应定期同步以获取最新映射。

{
  "version": "1.0",
  "description": "RDAP Bootstrap file for Domain Name System",
  "services": [
    [
      ["com", "net"],
      ["https://rdap.verisign.com/com/v1/",
       "https://rdap.verisign.com/net/v1/"]
    ]
  ]
}

说明:上为dns.json的结构示意(节选),真实文件包含全部已登记TLD的映射。

4.2 查询解析流程

RDAP查询自动发现流程
Bootstrap注册表是全球RDAP生态的"路由表",使客户端无需硬编码任何服务端地址

4.3 辅助跳转服务

rdap.org与RDAP.net等社区服务提供"输入任意域名/IP/ASN即跳转到正确RDAP服务端"的便捷入口;ICANN官方运营的Lookup(lookup.icann.org)则同时提供WHOIS与RDAP双通道查询,并展示Bootstrap解析过程,是验证采集结果的标准工具。工程实践中应以IANA Bootstrap为权威依据,跳转服务仅作交叉验证。

05 · EPP与数据上游(RFC 5730-5734)

RDAP/WHOIS只是数据的"查询出口",注册数据的"上游源头"是EPP(Extensible Provisioning Protocol,可扩展供应协议)。EPP定义了注册服务机构与注册管理机构之间的标准交互:会话建立(hello/login)、域名生命周期操作(create/delete/renew/transfer/update)、信息查询(info)与状态管理,基于TCP 700端口(可配TLS)。注册人数据、状态变更与转移记录在EPP层面产生,随后同步至RDAP/WHOIS查询层。理解EPP的生命周期语义(如pendingTransfer、pendingDelete状态的含义)是正确解读RDAP状态字段的前提,也是注册行为画像(子课题05)中"转移/删除/再注册"时序特征的数据基础。

工程提示:RDAP事件模型中的transfer、deletion、reinstatement等eventAction,与EPP命令和gTLD转移政策(Inter-Registrar Transfer Policy)一一对应。批量采集时建议同时记录事件时间戳序列——同一注册人名下域名的"删除—再注册"循环是恶意基础设施迁移的典型信号。

06 · ICANN合规要求与实施时间线

gTLD注册数据服务的法定框架由ICANN合同体系定义,关键节点如下:

时间事件
2013新版《注册服务机构认证协议》(2013 RAA)生效,附WHOIS准确性计划规范(验证义务)与WDRP衔接条款
2018-05GDPR生效;ICANN董事会通过《gTLD注册数据临时规范》,确立Redaction与分层访问框架
2019-02-27ICANN向全部gTLD注册局与注册商发出RDAP实施通知
2019-08-26RDAP服务实施截止日:全部gTLD注册局与注册商须运营符合技术规范的RDAP服务
2023-08-07
至2024-02-03
RDAP合同义务爬坡期(ramp-up):爬坡期结束后RDAP全面纳入合同合规监督
2024-02-21ICANN发布2024年2月版gTLD RDAP Profile,要求2025年8月20日后实施
2025-01-28WHOIS(端口43)合同义务正式日落,RDAP成为gTLD注册数据的权威来源(.com/.name/.post暂为例外)
2025-08-202024年2月版gTLD RDAP Profile实施节点;同月《gTLD注册数据政策》生效,注册数据治理进入统一政策周期

采集合规提示:RDAP服务条款普遍包含速率限制与使用限制条款;自动化采集必须实现退避重试(429响应)、请求间隔控制与完整审计日志,避免触发封禁或违反合同条款。采集目的应限定于研究与防御场景,不得用于骚扰、歧视性画像或未经同意的商业联系。

07 · 工具链与实操

7.1 公开查询工具

工具说明
ICANN Lookuplookup.icann.org,ICANN官方双通道查询,展示Bootstrap解析过程
rdap.org / RDAP.net输入域名/IP/ASN自动跳转至权威RDAP服务端
IANA Bootstrap注册表data.iana.org/rdap/,服务端映射的权威来源
Verisign RDAP.com/.net注册局RDAP(rdap.verisign.com),thin模式仅含注册商指针
CNNIC WHOIS.CN/.中国国家域名权威WHOIS服务(whois.cnnic.cn);截至本稿.CN尚未纳入IANA RDAP Bootstrap,对.CN的采集以WHOIS为主

7.2 命令行实操示例

查询 .com 域名注册档案(配合 jq 提取关键字段)
curl -s https://rdap.verisign.com/com/v1/domain/example.com \
  | jq '{name: .ldhName, status: .status,
          events: [.events[] | {(.eventAction): .eventDate}],
          registrar: [.entities[] | select(.roles[0]=="registrar") | .vcardArray[1][]? | select(.[0]=="fn") | .[3]]}'
同步 IANA Bootstrap 注册表(每日定时任务)
curl -s https://data.iana.org/rdap/dns.json -o rdap-dns.json
jq '.services | length' rdap-dns.json   # 已登记TLD映射组数

7.3 开发库与注意事项

  • Python:ipwhois等库封装了Bootstrap解析、RDAP查询与WHOIS回退;requests+tenacity可实现限速与重试。
  • 健壮性:必须处理thin模式二级查询(注册局结果→注册商RDAP)、国际化域名(A标签/punycode转换)、以及部分服务端响应中的非标准扩展字段。
  • 留痕:每次采集记录时间戳、查询目标、响应状态与原始报文哈希,支撑第3篇质量审计与第4篇合规审计。

本篇参考来源(第2篇)

[1]

IETF RFC 7482(RDAP查询格式):rfc-editor.org/rfc/rfc7482

[2]

IETF RFC 7483(RDAP JSON响应):rfc-editor.org/rfc/rfc7483

[3]

IETF RFC 7484(Bootstrap):rfc-editor.org/rfc/rfc7484;IANA注册表:data.iana.org/rdap/dns.json

[4]

IETF RFC 7481(RDAP安全与访问控制):rfc-editor.org/rfc/rfc7481

[5]

IETF RFC 5730-5734(EPP协议族,2009):RFC 5730、RFC 5734

[6]

IETF RFC 7095(jCard)、RFC 6350(vCard 4.0):RFC 7095、RFC 6350

[7]

ICANN RDAP Timeline(2019年8月26日实施截止;2024年2月新版Profile):icann.org/resources/pages/rdap-background

[8]

ICANN Lookup官方查询工具:lookup.icann.org;rdap.org跳转服务:rdap.org