SIP基本概念

SIP(Session Initiation Protocol,会话初始协议)是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体会话或多媒体会议。SIP是IETF多媒体数据和控制体系结构的核心协议(最新RFC文档是RFC 3261), SIP用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频和数据等)、媒体的编解码格式、对组播和单播的
支持等。SIP协议基于文本编码,大量借鉴了成熟的HTTP协议。

1. 多媒体会话
多媒体会话(Multimedia Session)是指一组多媒体发送者和接受者,以及从发送者到接受者的数据流。例如一个多媒体会议就是一个多媒体会话。一个会话由一组用户名称、会话ID、网络类型、地址类型以及各个单元的地址来确定

2. 用戶代理
用户代理(UA,User Agent)也称SIP终端,是指支持SIP协议的多媒体会话终端。

UA包括用户代理客户端(UAC,User Agent Client)和用户代理服务器(UAS,User Agent Server)。
一般说的UA均是指二者的总称,因为在一次呼叫中,一个SIP终端既要处理SIP请求,又要发起SIP请求。

用户代理客户端是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时, 代理服务器也就扮演 用户代理客户端的角色。

用户代理服务器是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时, 也就扮演了 用户代理服务器的角色。

3. 代理服务器

————————————————————————————
Agent和Proxy在中文都翻译成代理,在SIP语境,要仔细区分。

把 proxy 翻译成代理,agent 则根据语境翻译成助手(代办)之类会好理解一些(比如office里面的“大眼夹”就是agent,中文叫“office小助手”;苹果的siri, 微软的小娜等也是agent)。

agent 拥有独立思考/行动能力,可以代替你做一些决定。 比如,这是我的管家/律师,合同的事你和他谈。他的决定就是我的决定。 这个得到了授权、可以独立以你的名义完成某个任务、必要时允许他根据情况做出自主决定的,就是 agent

proxy一般原样转发,办理用户交代的事情。

在 翻墙流量 外网web的过程中, 浏览器(browser)就是agent, 它会帮你翻译 html和css, 以非常友好的形式展现内容。它也会理解你的双击,键盘操作,滑动等操作,并将这些操作转换为 http请求 发送给服务器。 它能理解主人的意图,并做出适当的转换。

而 外网的某台 中间服务器,则担当了 proxy的角色, 它基本上原样转发你的 http 请求给 目标服务器 (某些匿名代理服务器,可以让目标服务器
无法觉察你是通过proxy访问的), 再将 http响应原样 返回给你。纯粹的跑腿的角色, 不会帮你转换,思考,甚至代替做出决定。
——————————————————————————————-

代理服务器(Proxy Server)的作用就是传递主叫UA发送的会话请求到被叫UA,然后将被叫UA的响应传递回主叫UA,它相当于主叫UA和被叫UA之间传递会话消息的一座桥梁。

代理服务器在接收到主叫UA的会话请求后,首先要向位置服务器请求查找被叫UA的位置以及主、被叫UA的呼叫策略信息。只有找到被叫UA并且此呼叫是允许的,代理服务器才会向被叫UA发送会话请求。代理服务器一般在SIP会话中都是需要的。

4. 重定向服务器
重定向服务器(Redirect Server)用来指示客户端连接的新地址。比如,主叫UA呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求。此位置可以是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。

5. 位置服务器
位置服务器(Location Server)是为代理服务器和重定向服务器等提供UA信息的设备。位置服务器记录了注册服务器接收到的UA的信息。二者可以独立存在,也可以作为逻辑组件存在于同一台服务器上

6. 注册服务器
注册服务器(Registrar Server)接受用户注册,注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用。二者都是逻辑组件,一般存在于同一台服务器上。


功能:
1. 确定用户位置:主要利用 SIP终端在注册服务器上的注册信息实现用户定位

2. 确定用户可用性: 确定被叫会话终端是否可以参加此会话。SIP支持多种地址描述和寻址方式,包括SIP-URI(比如sip:123456@192.168.1.11)、Tel-URL(比如tel:+1312000)和SIPS-URI(sips:123456@192.168.1.11)。这样,SIP主叫根据被叫地址,就可以识别出被叫是否在传统电话网上,然后通过一个与传统电话网相连的网关向被叫发起并建立呼叫

