Parsing DNS记录解析:如何区分名称和TTL?

Parsing DNS记录解析:如何区分名称和TTL?,parsing,dns,Parsing,Dns,我正在开发一个DNS区域文件解析器,但对不同的有效格式感到困惑,例如a记录 domain.com. IN A 192.168.0.10 @ IN A 192.168.0.10 IN A 192.168.0.10 abc IN A 192.168.0.10 abc.domain.com. IN A 192.168.0.10 这很有意义,我可能会找到它的解析逻辑,但当TTL出现时,我不知道如何区分记录名和TTL 10 A 192.168.0.111;这里10可以是TTL或记录名 如果

我正在开发一个DNS区域文件解析器,但对不同的有效格式感到困惑,例如a记录

domain.com. IN A 192.168.0.10

@ IN A 192.168.0.10

   IN A 192.168.0.10

abc IN A 192.168.0.10

abc.domain.com. IN A 192.168.0.10
这很有意义,我可能会找到它的解析逻辑,但当TTL出现时,我不知道如何区分记录名和TTL

10 A 192.168.0.111;这里10可以是TTL或记录名

如果记录是(@10 a 192.168.0.10)的缩写形式,则10可以充当TTL 或者,如果实际记录是(192.168.0.10中的10),则它可以充当记录名


有人能弄清楚如何区分TTL和记录名吗。

DNS区域文件格式在第5节中定义。您具体问题的答案见第5.1段。

DNS区域文件格式在第5节中定义。具体问题的答案见第5.1段。

根据

在所有者之后,我们列出了RR的TTL、类型和类。等级 和类型使用上面定义的助记符,TTL是前面定义的整数 类型字段。为了避免语法分析中的歧义,输入和类 助记符是不相交的,TTL是整数,助记符类型是 总是最后一个。示例中经常忽略类内值和TTL值 为了清晰起见

这基本上意味着,如果它是一个整数,它就是一个TTL。根据(标签=主机名)

主机名标签中允许的字符仅为ASCII 字母、数字和“-”字符。标签可能不是全部 数字,但可能有一个前导数字

有些DNS实现确实允许整数主机名(bind),但是,在实现时,这确实会导致与其他系统的其他交互出现问题

在上面的例子中,10只能是TTL

根据

在所有者之后,我们列出了RR的TTL、类型和类。等级 和类型使用上面定义的助记符,TTL是前面定义的整数 类型字段。为了避免语法分析中的歧义,输入和类 助记符是不相交的,TTL是整数,助记符类型是 总是最后一个。示例中经常忽略类内值和TTL值 为了清晰起见

这基本上意味着,如果它是一个整数,它就是一个TTL。根据(标签=主机名)

主机名标签中允许的字符仅为ASCII 字母、数字和“-”字符。标签可能不是全部 数字,但可能有一个前导数字

有些DNS实现确实允许整数主机名(bind),但是,在实现时,这确实会导致与其他系统的其他交互出现问题


在上面的例子中,10只能是TTL

这仅仅是一个链接的答案,并没有做任何事情来真正回答这个问题,所以,就我而言。没有读过RFC的人不应该尝试解析区域文件格式,答案在RFC中用简单的语言表达出来。如果你不同意我的观点,请随意将RFC中的适当段落剪切粘贴到这里的答案上。我觉得这是一个非常低质量的答案。特别是由于区域文件的主要信息来源是中。-有一个关于实现细节的简要描述,其中as 1034解释了语法和语法并不是我想要的确切答案,但确实指向了我目前正在阅读的确切的RFC部分,并希望从中获得意义。到目前为止,我仍然对一个以数字开头的记录感到困惑,数字可以是TTL或主机名。这仅仅是一个链接式的答案,并没有做任何事情来真正回答这个问题,所以,就我而言。没有读过RFC的人不应该尝试解析区域文件格式,答案在RFC中用简单的语言表达出来。如果你不同意我的观点,请随意将RFC中的适当段落剪切粘贴到这里的答案上。我觉得这是一个非常低质量的答案。特别是由于区域文件的主要信息来源是中。-有一个关于实现细节的简要描述,其中as 1034解释了语法和语法并不是我想要的确切答案,但确实指向了我目前正在阅读的确切的RFC部分,并希望从中获得意义。到目前为止,我仍然对以数字开头的记录感到困惑,数字可能是TTL或主机名。这与我想问的非常接近,但是,我现在正在处理MSDNS中的DNS记录,它从一个数字和数字开始,实际上是主机名,而我的解析器在如何将它视为主机名而不是TTL,这两个都是可选的。就像10 A192.1680.111-这非常接近我想问的,但是我现在正在处理MSDNS中的DNS记录,它从一个数字和数字开始,实际上是主机名,我的解析器在如何考虑它是一个主机名而不是TTL,因为两者都是可选的。比如10 A 192.168.0.111