SIP协议简介
1、1 SIP协议定义
SIP(Session Initiation Protocol,会话初始协议)是一种用于创建、修改和终止包括语音、视频、即时消息和多媒体会议等在内的多种会话的协议,它是IETF(Internet Engineering Task Force,互联网工程任务组)制定的一种应用层控制协议,用于实现VoIP(Voice over Internet Protocol,基于IP网络的语音通话)服务。
1、2 SIP协议特点
简单:SIP协议的设计原则是简洁、易于实现和扩展,它采用文本格式进行传输,便于理解和调试。
分布式:SIP协议是一个分布式协议,可以支持多个终端设备之间的通信,每个终端设备都可以作为一个SIP代理服务器,负责处理其他设备的请求和响应。
灵活:SIP协议支持多种媒体类型和编码方式,可以满足不同业务需求,它还支持多种会话建立方式,如单播、组播和多播。
可靠:SIP协议采用了事务机制,确保会话建立、修改和终止的可靠性,事务机制包括事务请求、事务响应和事务确认三个阶段。
eXosip源码库简介
2、1 eXosip源码库概述
eXosip是一个开源的SIP协议栈实现,提供了完整的SIP协议功能,包括信令传输、会话管理、注册、订阅等,它采用C语言编写,具有良好的可移植性和性能,eXosip源码库可以应用于各种嵌入式系统和移动设备上,支持多种操作系统,如Linux、Android和iOS等。
2、2 eXosip源码库结构
eXosip源码库主要包括以下几个模块:
osip2:核心模块,实现了SIP协议的基本功能,如消息解析、状态机管理等。
osip_dialog:会话管理模块,负责维护会话的状态和属性,如呼叫状态、呼叫计时器等。
osip_ua:用户代理模块,实现了SIP协议的用户代理功能,如注册、订阅、呼叫等。
osip_message:消息处理模块,负责处理SIP消息的发送和接收,如请求、响应、通知等。
osip_tcp:TCP传输模块,实现了基于TCP的SIP消息传输功能。
osip_tls:TLS传输模块,实现了基于TLS的SIP消息传输功能。
osip_fdlib:文件描述符操作模块,提供了一套简单的文件描述符操作接口,用于实现异步I/O操作。
eXosip源码库用法分析
3、1 编译和安装eXosip源码库
编译eXosip源码库需要使用GCC编译器和相关依赖库,在Linux系统上,可以使用以下命令进行编译和安装:
下载eXosip源码库 wget https://www.estel.com/download/exosip-x.xx.tar.gz tar -zxvf exosip-x.xx.tar.gz cd exosip-x.xx 配置编译选项 ./configure --prefix=/usr/local --enable-static --disable-shared --with-ssl=openssl --with-zlib=zlib --with-pthreads=posix --with-eXtendedHeaders=no --with-eXtendedErrorMessages=no --with-eXtendedMimeTypes=no --with-eXtendedUriParser=no --with-eXtendedCharsetParser=no --with-eXtendedRfc5626Parser=no --with-eXtendedRfc3986Parser=no --with-eXtendedNetbiosParser=no --with-eXtendedQuotedPrintableParser=no --with-eXtendedQuotedPrintableStream=no --with-eXtendedQuotedPrintableScanner=no --with-eXtendedQuotedPrintableScannerBufferSize=0 --with-eXtendedQuotedPrintableScannerMaxLineLength=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineLength=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffset=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetHex=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetUtf8=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetUtf16be=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetUtf16le=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetUtf32be=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetUtf32le=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64Url=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlPaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePaddedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpacePadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceTruncatedPadding=0 --with-eXtendedQuotedPrintableScannerMaxScannedLineOffsetBase64UrlWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpaceWhiteSpace
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/177781.html