我已经阅读了很多关于这个主题的内容,包括很多关于 SO 的内容。所以虽然不完全是一个编程问题,但希望可以在这里问。我是一名程序员,正在构建一个包含语音聊天的应用程序,如果有帮助的话。
我试图了解 UDP 转发如何通过 NAT 工作,特别是对于 Skype 和 Google Talk 语音聊天 (VOIP) 等系统。
我认为路由器正确路由 UDP 流量的唯一方法是,如果回复来自它发送数据包的相同 IP/端口组合。或者换句话说,客户端无法从服务器获取UDP数据包,除非它首先发送一个,否则路由器不知道将数据包发送到哪个客户端。
因此,如果我理解正确的话,Skype 和 Google Talk 等服务会进行一些初始设置以帮助对等方定位彼此,但之后通信变为对等通信。如果路由器不期望来自客户端 IP 的任何流量,那么来自客户端的第一个数据包如何直接到达另一个客户端?