问题标签 [rfc1035]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dns - 测试 DNS 服务器
我正在实现 DNS 服务器,我想知道是否有任何工具(最好是在线工具)可以用来测试我是否正确实现了各种功能。我可以用来向 DNS 服务器发出各种请求并测试它是否遵循 rfc 1035 规范的工具。是否有任何“参考测试用例”或类似的东西?还是实施协议的人应该只阅读英语自然语言文档并相信他们在阅读时不会犯任何人为错误?如果一个标准有测试用例而不仅仅是一个描述,它会不会更强大?无论如何,我离题了,请问如何测试 DNS 服务器以使其符合标准?
dns - 附加部分中的 CNAME 记录
RFC 1034+1035 声明 CNAME 记录不应导致额外的部分处理。但是我看到像 wordpress 这样的服务越来越趋向于发送 CNAME 链,其中一部分链位于附加部分。因此,如果不解析附加部分,您将无法解码 DNS 响应。
例子:
注意 chzallnighter.wordpress.com。300 在 CNAME vip-lb.wordpress.com 中。位于附加部分,没有它,您将无法访问答案中的 A 记录。
为什么供应商使用这种策略?它真正购买的是什么?
sockets - 我如何破译dns消息?
我正在编写一个程序来接收 dns 消息并响应适当的答案(一个仅回复 A 记录的简单 dns 服务器)。
但是当我收到消息时,它不像 1035 RFC 中描述的格式。
例如,这是一个由 nslookup 生成的 dns 查询:
我知道 1035 RFC 中定义的 dns 标头和位,但为什么它应该是十六进制的?
我应该将它们视为十六进制数字还是它们的 utf-8 等价物?
我的回复也应该采用这种格式吗?
python - 使用 TCP 和 Scapy 向 DNS 请求添加长度前缀
在关于 DNS 的 RFC 1035 中,它是这样写的:
4.2.2. TCP 使用情况
通过 TCP 连接发送的消息使用服务器端口 53(十进制)。消息以给出消息长度的两字节长度字段为前缀,不包括两字节长度字段。此长度字段允许低级处理在开始解析之前组装完整的消息。
我想用 TCP 发送一个 DNS 请求,但我不知道如何在 DNS 请求之前添加这两个字节。我尝试使用该代码:
但是我的 paquet 被解释为没有 DNS 层的简单 TCP 数据包。
您是否有在 DNS 请求之前添加这两个字节前缀的想法?
谢谢 !
dns - 为什么对 dns 标签施加 63 字节的限制?
DNS rfc 1035 对每个 DNS 标签施加了 63 个字节的限制,并且 DNS 名称的总长度不应超过 255 个字节。为什么对 dns 标签施加 63 字节的限制?系统如何支持无限标签长度?
谢谢。
python - 如何使用 Python 验证域名是否符合 RFC 1035?
我正在尝试编写一些代码,这些代码将采用“假定”域名并根据 RFC 1035 对其进行验证。例如,它需要满足以下规则:
- 域由不超过 253 个字符组成
- 仅域字符集
[a-z0-9\-]
(将输入的域小写) - 域不能包含两个连续的破折号(例如
google--com.com
:) - 最大子域限制为 127
我搜索了各种 Python 模块(例如:tldextract)但无济于事。
如何验证域名是否符合 RFC 1035?
dns - QD 在 DNS RFC1035 中代表什么
我只是对 DNS RFC 中某些变量部分的命名法感到好奇:https ://www.ietf.org/rfc/rfc1035.txt
虽然我能够找到大多数其他首字母缩略词:
- ANCOUNT 中的 AN 似乎代表An swer
- NSCOUNT 中的 NS代表Name S erver
- ARCOUNT 中的AR代表附加记录
我想知道“ QD COUNT”中的“QD”代表什么?
dns - DNS 名称的最大长度是多少
我看到几个提到 DNS 名称(域名)的最大字符串长度为 253 个字符。维基百科似乎指的是这篇旧博客文章:
https://en.wikipedia.org/wiki/ 主机名 http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx
另一方面,如果我理解了 RFC,那么这篇文章是错误的。DNS 名称最大字符串长度应为 250 个 ASCII 字符,而不是 253 个,基于以下字节序列,根据RFC1035 最大为 255 个字节:
为了简化实现,域名的总长度(即标签八位字节和标签长度八位字节)被限制在 255 个八位字节或更少。
根据 RFC1035,域名组成如下:
一个域名,表示为一系列标签,其中每个标签由一个长度八位字节后跟该八位字节数组成。域名以根的空标签的零长度八位字节结束。请注意,该字段可能是奇数个八位字节;不使用填充。
这意味着以下字段构成域名:
- 标签长度(LL):1字节
- 标签名称 ( LN ):63 字节(最大值),因为标签长度最大值只能是 00111111(因为前两个位保留用于指针等特殊功能)
- 空标签(NL):1字节(代表根域)
格式应始终为(与博客文章不同):
LL + LN [ LL + LN ... ] + NL
这意味着最大长度应该是(1 个字节 = 1 个字符 = 1 个八位字节):
LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (63) LL (1) + LN (61) + NL (1) = 255 字节
所以如果我们只计算字符串部分(LN s),我们得到:
63 + 63 + 63 + 61 = 最多 250 个字符。
我是否遗漏了什么,或者我们应该更新一些维基百科参考资料?我不确定的唯一部分是空标签是 255 字节的一部分。
dns - RFC 1035 标头结构
我正在研究 dns 并想了解这些信息,因为我无法完全理解。
标头包含以下字段:
我想知道上面的数字是什么意思。
dns - DNS消息是否将名称填充到偶数字节?
初步说明
是的,我知道 DNS 库和易于使用的 DNS 服务器的存在。我这样做纯粹是为了学术目的,并了解 DNS 查询的工作原理。
问题
我正在查看RFC 1035以了解 DNS 消息的工作原理。我想我或多或少地理解了那份备忘录中的一切。然而,有一件事我无法自主解释。如果您查看第 4.1.3 节,以下是资源记录格式的描述方式:
在这个方案中,NAME
在一个两字节块的末尾结束。这是否意味着它的字节长度应该始终是 2 的倍数?名称的格式在 RFC 前面描述为标签序列,以零长度标签终止。这意味着,根据名称,它的长度可以任意为偶数或奇数。那么是否NAME
需要填充到偶数个字节?如果是这样,我应该如何填充?
我会忽略这个问题并假设不需要填充,如果不是在第 4.1.1 节中指定QNAME
不需要填充。由于他们没有NAME
在答案 RRs 中指定相同的值,我想知道我是否应该假设存在一些差异。