22 个版本 (破坏性更新)
0.18.0 | 2024年7月12日 |
---|---|
0.17.0 | 2024年1月19日 |
0.16.0 | 2023年10月21日 |
0.15.0 | 2023年4月8日 |
0.11.1 | 2021年11月20日 |
在 网络编程 中排名 #832
每月下载量 689
在 ch4 中使用
325KB
6.5K SLoC
rsdns - DNS 客户端库
rsdns 是一个用于与 DNS 服务器交互的 Rust 库。
其主要目标是查询域名系统,并以易于消费的 Rust 类型返回结果。
rsdns 力求简单和快速。为了简单,rsdns 保持最小化的 API。为了快速,rsdns 力求允许以最小开销解析 DNS 消息。
有一些包实现了异步 DNS 客户端,但它们是为单个异步运行时构建的。这在某种程度上阻碍了在围绕其他运行时构建的应用程序中使用此类客户端。 rsdns 弥补了这一差距,并真正支持三种不同的异步运行时。此外,rsdns 还有一个独立的同步客户端。
显著特性
- 最小化 API
- 为
tokio
、async-std
和smol
提供异步 DNS 客户端 - 使用
std::net
实现的阻塞客户端 - 解析无变量长度字段的记录时没有内存分配
- 可以将套接字绑定到网络接口的名称(在支持
SO_BINDTODEVICE
的操作系统中可用) - 依赖项最少
ch4
rsdns 随附一个小型命令行工具 ch4。 ch4 使用 rsdns 查询域名系统,并以区域文件格式显示结果。它可以用作 dig 的简单替代品,尤其是在 dig 本身不受支持的平台上。
支持的 RFC
- RFC 1035 - DNS协议的基础:
A
、NS
、TXT
、CNAME
、SOA
、MX
、PTR
、ANY
等。 - RFC 1101、RFC 1123 - 允许域名标签中使用前导数字。
- RFC 2181 - RRSet定义和TTL处理。
- RFC 2671、RFC 6891 - EDNS0。
- RFC 3596 -
AAAA
。 - RFC 7766 - DNS通过TCP传输,TCP消息长度字段处理。
路线图
以下是为近期计划的功能的简要列表。
变更日志
变更日志维护在CHANGELOG.md。
许可
许可方式为以下之一。
- Apache License, Version 2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT或http://opensource.org/licenses/MIT)
您可自行选择。
贡献
除非您明确声明,否则您提交给工作的任何有意贡献,根据Apache-2.0许可证定义,应按上述方式双重许可,无需附加条款或条件。
依赖
~1–13MB
~160K SLoC