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

[原创]Linux下的地址解析函数应用实例     Linux下的地址解析函数应用实例作者: 默难 ( monnand@gmail.com )0    引言域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库, 它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息.[1] 目前, 它已经在全球范围内被广泛应用. 从应用的角度上看, 对DNS的访问是通过一个地址解析器(resolver)来完成的. 本文通过讲解一些常用的地址解 阅读详情

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 1034,  RFC 1035,  RFC 1886,  RFC 2671,  RFC 2782,  RFC 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()函数中的回调函数。

阅读Sofia-SIP源码五 源码文件文档化的注释 偶然看到Sofia wiki中某一个头文件的文档页面时,突然觉得像是明白了如何在头文件中写那些Doxygen可以使用的注释内容了。就以sofia-sip/su_types.h头文件为例说明。 #ifndef SU_TYPES_H /** Defined when has been included */ #define SU_TYPES_H上面那张图对应的是上面这段代码。这是介 阅读详情

相关推荐

阅读Sofia-SIP源码 - su模块 - su_log.c/su_log.h

现在进入到su.c文件内看看具体如何做到跨平台效果的。在su.h头文件内为了跨平台目的而重新定义了一套api,通用的socket描述符类,以及相应的结构体。 su_init/su_deinit int su_init(void) { #if HAVE_OPEN_C char apname[60]; su_socket_t s; #endif su_home_threads

Neohan的专栏 1015

FreeSwitch(九):SIP模块

一、基本概念 (1)Sofia-sip:FreeSwitch使用了比较成熟的开源的SIP协议栈。 (2)EndPoint:互联协议接口模块。如SIP、H232. (3)mod_Sofia:实现了SIP中的注册服务器、重定向服务器、媒体服务器等各种功能。他的定位是一个B2BUA,不能实现代理服务器。 (4)SIP profile:在mod_sofia中,SIPprofile相当于SIPUA,通过不同的配置参数配置一个UA的行为。每个SIP profile可以监听不同的IP地址和端口。 (5)GetW

科大小笨的博客 5316

SIP 模块 - mod_sofia

<br />SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解。<br />在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思。是这样的,Sofia-SIP 是由诺基亚公司开发的 SIP 协议栈,它以开源的许可证 LGPL 发布,为了避免重复发明轮子,FreeSWITCH 便直接使用了它。<br />在 FreeSWITCH 中,实现一些互联协议接口的模块称为 Endpoint。FreeSWITH 支持很多的 Endpoint, 如 SIP、H232等。

RTC hacker 8799

sofia sip协议栈

sofia-sip协议栈,可用于开发ip电话,比较轻巧,支持多系统。

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1073

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 555

Ubuntu22.04上如何用Docker一键部署Ragflow+Ollama(附CUDA配置避坑指南)

本文详细介绍了在Ubuntu22.04系统上使用Docker一键部署Ragflow+Ollama的完整流程,特别提供了CUDA配置的避坑指南。从硬件兼容性检查、驱动安装到容器网络配置,手把手教你搭建本地化大模型环境,解决CUDA驱动冲突等常见问题,助力开发者快速构建AI应用开发平台。

weixin_26875109的博客 283

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

自动驾驶必备:5分钟搞懂gPTP如何实现μs级时间同步(附开源代码)

本文深入解析了gPTP协议在自动驾驶系统中实现微秒级时间同步的核心机制与工程实践。针对多传感器融合与跨域协同的严苛需求,文章拆解了gPTP的频率同步、对等延迟测量与时间偏移校正三步流程,并提供了基于linuxptp和AVnu gPTP两大开源代码库的实战配置指南与性能评估方法,助力开发者构建高精度、高可靠的车载时间同步网络。

weixin_29211309的博客 167

Allegro16.6详细教程(二)

3-D Viewer,可以直接在allegro中看到board file的3-D顯示效果。3-D Viewer對於PCB Editor Products,只有環境變數中的OpenGL顯示功能開啟後才有效,而對於APD/SiP是無效的。2.3-D viewer是在一個獨立的視窗中打開的。3-D environment環境支援多種顯示內容的過濾,取景視角和顯示效果的選項,透過遊標可以直接控制放大,移動,翻轉等操作。

axingxiansen的博客 1917

借助Claude实现Playwright的自动化(MCP Server)

MCP Server自己开发也是可以的,现在也有很多开箱即用的MCP Server,可以在https://github.com/modelcontextprotocol/servers中查找。

Criss@陈磊 4227

RT-DETR改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 139

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 阅读Sofia-SIP源码 - su模块 - su_configure.h/su_config.h/su_types.h
下一篇: Sofia-SIP辅助文档九 - Sofia SIP用户代理库 - "ipt" - 工具模块
Neohan
博客等级 码龄26年 33粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值