sip的简单理解
概念
(Session Initiation Protocol,会话初始协议是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点
应用层:在网络通信中最上层,实现业务的具体功能。
信令:信息指令,表示协议的传输的内容是指令而非业务数据。
控制:执行什么样的操作。
功能
用于创建、修改和释放一个或者多个参与者的会话。
重要特点
1)不定义要建立的会话类型,只定义如何管理会话。 SIP不是一个垂直集成的通讯系统,可能叫做是一个部件更合适。
2)SIP本身并不提供服务。但是,SIP提供了一个基础,可以用来实现不同的服务。
那么SIP协议是如何实现了创建、修改、释放会话的功能?
先看SIP通信流程图
简单的SIP通信由3个组件组成。
1)用户代理(User Agent Client),即终端。比如SIP电话。
2)代理服务器(User Agent Server),负责连接用户代理和查询终端定位。
3)注册服务器。是一个保存了用户代理(终端)信息服务器。可以理解为一个通讯录。
应用示例,终端A拨打终端B电话:
1)终端A先联系代理服务器,把B给到proxy,告诉它我是联系B。
2)proxy它自己不知道,就去翻通讯录(即注册服务器),找到B对应的IP地址,并拨打B。
3)B接听电话后,proxy就把A和B联通。
常用消息
SIP协议的亮点却不在于它的强大,而是在于:简单!
SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。请求消息是SIP客户端为了**特定操作而发给服务器端的消息。常用的SIP请求消息如下:
INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。
ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。
PRACK:表示对1xx响应消息的确认请求消息。
BYE:表示终止一个已经建立的呼叫。
CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。
REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。
OPTIONS:表示查询被叫的相关信息和功能。
SIP协议中的响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。
常用的一些响应消息:
100试呼叫(Trying)
180振铃(Ringing)
181呼叫正在前转(Call is Being Forwarded)
200成功响应(OK)
302临时迁移(Moved Temporarily)
400错误请求(Bad Request)
401未授权(Unauthorized)
403禁止(Forbidden)
404用户不存在(Not Found)
408请求超时(Request Timeout)
480暂时无人接听(Temporarily Unavailable)
486线路忙(Busy Here)
504服务器超时(Server Time-out)
600全忙(Busy Everywhere)
总结,SIP就是一个控制协议,上例中具体的音频数据的传输都是通过RTP协议完成。在使用代码实现的话,不仅需要实现SIP几个模块,RTP也是需要实现。
ref:
SIP百度百科
SIP协议介绍及应用前景分析