概述
1.概念
SIP(会话发起协议)是一种信令协议,用于在基于IP的网络中创建,管理和终止会话。
会话可以是简单的双向电话呼叫,也可以是协作式多媒体会议会话。这使得在基于IP的环境中实现诸如语音丰富的电子商务,网页点击拨号或带有好友列表的即时消息传递等服务成为可能。
最近,SIP已成为与IP语音(VoIP)相关的服务的选择。它是Internet工程任务组(IETF)提出的标准(RFC 3261)。随着技术的扩展和发展,SIP仍在增长,并进行了修改以考虑到所有相关功能。但是应该注意,SIP的工作仅限于会话的建立和控制。会话中数据交换的详细信息,例如与音频/视频媒体有关的编码或编解码器不受SIP控制,并由其他协议处理。
2.组成
SIP是C/S架构,它由2部分组成:
2.1 UAC(User Agent Client):生成请求并发送至服务器;
2.2 UAS(User Agent Server):获取并处理请求,并生成响应。
Proxy Server
Redirect Server
Register Server
Location Server
3.消息体格式
请求行/状态行
请求头
正文
3.1 请求行
格式:Method Request-URI SIP-Version CRLF,例如:INVITE sip:bob@zte.com SIP/2.0 /r/n
3.2 请求方法
Method | 方法说明 |
---|---|
Register | 注册联系信息 |
Invite | 发起会话请求 |
Ack | Invite 请求的响应的确认 |
Cancel | 取消请求 |
Bye | 终结会话 |
Options | 查询服务器能力 |
3.2.1 Register:注册用户的当前地址(IP+Port)
什么时候会发送Register:
- 如果在SIP提供响应中检测到SIP帐户(TLS/TCP)、出站代理等的更改,请注册
- 如果收到网络更改事件,请务必注册
- 如果在sip invite之后服务器响应403禁止,请注册
- 在sip过期时间之前自动注册
- 强制在某些地方注册
从“To”字段,可以知道您的注册帐户
从“Cseq”字段,可以区分您的帐户注册时间
从“Contact”字段,可以知道注册设备的数量
3.2.2 Invite:启动Sip呼叫,建立连接
from:呼叫者
to:接收者
Call-ID:它是调用的全局唯一标识符
Route:注册时SPB的地址
User-Agent:说明客户端的build和设备信息
p-rc-country-id :说明客户端所在国家
3.2.3 ACK:确认实体已收到对INVITE请求的最终响应,也就是客户端向服务器发送Invite请求,服务器响应后,客户端向服务器发送ACK方法,告知响应已收到,可进行通话了。
3.2.4 Cancel:客户端在对方未接通时结束通话,则请求该方法。
3.2.5 Bye:任何客户端结束通话,该客户端会向服务端发送该请求。
3.2.6 Publish:将事件发送到通知服务器上,当接通的呼叫结束或保持时,客户端将向服务器发送“PUBLISH”(包含当前媒体数据)以报告当前呼叫质量。
Call ID:说明是哪个通话
Timestamp:说明通话的开始和结束时间
3.3 状态行
格式:SIP-Version Status-Code Reason-Phrase CRLF , 例如:SIP/2.0 200 OK /r/n
状态码: 状态代码由3位数字组成,表示请求是否被理解或被满足。 状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。
状态码 | 说明 |
---|---|
1XX | 临时响应、表示请求消息正在被处理 |
2XX | 成功响应、表示请求已被理解并成功接收 |
3XX | 重定向响应、表示需采取进一步完成请求 |
4XX | 客户端错误、表示请求消息中包含语法错误信息或服务器无法完成客户端的请求 |
5XX | 服务器错误、表示服务器无法合法完成请求 |
6XX | 全局故障 、表示任何服务器都无法完成该请求 |
常见状态码:
最后
以上就是文静玉米为你收集整理的媒体协议之SIP协议的全部内容,希望文章能够帮你解决媒体协议之SIP协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复