
转自:微点阅读 https://www.weidianyuedu.com/content/0417775689505.html
exosip2协议栈学习总结
1、exosip2协议栈介绍
eXosip是osip2的一个扩展协议集,它部分封装了osip2协议栈,使得它更容易被使用。
使用 sip 协议建立多媒体会话是一个复杂的过程,exosip 库开发的目的在于隐藏这种复杂性。正如它的名称所表示的,eXosip2 - the eXtended osip Library,它扩展了osip 库,实现了一个简单的高层API。通过使用exosip,我们可以避免直接使用osip 带来的困难。需要注意,exosip 并不是对osip 的简单封装包裹,而是扩展。osip 专注于sip 消息的解析,事务状态机的实现,而exosip 则基于osip 实现了call、options、register、publish 等更倾向于功能性的接口。当然,这些实现都是依赖于底层osip 库已有的功能的。
2、exosip的模块构成
2.1 底层连接管理
extl.c、extl_udp.c、extl_tcp.c、extl_dtls.c、extl_tls.c 是与网络连接有关的文件。实现了连接的建立,数据的接收以及发送等相关的接口。其中,extl_udp.c 为使用UDP 连接的实现,extl_tcp.c 为使用TcP 连接的实现。Extl_dtls.c 以及extl_tls.c 都是使用安全socket 连接的实现。 2.2 内部功能模块实现 Jauth.c、jcall.c、jdialog.c、jevents.c、jnotify.c、jpublish.c、jreg.c、jrequest.c、jresponse.c、jsubscribe.c 等文件实现了内部对一些模块的管理,这些模块正如其文件名所表示的,jauth.c
主要是认证,jcall.c 则是通话等等。 2.3 上层API 封装实现
Excall_api.c、exinsubsription_api.c、exmessag_api.c、exoptions_api.c、expublish_api.c、exrefer_api.c、exregister_api.c、exsubsribtion_api.c 这几个以api 为后缀的文件,实现各个子模块的管理。应用程序可以调用这里提供的接口,方便的构造或者发送sip 消息。 2.4 其他
Inet_ntop.c 实现ip 地址的点分十进制与十六进制表示之间的转换。 Jcallback.c 实现一堆回调函数,这些回调函数就是用来注册到osip 库的。我们使用exosip 库,就是避免直接使用osip 库,因为一些工作exosip 已经帮我们做了,所以这样一来,可 以简化上层的实现。
Udp.c 文件主要用来对通过UDP 连接接收到的消息进行分类处理。 Exutilis.c 文件实现一些杂项的函数。有ip 地址到字符串之间的转换,域名的解析等一些 辅助的功能函数。
Exconf.c 文件实现了exosip 的初始化相关的接口,包括后台任务的实现。实际上是 “configuration api”的实现。
Exosip.c 文件实现了与exconf.c 文件相似的功能。比如管道的使用,exosip 上事务的创建和查找,register 和subscribe 的更新,认证信息的处理等。
3、exosip关键数据结构及其说明
1
3.1 eXtl_protocol
eXtl_protocol 是为实现网络通信专门定义的一个数据结构,包括了变量和方法两部分。其中,变量包括了建立网络连接过程中使

本文介绍了exosip2协议栈,它是osip2的扩展,简化了SIP协议的使用。exosip2包含底层连接管理、内部功能模块和上层API封装,提供call、dialog等接口。数据结构如eXtl_protocol、eXosip_call_t等用于管理和通信。初始化涉及exosip_init和eXosip_listen_addr,接收和发送过程涉及事件队列和状态机驱动。exosip与上层应用如linphone通过sal模块进行交互,实现SIP协议处理和媒体流管理。
最低0.47元/天 解锁文章
2100

被折叠的 条评论
为什么被折叠?



