【SIP基础】SIP协议消息-掌握SIP的核心方法
2016-09-05 23:08
337 查看
SIP消息有两种类型:请求和响应。
一个请求的打开行包含定义,其中该请求是要被发送的方法,它定义请求,以及请求URI。
同样响应的打开行包含一个响应代码。
有一些命令称作方法,使SIP消息可行。
METHODS 可被视为SIP请求,因为它们要求将要采取的另一个用户代理或服务器的特定动作。
METHODS 被区分为两种类型:
核心方法
扩展方法
INVITE可以包含在邮件正文中主叫者的媒体信息。
会话被认为是如果INVITE已经获得了成功响应(2xx)上建立或ACK已发送。
一个成功的INVITE请求建立这一直持续到BYE发送到终止会话的两个用户代理之间的对话。
一个发送的INVITE内已建立的对话被称为一个re-INVITE请求。
re-INVITE请求用于改变在会话特性或刷新一个对话的状态。
它不能由代理服务器发送。
BYE请求通常路线端到端,绕过代理服务器。
BYE不能被发送到一个等待INVITE或未确定会话。
REGISTER请求可以被转发或代理,直到它到达指定域的权威注册机构。
它所携带的AOR(记录地址)在为正在注册的用户的头。
REGISTER请求中包含的时间段(3600秒)。
一个用户代理可以代表其他用户发送代理注册请求。这就是所谓的第三方注册。在这里,从标签中包含方提交的注册代表确定To头部分的URI。
它可以通过一个用户代理或代理服务器来发送。
CANCEL是一个逐跳转发请求,也就是说,它通过用户代理之间的元件和接收由下一状态元素所产生的反应。
- ACK可能不被用于修改一个已经发送的初始INVITE的媒体描述。
有状态代理接收ACK必须确定是否将ACK应下游转发到另一个代理或用户代理。
对于2xx应答,ACK是端到端的,但对于所有其他最终响应,它可以在逐跳转发基础上参与状态代理时。
它有一个时间周期,在Expires头字段,指示存在一个订阅的所需的持续时间。
在指定的时间段过后,订阅将自动终止。
成功订阅建立用户代理之间的对话。
订阅可以通过发送到期时间之前对话框中的另一个订阅刷新。
服务器接受订阅返回一个200 OK。
用户可以通过发送另一个使用订阅方法退订过期值为0(零)。
200 OK响应被接收为每个NOTIFY以指示它已收到。
NOTIFY请求包含指示,指示订阅的当前状态的包和订阅的状态报头字段的Event报头字段。
NOTIFY总是在订阅开始和订阅终止发送。
Publish当有事件信息的多种来源主要是有用的。
PUBLISH请求类似于一个NOTIFY,不同之处在于它不是在对话框发送。
一个PUBLISH请求必须包含一个Expires头字段和Min-Expires头字段域。
REFER必须包含一个Refer-To头。这是参考一个强制性的头。
REFER可以在内部或在对话外发送。
202 Accepted 将引发REFER请求这表明其他用户代理已经接受了参考。
如果会话建立后,再邀请来改变/更新会话。
PRACK通过一个用户代理客户端时产生的临时的响应已经接收到含有RSEQ可靠序列号和一个 supported:100rel 头。
PRACK包含架头(RSEQ+ Cseq)值。
PRACK可能包含邮件正文;它可以被用于提供/应答交换。
消息可以在对话中或在对话外发送。
消息的内容在邮件正文中携带的MIME附件。
200 OK响应被正常接收,以指示该消息已被传送在它的目的地。
一个请求的打开行包含定义,其中该请求是要被发送的方法,它定义请求,以及请求URI。
同样响应的打开行包含一个响应代码。
请求方法
SIP请求是用于建立通信的代码。为了补充它们,SIP响应其通常指示请求是成功还是失败。有一些命令称作方法,使SIP消息可行。
METHODS 可被视为SIP请求,因为它们要求将要采取的另一个用户代理或服务器的特定动作。
METHODS 被区分为两种类型:
核心方法
扩展方法
核心方法(Core Methods)
有六个核心的方法如以下所讨论。INVITE
INVITE被用于发起会话使用用户代理。换言之,一个INVITE方法用于建立用户代理之间的媒体会话。INVITE可以包含在邮件正文中主叫者的媒体信息。
会话被认为是如果INVITE已经获得了成功响应(2xx)上建立或ACK已发送。
一个成功的INVITE请求建立这一直持续到BYE发送到终止会话的两个用户代理之间的对话。
一个发送的INVITE内已建立的对话被称为一个re-INVITE请求。
re-INVITE请求用于改变在会话特性或刷新一个对话的状态。
INVITE实例
下面的代码演示了INVITE如何被使用。INVITE sips:Bob@vvsip.com SIP/2.0 Via: SIP/2.0/TLS client.vvsip.com:5061; branch = z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sips:Alice@vvsip.com> ;tag = 1234567 To: Bob <sips:Bob@vvsip.com> Call-ID: 12345601@vvsip.com CSeq: 1 INVITE Contact: <sips:Alice@client.vvsip.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v = 0 o = Alice 2890844526 2890844526 IN IP4 client.vvsip.com s = Session SDP c = IN IP4 client.vvsip.com t = 3034423619 0 m = audio 49170 RTP/AVP 0 a = rtpmap:0 PCMU/8000
BYE
BYE用于终止已建立的会话的方法。这是可以通过主叫方或被叫方结束会话被发送SIP请求。它不能由代理服务器发送。
BYE请求通常路线端到端,绕过代理服务器。
BYE不能被发送到一个等待INVITE或未确定会话。
REGISTER
REGISTER请求执行的用户代理的注册。这个请求是由用户代理发送到注册服务器。REGISTER请求可以被转发或代理,直到它到达指定域的权威注册机构。
它所携带的AOR(记录地址)在为正在注册的用户的头。
REGISTER请求中包含的时间段(3600秒)。
一个用户代理可以代表其他用户发送代理注册请求。这就是所谓的第三方注册。在这里,从标签中包含方提交的注册代表确定To头部分的URI。
CANCEL
CANCEL用于终止未建立会话。用户代理使用此请求取消更早启动暂停呼叫的尝试。它可以通过一个用户代理或代理服务器来发送。
CANCEL是一个逐跳转发请求,也就是说,它通过用户代理之间的元件和接收由下一状态元素所产生的反应。
ACK
ACK用于确认最后的响应的INVITE方法。ACK总是在INVITE的方向。 ACK可能包含的SDP主体(媒体特性),如果它不在INVITE可用。- ACK可能不被用于修改一个已经发送的初始INVITE的媒体描述。
有状态代理接收ACK必须确定是否将ACK应下游转发到另一个代理或用户代理。
对于2xx应答,ACK是端到端的,但对于所有其他最终响应,它可以在逐跳转发基础上参与状态代理时。
OPTION
OPTIONS方法用于查询的用户代理或围绕其功能的代理服务器,并发现其当前的可用性。于请求的响应列出了用户代理或服务器的功能。代理从未产生OPTIONS请求。扩展方法(Extension Methods)
Subscribe
Subscribe所使用的用户代理商建立了订阅获取通知的有关特定事件的目的。它有一个时间周期,在Expires头字段,指示存在一个订阅的所需的持续时间。
在指定的时间段过后,订阅将自动终止。
成功订阅建立用户代理之间的对话。
订阅可以通过发送到期时间之前对话框中的另一个订阅刷新。
服务器接受订阅返回一个200 OK。
用户可以通过发送另一个使用订阅方法退订过期值为0(零)。
NOTIFY
NOTIFY是用来由用户代理传达的特定事件的发生。NOTIFY总是在对话中发送当用户与通知之间存在订阅。200 OK响应被接收为每个NOTIFY以指示它已收到。
NOTIFY请求包含指示,指示订阅的当前状态的包和订阅的状态报头字段的Event报头字段。
NOTIFY总是在订阅开始和订阅终止发送。
PUBLISH
PUBLISH用于由用户代理发送的事件的状态信息,以已知作为一个事件状态合成器的服务器。Publish当有事件信息的多种来源主要是有用的。
PUBLISH请求类似于一个NOTIFY,不同之处在于它不是在对话框发送。
一个PUBLISH请求必须包含一个Expires头字段和Min-Expires头字段域。
REFER
REFER用于由一个用户代理来指另一个用户代理访问URI的对话框。REFER必须包含一个Refer-To头。这是参考一个强制性的头。
REFER可以在内部或在对话外发送。
202 Accepted 将引发REFER请求这表明其他用户代理已经接受了参考。
INFO
INFO所使用的用户代理发送呼叫信令信息,与它建立了一个媒体会话其他用户代理。这是一个终端到终端的请求,并且从不生成由代理。代理会一直转发信息请求。UPDATE
UPDATE用于修改会话的状态不改变对话的状态。更新用于如果会话没有建立,并且用户想要改变编解码器。如果会话建立后,再邀请来改变/更新会话。
PRACK
PRACK用于确认收到临时响应(1XX)可靠传输。PRACK通过一个用户代理客户端时产生的临时的响应已经接收到含有RSEQ可靠序列号和一个 supported:100rel 头。
PRACK包含架头(RSEQ+ Cseq)值。
PRACK可能包含邮件正文;它可以被用于提供/应答交换。
MESSAGE
它是用来发送即时消息或使用SIP IM。一个IM通常由短信息交换实时由从事文本会话参与者。消息可以在对话中或在对话外发送。
消息的内容在邮件正文中携带的MIME附件。
200 OK响应被正常接收,以指示该消息已被传送在它的目的地。
相关文章推荐
- Fetion协议所支持的SIP方法及SIP消息头域
- 飞信分析之四:Fetion协议所支持的SIP方法及SIP消息头域
- 干货丨揭秘深度学习的核心:掌握训练数据的方法
- 【SIP基础】SIP协议中网络角色定义
- 编程零基础,如何最快速掌握「机器学习」核心技能?
- 【SIP基础】SIP协议基本呼叫流程
- 消息队列基础 RabbitMQ与AMQP协议详解——超大规模高可用OpenStack核心技术深入解析系列(二)
- 【SIP基础】SIP协议响应代码
- 深度学习的核心:掌握训练数据的方法
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略
- 【Android基础】Android Toast显示消息的几种方法
- Java核心技术卷I:基础知识(原书第8版):12.3 泛型方法
- 消息队列基础 RabbitMQ与AMQP协议详解——超大规模高可用OpenStack核心技术深入解析系列(二)
- 安卓核心基础知识梳理之Android消息处理机制
- SIP中re-INVITE消息的使用方法
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略
- RFC3261 sip协议学习------sip消息结构描述
- Java使用Rabbitmq惊喜队列queue和消息内容的本地持久化核心方法。(内容存储在硬盘)
- 如何用比较快速的方法掌握Spring的核心——依赖注入,Java web轻量级开发面试教程 读书笔记
- 掌握基础理论和经典的设计方法,比去追逐一些所谓的新技术要实用得多——网友一句话想到的