Noiile
一个纯粹的SIP网络由以下几个部分组成:
SIP User Agent:SIP用户代理,是终端设备,在通话应用中,它相当于一个IP电话。
SIP Proxy Server:SIP 代理服务器,它代理User Agent处理所有的网络服务。
SIP Redirect Server:负责提供location service, 定位服务
SIP Registrar:所有属于该域的User Agent都必须要到Registrar处注册,绑定自己实际的联系地址。

SIP号码由两部分组成,username和host。其中host可以是IP地址和域名。比如:
Sip:carol@astro.com
Sip:carol@192.168.1.22
前面的name是由用户指定,可以是任意字符或数字。但它必须是网内唯一的。Proxy 可以根据用户名在Registrar中找到可以联系它的IP地址。
一般的SIP网络运作机制如下:
1. UA启动后,定时不间断的向它自己的proxy发送注册消息,再由proxy转发至注册服务器Registrar,也可以UA直接发注册消息到Registrar上。
2. 当UA需要呼叫其他UA时,输入其SIP地址,如果是属于同一个SIP网络,可以在GUI上只输入其username部分,发至proxy。
3. Proxy再向Redirect Server请求被叫方的IP地址。
4. Proxy获得被叫方的IP地址后,将该呼叫转至被叫方。
这就是一个呼叫建立的大致过程。

但是如果存在多个SIP网络,他们是怎样互相通信呢?
网络如下图:存在这两个SIP网络:1)astro_gz.com 2)astro_bj.com
来自域astro_gz的SIP UA要呼叫astro_bj的SIP UA。网络是怎样寻址呢?
其实,SIP网络系统就类似Email系统一样。要进行跨网呼叫,不能仅仅靠个username,而是需要一个完整的SIP URI地址。后面带着的域名指定了该用户是属于哪个SIP网络的。每个域都需要有一个完整的SIP网络。每个域的注册用户只能向自己隶属的那个域发送注册信息和其他SIP消息(点对点通信除外)。SIP服务器也只能找到属于自己这个域内的注册拥护。如果需要找其他域的SIP UA,需把SIP Message传到目标UA所隶属的那个域的SIP服务器,由它来寻找目标UA的最终地址。
比如:carol@astro_gz.com要INVITE bob@astro_bj.com,它将这个INVITE传到sipproxy.astro_gz.com,proxy从被呼叫的SIP地址得知该用户不属于自己这个域的,就通过DNS寻址,把这个消息传到sipproxy.astro_bj.com。由astro_bj.com的proxy找到最终用户。
因为无论一个SIP UA在哪里登陆,它配置的sipproxy都是固定的,astro_bj的用户的proxy就只能是sipproxy.astro_bj.com,而不能选择sipproxy.astro_gz.com。它的注册信息也只能发到该域的注册服务器上。
由以上可以得知,SIP网络的工作原理和Email系统的工作原理是一致的。一个域负责自己域内的所有用户,跨域间的通信需要通过DNS域名寻址来获得UA的proxy,然后才能再找到目标UA。可见,SIP号码并不仅仅是由username组成,后面的域名也是不可或缺的。
当然,在某些应用中,不会涉及到跨网通信,SIP URI的域名部分常常由proxy的IP地址代替,或者直接点对点的通信,直接由目标UA的IP地址代替。当然它就不能实现网间互连了。

发表于 @ 2005年03月25日 13:09:00|评论(loading...)|编辑