![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SIP
文章平均质量分 70
wh8_2011
这个作者很懒,什么都没留下…
展开
-
pjsip代码分析(1)——modules框架
今天,来谈一下pjsip 模块框架(module framework)。弄清楚这个概念,就可以轻松地分析pjsip的sip消息的分发处理。 概念: PJSIP模块框架的概念非常重要,负责在各组件之间分发sip消息。 对于接收或发送的sip消息,pjsip_endpoint根据优先级由高到低,依次分发消息到各module进行处理。 优先级的说明: ...转载 2020-03-20 21:58:58 · 904 阅读 · 0 评论 -
sipp帮助
sipp帮助文档:http://sipp.sourceforge.net/doc/reference.html#uac_with_media原创 2020-01-04 11:41:52 · 244 阅读 · 0 评论 -
SIPp工具Linux下安装
一、SIPp介绍SIPp是一个测试SIP协议性能的工具软件,这是一个开源软件。它可使用INVITE和B YE建立和释放多个呼叫。它也可以读XML的场景文件,即描述任何性能测试的配置文件。它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。周期性地把CSV统计数据转储,在多个套接字上的TCP和UDP,利用重新传输管理的多路复用。在场景定义文件中可以使用正规表达式,动态调整...转载 2019-12-24 20:42:45 · 589 阅读 · 0 评论 -
对话(Dialog)
一个UA的核心概念就是对话。对话是表现为两个用户代理(UA)之间的持续一段时间的点对点的SIP关系。对话(Dialog)使得用户代理之间的消息顺序传递和两个用户代理之间的请求正确路由更加容易。对话(Dialog)可以认为是对SIP消息解释的上下文关系。本节将讨论如何通过请求和应答来创建一个对话(Dialog),并且在对话(Dialog)中如何发起和响应后续的请求。一个对话在参与对话的UA中都有原创 2015-11-02 00:49:36 · 829 阅读 · 0 评论 -
结束一个会话
本节描述了结束由SIP建立的会话的步骤。会话的状态和对话的状态是密切相关的。当一个会话由INVITE建立的时候,每一个由不同UAS的1xx或者2xx的应答创建一个对话,并且当完成了会话描述的请求/应答(offer/answer)交互之后,它也就创建了一个会话。这就是说,每一个会话都和单个对话“相关”-会话是对话所创建的。如果初始化的INVITE产生了非2xx的终结应答,它也终结了由本次请求创建的任原创 2015-11-22 10:41:23 · 2038 阅读 · 0 评论 -
更改已经存在的会话
一个成功的INVITE请求既会创建一个基于两个用户之间的对话,也会基于请求/应答模式(offer-answer)创建一个会话。上一节讲述了如何通过target refresh 请求来修改一个现存的会话(比如,修改对话的remote target URI)。本节描述如何修改实际的会话(session)。这个修改可以包括修改地址或者端口、增加媒体流、删除媒体流等等。这是通过发起新的INVITE请求原创 2015-11-15 22:53:14 · 876 阅读 · 0 评论 -
CANCEL
取消一个请求对所有方法处理请求和处理应答UA的通用处理过程。我们讨论一个通用的方法,CANCEL。CANCEL请求,就像名字所说的,是用来取消客户端发起的上一个请求。特别是,它请求UAS去终止上一个请求并且对上一个请求产生一个错误的应答。CANCEL对UAS已经给出终结应答的请求无效。所以,CANCEL请求的最大用处是取消需要服务器长时间处理的请求。也就是说,CANCEL最常用来处理取消INV原创 2015-10-11 21:51:46 · 1019 阅读 · 0 评论 -
OPTIONS
查询能力SIP方法OPTIONS允许一个UA来查询另外一个UA或者proxy服务器的能力。提供客户端的一个手段,来查询服务端支持的方法、内容类型、扩展和codecs等等。比如,客户端试图在INVITE请求中增加一个请求字段选项的时候,它并不知道对方UAS能否支持这个选项,它就可以用OPTIONS来查询一下UAS,通过检查OPTIONS返回的Supported头域,就可以知道是否支持这个选项。所原创 2015-10-25 16:37:28 · 610 阅读 · 0 评论 -
SIP响应码
1XX 临时响应100 Trying UAS应经收到请求,UAC不需要重发请求,并且UAS正在处理该请求 180 Ringing UAS已经收到请求,UAS开始振铃,等待UAS接听,回复200OK。181 Call is being forwarded 呼叫前传,UAC的呼叫被重新路由到另外一个目的地 182 Queued UAS当前忙,但是对方不想直接原创 2015-10-09 17:54:26 · 1050 阅读 · 0 评论 -
SIP路由机制解析
现在来介绍一下SIP中的路由机制。总的来说,SIP中存在两种路由场景:1、请求消息的路由;2、响应消息的路由 ,响应消息的路由非常简单,就是完全依靠Via来完成的,具体请见我关于RFC3261中会话流程的分析。下面我们只谈SIP请求消息的路由。 首先,我们要搞清楚什么是严格路由和松散路由。 严格路由(Strict Routing):可以理解为比较“死板”的理由机制,这种路由机制在SIP原创 2015-09-19 18:18:59 · 3093 阅读 · 0 评论 -
初始化一个会话
概述当UAC希望初始化一个会话,它首先构造一个INVITE请求。这个INVITE请求一个服务器来建立一个会话。这个请求可能会由proxy层层转发,最后到达一个或者多个可能能够处理这个邀请的UAS。这些UAS需要看看是否用户接收这个邀请。UAS可以接收这个请求,通过发送2xx应答。如果邀请被拒绝,根据拒绝的原因,3xx,4xx,5xx或者6xx应答将会发送。在发送终结应答之前,UAS可以发送一些原创 2015-11-07 22:02:58 · 963 阅读 · 0 评论 -
require头域
Require介绍如果请求的各项要素通过了UAS的判定,那么如果存在Require头域,接下来就是检查Require头域。Require头域是UAC用来通知UAS应该用什么样的SIP扩展来处理本请求的。如果UAS不支持请求的Require头域中的option-tag列表,那就必须产生一个420应答(错误的扩展)。并且UAS必须添上Unsupported头域,里边填上刚才接收到的请求的Requi原创 2015-10-18 20:21:39 · 985 阅读 · 0 评论 -
VIA头域
Via头域是标志了用于事务传输的传输设备,并且也标志了应答送回的地址。只有当需要通过选择传输设备到达下一个节点(hop)的时候,才需要在头域中包含Via域。当UAC创建一个请求,它必须在头域中添加一个Via域。protocol 名字和protocol版本必须分别是SIP和2.0。Via头域必须包含一个branch参数。这个参数用于区分请求创建的事务。这个参数客户端和服务器都会使用。除了CANCEL原创 2015-09-28 08:37:04 · 2363 阅读 · 0 评论 -
P-Associated-URI处理流程
UA 的处理流程一个 UAC 可能在 REGISTER 的 200 OK 响应中收到 P-Associated-URI 头字段. 该字段的出现意味着 registrar 支持该项扩展.头字段的值包含 AOR 的 0 个或多个关联 URIs. UAC 可以接下来的请求中可以使用任意一个来填写 From 头字段或为标识 calling party 提供信息的其他 SIP 头字段.UAC 可检测原创 2015-09-05 18:13:43 · 1926 阅读 · 0 评论 -
P-Called-Party-ID头域
典型的proxy 服务器在路由 INVITE 请求到目标时插入 P-Called-Party-ID 头域.该头域用 porxy 收到请求的 Request-URI 填写。UAS 从几个已注册的 AORs 中标识出是会话邀请发送给哪个AOR。 3GPP IMS 的用户可以获得一个或多个标识用户的 SIP URIs(AOR)。例如:一个用户可以获得一个业务 SIP URI 和一个个人 SIP UR原创 2015-07-25 09:19:43 · 1846 阅读 · 0 评论 -
IPBX和话机对接
某厂家的话机和IPBX进行对接问题:1. 该话机作为主叫方,呼叫可以正常建立2. 该话机作为被叫方,呼叫无法建立,IPBX发送INVITE消息给该话机,该话机回复400详细消息如下:IPBX->P1INVITEsip:302@172.16.251.157 SIP/2.0Via:SIP/2.0/UDP 172.16.250.127:5060;branch=原创 2015-08-16 19:35:09 · 1637 阅读 · 0 评论 -
通讯(transport)
通讯层负责请求和应答在网络上的实际传输。这包括了在面向连接的通讯方式下的请求和应答所使用的连接管理。 通讯层负责管理像TCP/SCTP之类通讯协议的长连接,或者在这些协议上的TLS连接,并且包括管理打开这些连接的使用者的管理。这包括了客户端或者服务端,通讯层打开的连接,这样在客户端和服务端通讯函数可以共享这些连接。这些连接采用一组用远端的地址,端口,通讯协议标志的索引来进行管理。当通讯层打原创 2015-12-13 21:20:38 · 664 阅读 · 0 评论 -
proxy行为
1.概述SIP代理服务器是路由SIP请求到UAS的,并且路由SIP应答到UAC。一个请求可能通过多个proxy到达UAS。每一个都会做出路由决定,在发送给下一个节点前对请求做一点修改。应答会通过和请求相同的proxy路径,只是顺序是逆序的。proxy是一个SIP逻辑上的概念。当接收到一个请求,在做代理服务器之前,首先应该有一个部件来决定是否自身需要响应这个请求。例如,在作为代理服务器处理请原创 2015-11-29 22:24:25 · 1758 阅读 · 0 评论 -
pjsip workshop
pjsip PJSIP 主要构成结构图 库的介绍 1. 最基础的库是PJLIB 2. 在基础库的基础上开发出8个不同作用的lib库 3. pjsua API 是可以调用的抽象的接口 1. 不同的lib库会放在相应库的lib文件夹下面 2. 如果想单独使用库 可以看 每个库的参考手册Reference Manuals PJSUA2PJSUA2是PJSUA...转载 2018-10-24 07:14:17 · 1131 阅读 · 0 评论 -
CSipsimple最新版本编译
原链:http://blog.csdn.net/jwzhangjie/article/details/12996325CSipsimple是依赖pjsip协议,官网http://code.google.com/p/csipsimple/,官网上也有已经编译好的apk,对于编译CSipsimple有两种方式,一种就是要编译jni,另一种编译jni,直接使用已经编译好的这两种我都会说一下,首先说比较简...转载 2018-06-05 09:05:17 · 1796 阅读 · 1 评论 -
sofia-sip帮助文档
sofia-sip帮助文档:http://sofia-sip.sourceforge.net/refdocs/nta/index.htmlhttp://sofia-sip.sourceforge.net/refdocs/nta/nta_8h.html#a0a8c71bfc1f474c03f824ac5d1761d99原创 2017-06-18 18:14:02 · 1256 阅读 · 0 评论 -
Sofia-SIP辅助文档三 - 编码指南
http://sofia-sip.sourceforge.net/refdocs/programming.html,翻译自官网的这张网页。编写可移植代码Sofia-SIP的大部分代码都以可移植性方式编写。所有核心模块都采用ANSI C 89规范编写,偶尔加上一些ANSI C 99规范特性。如果存在一些特定平台相关的代码,将它们隔离在一个独立的C文件中,并对外提供包装接口。S转载 2017-06-17 09:10:17 · 1259 阅读 · 0 评论 -
Sofia-SIP辅助文档六 - Sofia-SIP中的SIP和SDP特性
本文档将阐述Sofia-SIP协议栈是如何支持下面的这些标准。 RFC 3261RFC 2617RFC 3262RFC 3263RFC 3265RFC 2806RFC 2976RFC 3311RFC 3313RFC 3323RFC 3326RFC 3325RFC 3327RFC转载 2017-06-17 08:25:43 · 1423 阅读 · 0 评论 -
sofia-sip下载地址
sofia-sip协议中下载地址http://sofia-sip.sourceforge.net/download.html原创 2017-06-17 07:45:05 · 1237 阅读 · 0 评论 -
金鹏GB28181平台对接
必须要素:1. 必须包含subject头域2. SDP中session name必须填写Play3. SDP中不能携带audio4. SDP中的video必须携带PS属性5. SDP中的o行64010000041110000044 0 0 IN IP4 172.24.18.44格式 64010000041110000044原创 2017-05-10 13:14:30 · 2250 阅读 · 0 评论 -
海康摄像头GB28181对接
必须要素:1. 必须包含subject头域2. SDP中session name必须填写Play3. SDP中不能懈怠audio4. SDP中的video必须携带recvonly属性5. SDP中的video必须支持H264以上5要素缺一不可。示例:1. 正确流程P1->IPCINVITEsip:3原创 2015-09-13 13:34:17 · 36835 阅读 · 6 评论 -
SIP头域
本节列出了头域的全部列表,包括了语法注释,含义,和用法。每个头域都有示例给出。 关于与方法和proxy处理有关的头域字段在表2和表3中有处理。 where列描述了在头域中能够使用的请求和应答的类型。这列的值是:R:头域只能在请求中出现;r:头域只能在应答中出现;2xx,4xx,等等:一个数字的值区间表示头域能够使用的应答代码。c:头域是从请求拷贝到应答的。如果w原创 2015-12-27 12:40:39 · 5299 阅读 · 0 评论 -
安全
SIP不是一个容易进行安全保护的协议。它使用的中间媒体,以及它的多面信任关系,它希望的节点之间交互基于互不信任的关系,它的用户到用户的操作使得安全保证非常重要。今天,我们需要找到基于广泛环境和使用方法的很好的安全解决方案。为了达到这一目标,我们需要建立对SIP的不同使用的几种安全机制。 注意SIP的安全性本身同SIP使用的传输协议比如RTP的安全性或者和SIP包体的实现的安全性本身没有继承原创 2016-01-10 10:26:28 · 556 阅读 · 0 评论 -
S/MIME
SIP消息可以加载一个MIME 消息体,并且MIME标准包括了MIME内容的保密机制,确保完整性和机密性(包括“multipart/signed”和“application/pkcs7-mime”的MIME类别,参见RFC 1847[22],RFC 2630[23],RFC2633[24])。实现中应当注意,不管怎样,也会有很少的网络节点(不是典型的proxy服务器),会依赖于查看修改SIP消息(原创 2015-12-05 18:20:12 · 2975 阅读 · 0 评论 -
常见消息部件(Common Message Components)
在SIP消息中,有一些很长用的部件。(甚至在SIP消息外,这些部件也存在)。这些部件值得我们单独讨论一下。 1. SIP和SIPS统一资源标记SIP或者SIPS 的URI用来标记一个通讯用的资源。就像其他所有的URI一样,SIP和SIPS URI可以放在网页上,email消息里,或者打印出来的名片上等等。在这些URI里边包含了足够的信息来发起和维持到这个资源的一个通讯会话。原创 2015-12-20 10:07:44 · 2011 阅读 · 0 评论 -
使用HTTP认证
SIP为认证系统提供了一个无状态的,试错机制,这个认证机制是基于HTTP认证机制的。任何时候proxy服务器或者UA接收到一个请求(1节例外),它尝试检查请求发起者提供的身份确认。当发起方,身份确认了,请求的接受方应当确认这个用户,是否式通过认证的。在本文档中,没有建议或者讨论认证系统。 本节描述的Digest认证机制,只提供了消息认证和复查保护,没有提供消息完整性或者机密性的保证。上述的原创 2016-01-03 19:21:55 · 1148 阅读 · 0 评论 -
P-Associated-URI
P-Associated-URI头域P-Associated-URI头域扩展充许一次注册返回一组与已注册的 AOR 相关联的 URI. 我们定义P-Associated-URI 头字段并在 REGISTER 请求的 200 OK 响应中使用该字段.P-Associated-URI 关字段传送了一组与已注册的AOR 相关联的 URIs.服务供应商已经分配给一个用户专用的 URI称为已关联原创 2015-08-30 10:52:40 · 1916 阅读 · 0 评论 -
P-Called-Party-ID 头域的应用说明
P-Called-Party-ID 头域的适用场景P-Called-Party-ID 适用于 UAS 需要知道在代理将目标改写为Contact 地址之前请求中Request-URI的目的AOR的情况.。UAS 针对请求目标按照设定不同的场景或使用其过滤服务。当 UAS 注册了几个 AOR,并且,除非使用这项扩展,否则 UAS 并不清楚他的代理注册服务器,registrar 给出的 INVITE原创 2015-08-01 10:22:10 · 2199 阅读 · 0 评论 -
呼叫保持取消
基本概念呼叫保持取消,当需要和正在处于呼叫保持状态的用户回复原来通话时,再继续与原来的通话方通话,即取消原来通话的保持状态,停止播放背景音乐。呼叫保持取消流程图呼叫保持取消信令简要概述在呼叫保持信令中提到,用户1000发送re-INVITE消息给IPBX,需要保持1000和1002之间的通话。Re-INVITE消息携带SDP中c=IN IP40.0.0.原创 2015-07-18 09:19:36 · 4490 阅读 · 0 评论 -
注册(七) 失败
注册失败,消息处理流程原创 2014-06-03 09:27:01 · 1594 阅读 · 0 评论 -
注册(五)之请求处理
一个注册服务器(registrar)就是一个UAS,这个UAS用来响应REGISTER的请求,并且维持一个绑定表,这个绑定表用来提供给它所管理的区域中的proxy服务器和重定向服务器的。一个注册服务器禁止产生6xx应答。一个注册服务器可以适当的转发REGISTER请求。通常用于一个注册服务器(registar)监听一个多点广播,并且通过302应答(临时转移)转发这个多点广播的REGISTER请求到原创 2014-05-30 16:49:38 · 1324 阅读 · 0 评论 -
注册(四)之删除绑定
注册信息是一个纯粹软件的状态,并且如果不刷新会过期。如果需要,也可以被删除。一个客户端可以设置注册服务器(registar)的有效期。一个UA可以通过发出有效期为“0”的REGISTER请求,使某一个联系地址立刻失效。UAS都需要实现这个机制使得在联系地址过期前能够被删除。REGISTER规范中的Contact头域如果设置成为“*”则表示需要操作所有的注册项。但是也只能在具有一个Expires原创 2014-05-30 16:46:45 · 876 阅读 · 0 评论 -
注册(三)之设置Contact地址的过期参数
当一个客户端发出一个REGISTER请求,它可能包含一个过期参数用来表示这个注册的地址的有效期。(注册服务器(registrar)根据自己的策略选取实际的时间间隔来计算有效期)。客户端设置有效期的方法有两种:一个是通过设置Expires头域,一个是通过设置“expires”contact头域的参数来设置。后一种允许针对同一个REGISTER请求中的多个绑定联系地址中的每一个联系地址单独设定有效原创 2014-05-30 16:45:04 · 2994 阅读 · 0 评论 -
注册(二)之增加绑定
REGISTER请求是向注册服务器(registrar)发送一个包含对某一个address-of-record的地址的SIP请求应当发送的实际联系地址。address-of-record包含在REGISTER请求的To头域中。请求中的Contact头域通常包含了SIP或者SIPS的URI,这些URI表明了特定的SIP端点(比如sip:carol@cube2214a.chicago.com),他原创 2014-05-30 16:40:13 · 1214 阅读 · 0 评论 -
注册(六)之有效期过小
UAC发送注册消息到UAS,UAS根据注册请求处理的8(注册())步骤进行分析。UAS开启了注册鉴权业务,UAC发送的注册消息中没有鉴权信息,向UAC回401,要求带上鉴权信息。UAC重新发起注册,并带上鉴权信息(鉴权信息,在Authorization头域),UAS继续对注册请求进行分析,注册有效期过小,向UAC回423,并携带Min-Expires头域(UAS支持的最小注册时间)。重复以上过程完原创 2014-05-30 16:54:37 · 1149 阅读 · 0 评论