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

时间:2015-12-30 13:15:03

标签: 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或记录名称

如果记录是(@ 10 A 192.168.0.10)的简短形式,则

10可以充当TTL 或者如果实际记录是(10 IN A 192.168.0.10)

,它可以作为记录名称

有人可以清楚如何区分TTL和记录名称。

2 个答案:

答案 0 :(得分:0)

根据then you would need to add them as submodule

  

在所有者之后,我们列出了RR的TTL,类型和类。类   和type使用上面定义的助记符,而TTL是之前的整数   类型字段。为了避免解析,类型和类的歧义   助记符是不相交的,TTL是整数,类型助记符是   永远持续。 IN类和TTL值通常在示例中省略   为了清楚起见。

这基本上意味着如果它是一个整数,它就是一个TTL。根据{{​​3}}(label = hostname)

  

主机名标签中的允许字符仅为ASCII      字母,数字和` - '字符。标签可能不是全部      数字,但可能有一个领先的数字

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

所以在上面的例子中,10只能是一个TTL。

答案 1 :(得分:-1)

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