• 主页
友链

  • 主页

聊聊RDAP协议

2023-10-08

最近在工作中接触到了RDAP协议,然而关于这个协议的中文资料并不多。因此,简单研究了相关内容完成了一个简单的分享,希望能对读者有所帮助。

Whois与RDAP

要谈RDAP,离不开Whois协议。作为互联网早期的一种协议,Whois在获取域名和IP地址注册信息方面发挥了重要作用。然而,随着互联网的发展,我们发现Whois协议存在一些明显的缺陷:

  • 查询和响应格式不统一:这使得数据解析变得困难。
  • 缺乏用户身份验证或访问控制:这意味着无法实现差异化访问,从而在一定程度上影响了数据的安全性。
  • 不支持国际化:Whois无法支持国际化域名 (IDN)

为了解决这些问题,Registration Data Access Protocol (RDAP) 协议应运而生。RDAP协议是一种用于获取域名和IP地址注册信息的新协议,旨在取代传统的WHOIS协议,提供更加标准化、结构化和安全的注册数据访问方式。

与Whois对应,RDAP协议具有以下特点:

  • 结构化数据:RDAP返回的数据以JSON格式呈现,相比于WHOIS的文本格式,更易于解析和处理。
  • 统一的查询语法:RDAP使用统一的查询语法,使得查询语句在不同的注册机构之间具有一致性。
  • 访问控制和安全性:RDAP支持访问控制和身份验证机制,可以提供更安全的注册数据访问。
  • 国际化支持:RDAP支持国际化域名和多语言字符集,可以更好地处理多语言环境下的域名查询。

协议细节

在没有更多资料的情况下,一个合适的了解协议的方式是从RFC入手,容易搜到,和RDAP协议相关的RFC有RFC 7480-7484共五份文档。这五份文档详细地描述了RDAP协议的各个方面。

第一份协议草案 RFC7480 HTTP Usage in the Registration Data Access Protocol (RDAP) 是RDAP协议的基础,描述了RDAP的基本交互方式。RDAP协议主要是借用了相对成熟的HTTP协议来进行数据交互,放弃了Whois协议的专有协议类型。

第二份协议草案 RFC7481 Security Services for the Registration Data Access Protocol (RDAP) 主要关注了RDAP协议的安全性,包括身份验证、访问控制和数据保护等。这些都是Whois协议所缺乏的。在设计RDAP协议时,开发者直接复用了HTTP/HTTPS标准的能力,以实现访问控制、可用性、数据完整性等功能。

第三份协议草案 RFC7482 Registration Data Access Protocol (RDAP) Query Format 定义了RDAP的完整交互方式,包括IP、ASN、域名、实体等查询格式。此外,RFC 7482 还引入了搜索的能力,并考虑了国际化域名(IDN)的支持。

具体来说:IP、ASN、域名、实体等查询格式如下:

1
2
3
4
5
6
<server>/ip/<IP address> or ip/<CIDR prefix>/<CIDR length>
<server>/autnum/<autonomous system number>
<server>/domain/<domain name>
<server>/nameserver/<nameserver name>
<server>/entity/<handle>
<server>/help

请求有了,接下来是响应,第四份协议草案 RFC7483 Registration Data Access Protocol (RDAP) Query Format 定义了RDAP的响应格式,给出了相对标准的JSON定义与数据实体定义。

然而,在使用RDAP协议时,我们可能会遇到一个问题:我们应该向哪个服务器发送查询请求?这是因为存在多个RDAP服务器。例如,如果我们向亚太地区的服务器请求欧洲地区的IP,显然是得不到回应的。为了解决这个问题,RFC7484 Finding the Authoritative Registration Data (RDAP) Service 提出了 bootstrap 标准,会对响应做自动跳转。

例如请求 https://rdap-bootstrap.arin.net/bootstrap/ip/1.1.1.1 会自动跳转到 https://rdap.apnic.net/ip/1.1.1.1 。

总的来说,RFC 7480-7484 五份文档从协议蓝图到安全性考虑、请求与响应、工程实现给出了详细的描述,对于理解RDAP协议非常有帮助。

协议使用

如果想在命令行中使用RDAP协议,可以使用开源组织提供的工具,如 https://github.com/openrdap/rdap 。

如果需要在项目中集成RDAP协议,可以参考pypi的库,如 https://github.com/20c/rdap 。

如果只是想简单地使用RDAP协议,可以在浏览器中直接输入查询URL,如 https://rdap.apnic.net/ip/1.1.1.1 。

参考链接

[1] Registration Data Access Protocol (RDAP): https://www.icann.org/rdap
[2] RFC7480 HTTP Usage in the Registration Data Access Protocol (RDAP): https://datatracker.ietf.org/doc/html/rfc7480
[3] RFC7481 Security Services for the Registration Data Access Protocol (RDAP): https://datatracker.ietf.org/doc/html/rfc7481
[4] RFC7482 Registration Data Access Protocol (RDAP) Query Format: https://datatracker.ietf.org/doc/html/rfc7482
[5] RFC7483 Registration Data Access Protocol (RDAP) Query Format: https://datatracker.ietf.org/doc/html/rfc7483
[6] RFC7484 Finding the Authoritative Registration Data (RDAP) Service: https://datatracker.ietf.org/doc/html/rfc7484

  • protocol

扫一扫,分享到微信

微信分享二维码
服务识别方案探索:单TCP流识别
基于时序的泛解析域名判断
© 2024 Lyle
Hexo Theme Yilia by Litten
  • 友链
  • rebirth