![在 LAN 通话中,VoIP 数据包是否通过互联网链路传输?](https://linux22.com/image/1238687/%E5%9C%A8%20LAN%20%E9%80%9A%E8%AF%9D%E4%B8%AD%EF%BC%8CVoIP%20%E6%95%B0%E6%8D%AE%E5%8C%85%E6%98%AF%E5%90%A6%E9%80%9A%E8%BF%87%E4%BA%92%E8%81%94%E7%BD%91%E9%93%BE%E8%B7%AF%E4%BC%A0%E8%BE%93%EF%BC%9F.png)
或者如果没有必要他们是否会离开局域网?
如果通话双方在同一个局域网中,SIP/Skype 通话语音数据包是否会通过互联网传入和传出?
如果是,我该如何避免?我想节省带宽并提高通话质量。
我知道使用 SIP 时,控制数据包必须到达控制器,而控制器通常位于远程,但实际的语音数据包可以在 P2P 连接中传输,而无需离开 LAN。我不确定如何使其工作,以及 Skype 是否会发生同样的事情。
答案1
它可能因协议而异,但由于您在标签中指定了 SIP 和 Skype,我将根据这些特定术语进行指定。
SIP 是基于会话的,因此一旦在两点之间创建了会话(通过 SIP 服务器),携带 RTP 音频流的实际 RDP 数据包仅在两点之间传输,因此如果这是在 LAN 上,一旦 SIP 服务器(无论在哪里)启动两点之间的连接,它就会退出,直到收到来自任一电话的请求(例如转接或再见)。此时的语音数据包永远不会离开 LAN。
就 Skype 而言,它不是 SIP,而是一个专有协议那是闭源的。老实说,我不确定这个协议是如何工作的,但我猜想它应该是相似的(将所有语音流量重定向到服务器会给该服务器和连接带来沉重的负载,我认为公司为此付出的成本将远远超过其应有的价值,因为这样做的好处相对较少)。
答案2
虽然有可能,但可能性不大。有几种简单的方法可以确定。
首先,从一个客户端到另一个客户端进行路由跟踪,以确保网络配置正确。如果路由跟踪数据包离开 LAN,则某些配置存在严重错误。
接下来,开始 VoIP 通话。通话开始后,请物理拔掉 WAN 连接,确保 LAN 保持正常运行。如果通话未中断,则数据包将与 LAN 隔离。如果通话中断,则数据包的路由效率肯定很低。
答案3
我不知道确切的答案,但我怀疑是的,Skype 将使用您的 LAN。这是一个微不足道的检查,我认为 Skype 人员没有理由不将其放入他们的应用程序中。
Skype 将通过 TCP 联系超级节点来建立连接。
超级节点将看到两台 PC 都位于 LAN 上的 NAT 后面,并且肯定存在端口限制防火墙。通常,这意味着超级节点必须在节点之间路由流量。 但超级节点可以看到两台PC都有相同的公网IP地址。
超级节点会通知您的 PC 将音频(通过 UDP)发送到彼此的内部 NAT 地址,然后观察结果。它只会这样做,因为它们具有相同的公共 IP 地址。如果成功,PC 将直接通信。否则,后备方案是使用超级节点路由音频。
就像我说的,我并不确切知道 Skype 的作用,但我之前曾研究过(用 C++ 实现的)VoIP 系统,并且知道这是一个简单的优化。
这里有一些论坛 线程对于直接 LAN 路由是否有效,人们的看法不一。根据这些不同的意见,我怀疑它不会因为某种原因一直有效。
答案4
我认为您需要使用需要直接 LAN 连接的程序来执行此操作。例如,iChat 可以执行 bonjour,而不需要基于互联网的服务器来代理连接。
我怀疑您会发现,任何基于服务的 VOIP 都无法直接通过 LAN 进行通话。至少,如果没有基于 LAN 的“公司”服务器作为代理,情况就是如此。