41次重大发布

0.42.0 2024年8月9日
0.41.1 2023年11月13日
0.40.1 2023年10月18日
0.40.0 2023年6月20日
0.6.0 2019年3月29日

#1546异步

Download history 62051/week @ 2024-04-19 52195/week @ 2024-04-26 51397/week @ 2024-05-03 57161/week @ 2024-05-10 54159/week @ 2024-05-17 64501/week @ 2024-05-24 54425/week @ 2024-05-31 47440/week @ 2024-06-07 51007/week @ 2024-06-14 52823/week @ 2024-06-21 41188/week @ 2024-06-28 43821/week @ 2024-07-05 57402/week @ 2024-07-12 60166/week @ 2024-07-19 58078/week @ 2024-07-26 54941/week @ 2024-08-02

238,521 每月下载量
234 个crate中使用了(6个直接使用)

MIT 许可证

350KB
6.5K SLoC

DNS名称解析

Transport for libp2p.

此crate提供了用于async-stdtokioasync_std::Transporttokio::Transport类型。

《Transport》是一个地址重写封装,它围绕一个内部 Transport 实现了一个 libp2p_core::Transport。组合传输的行为类似于内部传输,除了 libp2p_core::Transport::dial 通过DNS解析给定的 Multiaddr 中的 /dns/.../dns4/.../dns6/.../dnsaddr/... 组件,并将它们替换为解析后的协议(通常是TCP/IP)。

async-std 特性和因此 async_std::Transport 默认启用。Tokio 用户还可以选择启用 tokio-dns-over-rustlstokio-dns-over-https-rustls 特性。有关这些特性的更多信息,请参阅 trust-dns-resolver 的文档。

在 Unix 系统上,如果没有提供自定义配置,trust-dns-resolver 将尝试解析 /etc/resolv.conf 文件。这种方法有一些需要注意的地方

  1. 如果 /etc/resolv.conf 不存在,则此操作失败(甚至会导致恐慌!)。在所有版本的 Android 上都是这种情况。
  2. DNS 配置仅在启动时评估。因此,运行时更改将被忽略。
  3. DNS 解析显然是在进程内完成的,并且因此不使用任何系统 API(如 libc 的 gethostbyname)。这同样在平台(如 Android)上存在问题,在这些平台上,系统 API 隐藏了大量的复杂性。

如果实现需要不同的特性,应考虑提供自己的 Transport 实现,或者使用特定于平台的 API 提取主机的 DNS 配置(如果可能),并提供自定义 ResolverConfig

依赖关系

~9–21MB
~325K SLoC