java操作sip

发布时间 2023-06-20 16:47:38作者: dongye95

sip的主要功能

SIP的主要功能是允许用户或设备通过消息传递来产生互动,这些消息可以满足以下四种目的:

  1. 用户向系统注册;
  2. 邀请用户参加互动会议;
  3. 协商会议媒体内容的格式;
  4. 建立两端点或更多人之间的媒体流;
  5. 结束会议

用户向系统注册

SIP提供了注册的机制将用户和系统做连接。当SIP电话或终端设备为在线状态时,通常第一件要做的事就是发送REGISTER消息给Registration服务器,告知目前所在的联络位址和相关信息,而Registration服务器则会将用户ID和IP地址结合起来记录在Location Server的数据库里,以供日后使用。注册的机制可以使用户具可移动性的优点,用户只需随时向服务器更新自己的IP地址,便可使用相同ID,在不同地区或设备上让其他联络人找到自己,而不需固定在某一IP地址上。

注册的机制并不是必要的,SIP电话在知道双方IP地址的条件下,也可以不用透过任何服务器达成建立连线的目的。注册的机制通常都有时效的限制,而使用者则必须每隔一段时间和服务器联络,以随时更新目前的位址。

邀请用户参加互动会议

在SIP的系统里,建立会议的定义就是通过发送INVITE消息给一到多个设备建立双方连接,等建立连线后双方便可传送语音、影像或其他数据资料。在SIP里定义的位址可能是传统的电话号码、直接的IP地址或SIP URIs等,当使用者想邀请另一方加入会议,使用者只需在设备里键入对方的位址,并等待对方的回应。

在等待对方回应的过程中,SIP设备会建立INVITE消息并将它传送到网络上,透过Proxy或Redirection Server到Location Server寻找对方真实的IP地址,有了Location Server提供的资讯,系统便可以判断如何将邀请传达给对方。

协商会议媒体内容的格式

建立SIP会议的主要目的是用来传送双方的媒体内容,所以在SIP传送的讯息内容中会附加可提供的媒体格式供对方参考。和email服务相同,SIP协议只关心所传送的讯息内容,并不管所附加的内文是什么,而在SIP里最常使用到的附加内文则采用Session Description Protocol (SDP, RFC 2327)协议格式。

当接收方收到INVITE讯息的时候,接收方可以选择接受或拒绝这次的邀请。有时候接收方拒绝邀请的原因是因为它没有足够的能力接受对方所提供的媒体需求,例如接收方可能不提供视讯流服务,这时候只能拒绝对方的邀请。

建立两端点或更多人之间的媒体流

当对方接受了邀请,代表着此次会议已成功建立,接下来进行传送的便是媒体位元流(media stream)。在SIP里,媒体位元流和SIP协议的讯息是分开建立,并且使用Real-time Transport Protocol (RTP, RFC 1889)进行传送。

和SIP讯息传递不同的是,媒体位元流直接使用得到的IP地址进行点对点的传输,而不需要再次经过SIP讯息用来建立会议的servers。

结束会议

当使用者结束会议挂断电话的时候,此时设备便会传送SIP的BYE讯息给对方用来结束媒体位元流,连线便正式终止。