noiile的专栏

不爽,千万别骂我

原创 SIP网络概述收藏

新一篇: 创意组合——friend class + virtual class member | 旧一篇: SIP网络穿越所有类型 NAT的解决方案(2)

Noiile

一个纯粹的SIP网络由以下几个部分组成:

SIP User AgentSIP用户代理,是终端设备,在通话应用中,它相当于一个IP电话。

SIP Proxy ServerSIP 代理服务器,它代理User Agent处理所有的网络服务。

SIP Redirect Server:负责提供location service, 定位服务

SIP Registrar:所有属于该域的User Agent都必须要到Registrar处注册,绑定自己实际的联系地址。

 

 

SIP号码由两部分组成,usernamehost。其中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网络:1astro_gz.com 2)astro_bj.com

来自域astro_gzSIP UA要呼叫astro_bjSIP UA。网络是怎样寻址呢?

 

其实,SIP网络系统就类似Email系统一样。要进行跨网呼叫,不能仅仅靠个username,而是需要一个完整的SIP URI地址。后面带着的域名指定了该用户是属于哪个SIP网络的。每个域都需要有一个完整的SIP网络。每个域的注册用户只能向自己隶属的那个域发送注册信息和其他SIP消息(点对点通信除外)。SIP服务器也只能找到属于自己这个域内的注册拥护。如果需要找其他域的SIP UA,需把SIP Message传到目标UA所隶属的那个域的SIP服务器,由它来寻找目标UA的最终地址。

 比如:carol@astro_gz.comINVITE bob@astro_bj.com,它将这个INVITE传到sipproxy.astro_gz.comproxy从被呼叫的SIP地址得知该用户不属于自己这个域的,就通过DNS寻址,把这个消息传到sipproxy.astro_bj.com。由astro_bj.comproxy找到最终用户。

因为无论一个SIP UA在哪里登陆,它配置的sipproxy都是固定的,astro_bj的用户的proxy就只能是sipproxy.astro_bj.com,而不能选择sipproxy.astro_gz.com。它的注册信息也只能发到该域的注册服务器上。

 

由以上可以得知,SIP网络的工作原理和Email系统的工作原理是一致的。一个域负责自己域内的所有用户,跨域间的通信需要通过DNS域名寻址来获得UAproxy,然后才能再找到目标UA。可见,SIP号码并不仅仅是由username组成,后面的域名也是不可或缺的。

 

当然,在某些应用中,不会涉及到跨网通信,SIP URI的域名部分常常由proxyIP地址代替,或者直接点对点的通信,直接由目标UAIP地址代替。当然它就不能实现网间互连了。

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

新一篇: 创意组合——friend class + virtual class member | 旧一篇: SIP网络穿越所有类型 NAT的解决方案(2)

评论

#liu.s 发表于2006-04-01 18:31:00  IP: 222.38.111.*
好帖,讲的很明白
#fahai800 发表于2008-09-04 17:23:21  IP: 61.191.26.*
为什么看不到图片呢?
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © noiile