如何理解我是否需要放 . DNS SOA rname 记录中标签末尾的符号或@ 符号?

How to understand whether I need to put . sign or @ sign at the end of label in DNS SOA rname record?

我在解析 SOA 记录 RNAME 字段时是否遗漏了任何约定?

例如amazon.com SOA rname 是:root@amazon.com

但是当程序解析它时没有 @ 符号,它被视为常规域标签。

问题是我如何理解我是否需要在标签末尾放置 . 符号或 @ 符号?

For example amazon.com SOA rname is: root@amazon.com

不,不是:

$ dig SOA amazon.com +noall +ans
amazon.com.     14m50s IN SOA dns-external-master.amazon.com. root.amazon.com. (
                2010155050 ; serial
                180        ; refresh (3 minutes)
                60         ; retry (1 minute)
                3024000    ; expire (5 weeks)
                60         ; minimum (1 minute)
                )

MNAME(“名称服务器的 此区域的原始或主要数据源。”) 是 dns-external-master.amazon.com.RNAME(“A 指定邮箱 该区域的负责人。 ") 是 root.example.com(在引号中,来自 RFC 1035 的定义,这是规范的)。

RNAME 中永远不会有 @(更不用说应该对应主机名的 MNAME 中了)。这是因为 @ 在 DNS 中具有特殊含义,它早于我们今天所知道的电子邮件在全球范围内的使用。

您有 RFC 1035 中的示例来解释事情:

@   IN  SOA     VENERA      Action\.domains (
                                 20     ; SERIAL
                                 7200   ; REFRESH
                                 600    ; RETRY
                                 3600000; EXPIRE
                                 60)    ; MINIMUM

[..]

Note the use of the \ character in the SOA RR to specify the responsible
person mailbox "Action.domains@E.ISI.EDU".

在 RFC 1034 的 §3.3 中进一步解释:

For mailboxes, the mapping is slightly more complex.  The usual mail
address <local-part>@<mail-domain> is mapped into a domain name by
converting <local-part> into a single label (regardles of dots it
contains), converting <mail-domain> into a domain name using the usual
text format for domain names (dots denote label breaks), and
concatenating the two to form a single domain name.  Thus the mailbox
HOSTMASTER@SRI-NIC.ARPA is represented as a domain name by
HOSTMASTER.SRI-NIC.ARPA.

请注意,如果您围绕 DNS 做任何事情,特别是任何类型的客户端或服务器,您绝对必须阅读 RFC 1034 和 1035 并多次。是的,它们充满了 holes/ambiguities 和后来发生变化的东西。 但它们一定是你耳中的福音,否则你会遇到很多 DNS 问题。

之后,作为现代资源,RFC 8499 应该是您的圣经,因为它包含与 DNS 术语和资源指针相关的所有内容。