Sofia-SIP辅助文档八 - Sofia SIP用户代理库 - "sresolv" - 异步DNS解析

http://sofia-sip.sourceforge.net/refdocs/sresolv/index.html翻译自官网的这张网页。

有一个博客系列,对于理解DNS有帮助。http://yuelei.blog.51cto.com/202879/106921


模块信息

Sofia sresolv模块是一个异步DNS解析器,并且支持新的EDNS扩展。<sofia-sip/sresolv.h>头文件中申明了利用su_root_t使用本模块的接口。

另一套接口在<sofia-resolv/sres.h>、<sofia-resolv/sres_record.h>、<sofia-resolv/sres_async.h>和<sofia-resolv/sres_cache.h>等头文件中被定义。

参考:
RFC 1034RFC 1035RFC 1886RFC 2671RFC 2782RFC 2915
联系人:
Pekka Pessi < Pekka.Pessi@nokia-email.address.hidden>
状态:
Sofia SIP Core library
许可:
LGPL
待开发事项:
缓存策略和缓存定位

缓存策略必须能够解析那些非授权条目(non-authorized answer简单的理解就是指cache中的answer)。

为何要创建Sofia Resolver?

通常那些开源DNS库要么是同步方式(阻塞了调用线程去做查询),或者它们只能解析主机名。SIP协议除了使用A或AAAA记录(参考:https://www.ezloo.com/2011/04/a_mx_cname_txt_aaaa_ns.html)还使用NAPTR和SRV记录(参考:http://anders.com/cms/264),因此这些DNS库并不完全适合SIP应用。

Sofia resolver使用通常的DNS配置。在类Unix系统下是/etc/resolv.conf文件;在windows系统下是registry注册表。Sofia resolvers在发现配置发生了变化后会重新加载这些配置。

除了配置文件,环境变量SRES_OPTIONS和RES_OPTIONS也可以用来改变解析器的行为。

使用Sofia Resolver

Sofia resolver通常情况下以异步方式运行。即,生成一个请求,发送给DNS服务器,并且立即返回给调用者。当响应收到后请求即结束,sresolv通过一个回调函数通知应用程序。

应用程序可在解析器使用的文件描述符上显式使用poll或select然后调用底层的函数,或者使用su_root(一个指向su_root_t对象的指针)。第三种方式是同步使用解析器:sres_blocking_query()。

sresolv内部使用了一个缓存。查询函数将记录存入缓存。使用缓存就像是直接从DNS服务器得到的结果一样。

请注意,必须为每个线程创建各自独立的解析器对象。但所有的解析器将共享这个缓存。

<sofia-sip/sresolv.h>头文件中的接口

<sofia-sip/sresolv.h>头文件中定义了由su_root驱动的Sofia resolver,这种方式的使用非常简单。创建函数中提供的root对象会安排调用sres_query()sres_query_sockaddr()函数中的回调函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[3\]的内容,你在编译sofia-sip时遇到了一个错误,错误信息是"configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../..""。这个错误通常是由于缺少必要的安装文件导致的。 为了解决这个问题,你可以尝试执行以下步骤: 1. 确保你已经安装了必要的依赖项。根据引用\[1\]中的内容,你可以使用命令"brew install"来安装缺少的依赖项。 2. 检查你的配置文件是否正确。根据引用\[1\]中的内容,你可以尝试使用"./configure"命令,并指定正确的路径和参数来配置sofia-sip。 3. 检查你的安装文件是否存在。根据错误信息,你需要确保"install-sh"、"install.sh"或"shtool"文件存在于当前目录或其父目录中。如果这些文件确实不存在,你可以尝试从其他来源获取它们,并将它们放置在正确的位置。 希望这些步骤能够帮助你解决问题。如果问题仍然存在,请提供更多的信息,以便我能够给出更具体的建议。 #### 引用[.reference_title] - *1* *2* *3* [MAC下build Janus](https://blog.csdn.net/dotphoenix/article/details/104789566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值