获得SIP,RTP和NAT的权利:谁在做什么?

我有点困惑谁是(PBX vs.手机)在我们的IP电话设置中做了什么。

我们有我们的电话系统托pipe外部。 这意味着我们已经在我们的位置安装了物理IP电话,但PBX位于其他地方。我们遇到了各种各样的麻烦,这使我很烦恼,我无法正确地解决各种问题,由于其实我不明白这是怎么一起工作的。 我一直在阅读SIP和RTP如何工作,但还有一些我还没有完全得到的东西。 我的问题涉及到SIP和RTP,但也涉及到NAT

我们的场景很简单。 集团电话可以在互联网上的某个公共IP上访问。 我们在防火墙后面(NAT)。

首先,我的理解是SIP包不携带audio。 他们只是为了确保在电话和PBX之间build立会话(如在会话初始协议中),例如在即将build立呼叫时。 这些数据包通常是UDP,并且通常在端口5060上“传播”。

虽然不具体到SIP; 当SIP UDP数据包通过NAT时,NAT 会将源端口转换为与传出数据包不同的东西 ,以确保NAT可以将响应映射回NAT后面的正确的电话。

现在,如果有人想联系我们的某个电话,他们会拨打该号码,最终打到PBX。 这是我的理解,PBX然后发送INVITE(SIP UDP数据包)到有问题的电话。 该数据包包含IP地址和电话应连接的端口号,以build立RTP会话(这是实际的audio数据)。

问题1 :我听说电话必须定期向PBX发送保持活动请求,以确保NAT不会过期UDP会话。 这一点很重要,因为PBX启动对呼叫的INVITE请求,并且NAT不能过期UDP会话,以便将任何给定的INVITE请求映射到正确的电话。 这是正确的吗? 是否有任何来自PBX的INVITE请求使用来自电话的保持活动请求中提供的源端口(将通过NAT进行翻译)?

问题2 :手机是否对任何给定的INVITE SIP请求起作用并连接到集团电话? 这意味着我不应该在这里担心NAT,因为电话会发送第一个RTP数据包,并在NAT中“打孔”。

问题3 :“相反”是如何工作的? 也就是说,如果我想从位于NAT后面的某个电话呼叫某个人,我的电话是否向该PBX发送了一个INVITE SIP请求? 这对我来说是没有意义的,因为PBX不能和我的手机build立一个RTP会话。

有一个类似(ISH)的问题,我问昨天有关的RTP和它是如何实际上stream… 思科ASA PBR和多个ISPS的多个SIP提供商