getaddrinfo()vs NAPTR/SRV记录

use*_*084 4 linux dns

我对域名解析有疑问.我们可以通过使用函数getaddrinfo()或NAPTR查询,SRV记录查询和A/AAAA记录的过程来解决从DNS到IP地址格式的解析.1.函数是否使用getaddrinfo()在内部使用NAPTR查询技术?2.使用函数getaddrinfo()优于其他过程有什么好处?

Cel*_*ada 7

getaddrinfo()不查询NAPTRSRV记录,或者确实查询除AAAAA之外的任何类型的记录.getaddrinfo()是libc的主机名解析服务的接口,它被建模为名称和地址之间的简单映射.要了解这种情况,请考虑此解析服务可以/etc/hosts根据其配置文件咨询或更少见NIS +,LDAP,关系数据库等/etc/nsswitch.conf.请注意这些NSS后端是如何理解NAPTRSRV记录的.

只有DNS实现NAPTRSRV记录,如果要查询它们,则必须使用API​​直接查询DNS(查看res_init()和相关函数,或更有趣的第三方库,如支持非阻塞操作的c-ares)).您无法使用libc主机名解析服务来执行此操作.

至于你的第二个问题,使用的优点getaddrinfo()是:(1)它更容易使用,(2)你会找到用户可能插入的条目,/etc/hosts如果你直接查询DNS,你将会错过.