普贤教程 › 包参考
dns 包
轻量 DNS 客户端(UDP,A/AAAA/CNAME/NS/MX/TXT/PTR)
对照 Go miekg/dns、Python dnspython 心智:
| 项 | 值 |
|---|---|
| 包名 | dns |
| 版本 | 0.2.0 |
| 可用版本 | 0.1.0 / 0.2.0 |
| 入口 | dns.px |
| 分类 | 网络与协议 |
| 文件数 / 行数 | 1 / 371 |
安装与引入
bash
pxpkg init # 首次 pxpkg add dns@0.2.0 pxpkg install
px
import dns所属分类教程:网络与协议
公开接口
| 函数 | 参数 |
|---|---|
dns_qtype_code | qtype_str |
dns_name_encode | name |
dns_query | server, name, qtype_str |
dns_resolve_a | server, name |
其余 20 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
o_make_query | tid, qname, qtype |
o_u8 | pkt, off |
o_u16 | pkt, off |
o_u32 | pkt, off |
o_read_name | pkt, off |
o_skip_question | pkt |
o_parse_rdata | pkt, off, rdlen, rtype |
o_parse_response | pkt |
dns_qtype_soa | |
dns_resolve_aaaa | server, name |
dns_resolve_mx | server, name |
dns_resolve_txt | server, name |
dns_resolve_cname | server, name |
dns_resolve_ns | server, name |
dns_resolve_ptr | server, name |
dns_query_multi | servers, name, qtype_str |
dns_cache_key | name, qtype_str |
dns_query_cached | cache, server, name, qtype_str, ttl_cache |
dns_reverse_ip | ip |
dns_resolve_reverse | server, ip |
包内说明(源码头注释)
text
============================================================ 普贤生态库:registry/dns —— 轻量 DNS 客户端(UDP,A/AAAA/CNAME/NS/MX/TXT/PTR) ------------------------------------------------------------ 对照 Go miekg/dns、Python dnspython 心智: dns_name_encode(name) → Ok(bytes) | Err # 域名 → 查询标签(RFC 1035 §3.1) dns_query(server, name[, qtype_str]) → Ok(dict) | Err dns_resolve_a(server, name) → Ok([ip...]) | Err # A 记录便捷取 IP 列表 dns_qtype_code(name) → Ok(int) | Err # "A"→1 ... 未知 Err 返回 dict: { status, rcode, answers: [ {name, type, ttl, data} ... ] } status ∈ "noerror" | "nxdomain" | "servfail" | "refused" | "truncated" | "rcode:N" | "error" 说明: - 查询 UDP/53(rd=1, qclass=IN);响应 4096 字节上限;TC 置位 → status="truncated"。 - 名字压缩(0xC0 指针)递归/跳转解析,跳转上限 128 防环。 - rdata 按类型:A → "1.2.3.4";AAAA → IPv6 文本;CNAME/NS/PTR → 域名; MX → "10 mail.example.com.";TXT → [多个字符串]。 - 服务端不可达/超时由调用方控制(无超时 native;udp_recv 阻塞)。 ============================================================