我正在研究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和记录名称。
答案 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节。