标签: rfc1035

DNS名称的最大长度是多少

我看到几个提到DNS名称(域名)的最大字符串长度是253个字符.维基百科似乎在引用这篇旧博文:

https://en.wikipedia.org/wiki/Hostname http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx

另一方面,如果我理解RFC,那么这篇文章就错了.DNS名称最大字符串长度应为250个ASCII字符,而不是253,基于以下字节序列,根据RFC1035最多为255个字节:

为了简化实现,域名的总长度(即,标签八位字节和标签长度八位字节)被限制为255个八位字节或更少.

根据RFC1035,域名的组成如下:

域名表示为标签序列,其中每个标签由长度八位字节后跟该八位字节数组成.域名以根的空标签的零长度八位字节终止.注意,该字段可以是奇数个八位字节; 没有使用填充.

这意味着以下字段构成域名:

  1. 标签长度(LL):1个字节
  2. 标签名称(LN):63字节(最大值),因为标签长度最大值只能是00111111(因为两个第一位是为指针等特殊功能保留的)
  3. 空标签(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个字符.

我错过了什么,或者我们应该更新一些维基百科的参考文献?我不确定的唯一部分是关于Null标签是255字节的一部分.

dns hostname rfc rfc1035

25
推荐指数
2
解决办法
3万
查看次数

QD在DNS RFC1035中代表什么?

我只是对DNS的RFC中某些变量的命名法感到好奇:https://www.ietf.org/rfc/rfc1035.txt

虽然我能找到大多数其他缩略词:

  • AN在ANCOUNT似乎代表一种 swer
  • NS在NSCOUNT代表ñ AME 小号 erver
  • AR在ARCOUNT代表一个 dditional [R的eCord

我想知道" QD COUNT" 中" QD "代表什么?

dns rfc nomenclature rfc1035

15
推荐指数
2
解决办法
1545
查看次数

如何使用Python验证域名是否符合RFC 1035?

我正在尝试编写一些代码,这些代码将采用"假定的"域名,并将根据RFC 1035对其进行验证.例如,它需要满足以下规则:

  • 域名不超过253个字符
  • 域字符集[a-z0-9\-]仅为(输入时将域小写)
  • 域名不能包含两个连续的破折号(例如:google--com.com)
  • 最大子域限制为127

我搜索了各种Python模块(例如:tldextract),但无济于事.

如何验证域名是否符合RFC 1035?

python rfc1035

9
推荐指数
1
解决办法
2185
查看次数

我该如何破译dns消息?

我正在编写一个程序来接收dns消息并回复一个适当的答案(一个只回复A记录的简单dns服务器).
但是当我收到消息时,它与1035 RFC中描述的格式不同.
例如,这是nslookup生成的dns查询:

'\xe1\x0c\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x06google\x03com\x00\x00\x01\x00\x01'
Run Code Online (Sandbox Code Playgroud)

我知道1035 RFC中定义的dns头和位,但为什么它应该是十六进制?
我应该将它们视为十六进制数或它们的utf-8等价物吗?
我的回答是否也应该有这种格式?

sockets dns networking network-programming rfc1035

0
推荐指数
1
解决办法
1588
查看次数