linux – getaddrinfo()vs NAPTR / SRV记录

我对域名解析有疑问.我们可以通过使用函数getaddrinfo()或NAPTR查询,SRV记录查询和A / AAAA记录的过程来解决从DNS到IP地址格式的解析.
1.函数是否使用getaddrinfo()在内部使用NAPTR查询技术?
2.使用函数getaddrinfo()优于其他过程有什么好处?
最佳答案
getaddrinfo()不查询NAPTR或SRV记录,或者确实查询除A和AAAA之外的任何类型的记录. getaddrinfo()是libc主机名解析服务的接口,它被建模为名称和地址之间的简单映射.要了解这种情况,请考虑此解析服务可以根据其配置文件/etc/nsswitch.conf查询/ etc / hosts,或者更少见NIS,LDAP,关系数据库等.请注意这些NSS后端是如何理解NAPTR或SRV记录的.

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

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

转载注明原文:linux – getaddrinfo()vs NAPTR / SRV记录 - 代码日志