我正在开发一个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和记录名称?
发布于 2016-01-05 20:37:34
根据RFC 1034的说法
在所有者之后,我们列出了RR的
、类型和类。Class和type使用上面定义的助记符,TTL是type字段前面的一个整数。为了避免解析时的多义性,类型和类助记符是不相交的,TTL是整数,类型助记符总是在最后。为了清楚起见,示例中经常省略IN类和TTL值。
这基本上意味着如果它是一个整数,它就是一个TTL。根据标签( RFC 1912 =主机名)
主机名标签中允许的字符仅为ASCII码字母、数字和‘-’字符。标签可以不是所有的数字,但可以有一个前导数字
有些DNS实现确实允许整型主机名(bind),但是,这在实现时会导致与其他系统的其他交互出现问题。
所以在上面的例子中,10只能是一个TTL。
发布于 2015-12-31 02:17:07
DNS区域文件格式在RFC 1035第5节中定义。您的特定问题的答案在第5.1节中。
https://stackoverflow.com/questions/34530298
复制相似问题