3. 确定用户能力: 确定被叫终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,这使得会话双方都可以明确对方的会话能力

4. 建立会话: 建立主被叫双方的会话。SIP会话双方通过协商媒体类型和媒体参数,最终选择双方都具有的能力建立起会话。

5. 管理会话: 可以更改会话参数或中止会话


SIP消息
SIP消息采用文本方式编码,包括请求消息与响应消息两类。
SIP请求消息包括INVITE ACK OPTIONS BYE CANCEL和REGISTER等。RFC 3261定义的请求消息有以下六种。
INVITE: 用于邀请用户加入一个呼叫。
ACK: 用于对消息进行确认。
OPTIONS: 用于请求协商能力信息。
BYE: 用于释放已建立的呼叫。
CANCEL: 用于释放尚未建立的呼叫。
REGISTER: 用于向SIP注册服务器登记用户位置等信息。

SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。


工作流程

1. 登记注册
在完整的SIP系统中,所有的SIP终端作为User Agent都应该向注册服务器登记注册,以告知其位置、会话能力、呼叫策略等信息。
通常,SIP终端开机启动或者配置管理员执行注册操作时,就向注册服务器发送注册请求消息(REGISTER),该消息中携带了所有需要登记的信息。注册服务器收到注册请求消息后向终端发送回应消息,以告知其请求消息已收到。如果注册成功,就再向终端发送“200 OK”消息。

2. 建立呼叫
SIP协议采用Client/Server模型,主要通过UA与代理(proxy)服务器之间的通信来完成用户呼叫的建立过程

3. 重定向呼叫
SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端从而重新直接向被叫终端发送会话请求消息。被叫终端也将直接向主叫终端发送应答消息。


SIP支持的传输协议
SIP是一个应用层的会话协议,可以同时支持各种传输协议:
1) 支持UDP传输: UDP是一个无连接的协议,且不提供可靠性。在UDP上建立SIP连接存在不可靠性。
2) 支持TCP传输: 增加了SIP报文和语音传输的可靠性,通过TCP协议自身的特点为基于SIP的VoIP通信提供了面向连接和可靠的传输。SIP使用TCP传输协议后,SIP协议可以不需要考虑报文丢失和重传问题。
3) SIP支持TLS(Transport Layer Security,传输层安全)传输:SIP支持TCP传输仅仅保证了SIP报文和语音传输的可靠性,而SIP支持TLS传输则保证了SIP报文传输的安全性

TLS本身运行于TCP之上,并且提供了通信双方身份识别和加密SIP报文的一整套安全方案,为应用层协议服务。建立TLS连接时需要认证双方用户的身份,因此用户双方必须有各自合法的数字证书,只有通过认证的用户才可以进行后续的通信。使用TLS传输SIP报文,SIP报文在整个传输过程全部被加密


支持的媒体流协议包括:RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-Time Transport Control Protocol,实时传输控制协议)。RTP用于为具有实时特征的数据(如交互音频和视频)提供端到端网络的实时传输服务;RTCP用于实时监控传输质量,并提供拥塞控制和流控制。
RTP和RTCP配合使用,就能以有效的反馈和最小的开销使传输效率更佳。在网络中媒体流是明文传输的,为了保证通信内容的安全性,SRTP协议应运而生。

SRTP(Secure Real-time Transport Protocol,安全RTP协议)通过对RTP/RTCP报文的有效负载进行加密,实现对RTP/RTCP报文的加密、认证以及报文重传保护。

采用SRTP加密媒体流,首先需要协商加密信息,目前仅支持在SDP(Session Description Protocol,会话描述协议)中通过crypto头域进行加密协商。发起方将本端支持的加密属性信息发送给接收方进行协商,协商成功后,接收方返回相应的加密属性信息。会话建立后,双方各自使用自己的密钥加密
RTP/RTCP报文,使用对端的密钥解密对方发送的RTP/RTCP报文。

SDP协商主要包括以下参数信息:
Tag: 加密属性信息标识符,在不同的加密属性必选协商参数行中的tag值必须不同,接收方根据Tag值来决定使用哪一组加密属性
Crypto-Suite : 加密套件,定义加密和认证使用的算法。
Key Parameters : 密钥参数 定义密钥信息,主要包括密钥生成方法和密钥值

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注