我仍在学习 SIP 及其所有协议,特别是尝试将 PJSIP 集成到 iPhone 应用程序中以进行 p2p 呼叫。我有一个关于使用 PJSUA 的对等 2 对等连接的问题。通过直接使用 URI 调用,我可以完美地调用本地网络上的其他客户端:
- 啜饮:192。. .*:5060
我很好奇这是否适用于在不使用服务器配置的情况下直接调用不在本地网络上的其他 SIP URI - 如果不是这样,是否有另一种方法可以在不使用服务器配置的情况下进行 p2p 调用?
提前致谢,
我仍在学习 SIP 及其所有协议,特别是尝试将 PJSIP 集成到 iPhone 应用程序中以进行 p2p 呼叫。我有一个关于使用 PJSUA 的对等 2 对等连接的问题。通过直接使用 URI 调用,我可以完美地调用本地网络上的其他客户端:
我很好奇这是否适用于在不使用服务器配置的情况下直接调用不在本地网络上的其他 SIP URI - 如果不是这样,是否有另一种方法可以在不使用服务器配置的情况下进行 p2p 调用?
提前致谢,
作为一般原则,您可以在没有服务器配置的情况下拨打电话,但需要配置一些东西。正如 mattjgalloway 在您问题下方的评论中指出的那样,最强大的解决方案是一罐涉及ICE的蠕虫,它为 STUN 之类的东西提供了一种“伞”协议。
上次我碰到这个问题时,我有一个要求,我不能使用基于 Internet 的 SIP 服务器来提供帮助。我提出了各种注册表的想法:您的客户可以定义一堆具有特定路由要求的“地址空间”。对于 LAN 中的 SIP URI,您无需定义路由;对于您公司的 VPN 访问网络中的 URI,您定义一个通过您的 VPN 连接的路由;对于其他所有内容,您都可以通过 Internet 路由器定义路由。
通过“定义路由”,我的意思是当您调用某个特定地址空间中的 URI 时,您会将哪些 IP 存储到 Contact 标头中,您可能需要哪些 Route 标头,等等。
因此,拨打电话的过程变为:
这基本上以手动管理的形式复制了 ICE 给你的一半。“一半”,因为这样可以确保一个 SIP 代理可以进行呼叫,这样 SIP 路由就可以正常工作。缺少的一半是您仍然需要某种注册商,并且您的联系人列表中的每个代理都需要进行必要的设置才能接听来电。(如果代理位于 NATting 互联网路由器后面,则路由器需要运行 SIP 代理,或将端口 5060、5061 转发到特定机器(可能是代理,或为 LAN 代理提供服务的代理)。
事实上,它是一大罐蠕虫。
基本问题是解决在互联网上的任何地方获取传输端口以进行多媒体流量的问题。许多公司/专家都试图解决这种情况。一种可能的解决方法是购买一个域并使用 YATE 或 Asterisk 在可从 Internet 访问的地址上设置一个基本注册商,并将其配置为根据需要也使用 ICE。两端的iphone应用程序可以在启动时自动注册到它。然后拨打 P2P 电话。