SIP 协议(Session initialization Protocol)会话发起协议
是IETF制定的多媒体通信协议,是一个基于文本的应用层控制协议,用于建立,修改和终止IP网上的双方或多方的多媒体会话,支持代理、重定向、登记定位用户等功能 支持用户的移动,与RTP/RTCP/SDP/DNS等协议配合,可支持和应用于语音、视频、数据等多媒体业务
SIP是一种基于文本的协议,它的语法和消息非常类似于HTTP协议,不同之处在于SIP不仅可以用TCP,也可以用UDP封装。
一、SIP提供的功能:
名字翻译和用户定位:
无论被呼叫方在哪里都确保呼叫达到被叫方、执行任何描述信息到定位信息的映射,确保呼叫(会话)的本质细节被支持。
特征协商:
它允许与呼叫有关的组(这可以是多方呼叫)在支持的特征上达成一致(注意:不是所有各方都能够支持相同级别的特征)。例如,视频可以或不可以被支持。总之,存在很多需要协商的范围。
呼叫参与者管理:
呼叫中参与者能够引入其他用户,加入呼叫或取消到其他用户的连接。此外,用户可以被转移或置为呼叫保持。
呼叫特征改变:
用户应该能够改变呼叫过程中的呼叫特征。例如,一个呼叫可以被设置为“voice-only”,但是在呼叫过程中,用户可以开启视频功能。也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。
二、SIP系统基本组成
SIP协议虽然主要为IP网络设计的,但它并不关心承载网络,也可以在ATM、帧中继等承载网中工作,它是应用层协议,可以运行于TCP,UDP,SCTP等各种传输层协议之上。SIP用户是通过类似于e-mail地址的URL标识,例如:sip:myname@mycompany.com,通过这种方式可以用一个统一名字标识不同的终端和通信方式,为网络服务和用户使用提供充分的灵活性。按逻辑功能区分,SIP系统由4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器。
1.用户代理
用户代理(UserAgent)一个软终端或者一个支持SIP协议的电话UA对接收到的行为进行代理,发送到SIP网络中,是发起和终止会话的实体,包括两个功能实体。
客户端(UserAgentClient),负责发起呼叫,UAC是负责发起SIP事务请求的功能实体,将动作翻译成invite请求
用户代理服务器(UserAgentServer),负责接受呼叫并做出响应,接收SIP事务请求的功能实体,SIP向用户发送invite请求,UAS把这个请求翻译成相应的动作,例如:电话振铃、网页上显示新的呼叫
二者组成用户代理存在于用户终端中。用户代理按照是否保存状态可分为有状态代理、有部分状态用户代理和无状态用户代理。
2.代理服务器
代理服务器(ProxyServer),负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据收到的应答对用户做出响应。它可以根据需要对收到的消息改写后再发出。
转发
3.重定向服务器
重定向服务器(RedirectServer),用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。
PS:位置服务器,网络还需要提供位置目录服务,以便在呼叫接续过程中定位被叫方(服务器或用户端)的具体位置。
4.注册服务器 注册服务器(Registrar),用于接收和处理用户端的注册请求,完成用户地址的注册。
SIP基本请求消息:
SIP响应消息:
SIP会话建立的基本流程:
用户首先发送invite消息,被叫用户收到后返回100表示试呼,180Ringing表示处理完了(例图打印错误),这两条消息是临时响应消息,然后发送200ok,200ok是成功的响应消息,包含了被叫的这次通信的媒体信息,主叫收到200后,会向被叫发送ACK,完成三次握手
有时候,主叫侧没有被叫侧的路由信息,这时需要代理服务器:
代理服务器只起到转发功能,不是解析功能,UAS返回的200包含了联系地址,100、180临时未返回,因为本就是可选消息。
重定向服务器用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。
用户想要使用重定向服务,就要先向重定向服务器里登记自己的新地址
参考:
1、SIP协议工作原理
2、什么是SIP