我是靠谱客的博主 文静玉米,最近开发中收集的这篇文章主要介绍媒体协议之SIP协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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发起会话请求
AckInvite 请求的响应的确认
Cancel取消请求
Bye终结会话
Options查询服务器能力

3.2.1 Register:注册用户的当前地址(IP+Port)
什么时候会发送Register:

  1. 如果在SIP提供响应中检测到SIP帐户(TLS/TCP)、出站代理等的更改,请注册
  2. 如果收到网络更改事件,请务必注册
  3. 如果在sip invite之后服务器响应403禁止,请注册
  4. 在sip过期时间之前自动注册
  5. 强制在某些地方注册

在这里插入图片描述
从“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协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部