Udp Skype和Google Talk怎么可能主要是点对点的?

Udp Skype和Google Talk怎么可能主要是点对点的?,udp,xmpp,skype,google-talk,Udp,Xmpp,Skype,Google Talk,关于这个问题,我读了很多书,包括很多这样的书。所以,虽然这不是一个编程问题,但希望可以在这里提问。我是一名程序员,正在开发一款包括语音聊天的应用程序,如果有帮助的话 我试图了解UDP转发是如何通过NAT工作的,特别是对于Skype和Google Talk voice chat(VOIP)等系统 我认为路由器能够正确路由UDP流量的唯一方法是,如果应答来自它发送数据包的同一IP/端口组合。或者换句话说,客户端无法从服务器获取UDP数据包,除非它首先发送一个,否则路由器不知道将数据包发送到哪个客户端

关于这个问题,我读了很多书,包括很多这样的书。所以,虽然这不是一个编程问题,但希望可以在这里提问。我是一名程序员,正在开发一款包括语音聊天的应用程序,如果有帮助的话

我试图了解UDP转发是如何通过NAT工作的,特别是对于Skype和Google Talk voice chat(VOIP)等系统

我认为路由器能够正确路由UDP流量的唯一方法是,如果应答来自它发送数据包的同一IP/端口组合。或者换句话说,客户端无法从服务器获取UDP数据包,除非它首先发送一个,否则路由器不知道将数据包发送到哪个客户端


因此,如果我理解正确的话,像Skype和Google Talk这样的服务会进行一些初始设置,以帮助对等方相互定位,但在这之后,通信就变成了对等通信。如果路由器不期望来自客户端IP的任何流量,那么来自客户端的第一个数据包如何直接到达另一个客户端?

我正在研究它,因为我正在制作一个游戏(大学工作)P2P

纳特怎么样? 当客户端发出请求时,NAT通过门转发可用的ip(请注意,此端口独立于发送它的计算机上的端口),并将源ip更改为您的ip(路由器的公共ip)。现在魔法来了:它在ip和与该请求相关的端口中存储一个表,以及他用来发送消息的路由的门。因此,当路由器接收到请求时,它会查看门和表是什么,以查看谁应该发送请求,而不管发出请求的ip或端口是什么

2如何为“远程客户端”配置NAT? 不可能的。但是客户端可以间接设置“您的”NAT。需要一台服务器来调解连接的启动。 *client1client2并连接到服务器,服务器发送到client1ip和client2的端口(NAT)。 *client1现在有了连接到client2的数据,因此他将相同的连接发送到服务器,将数据client2以相同的方式接收到数据服务器

注1:TCP不工作的原因很明显,即必须是UDP。 注2:数据在NAT表中的时间有多长,如何防止“超时”?好问题,就像我说的,我正在学习,哈哈,如果有人知道放在这里


Felippi CM

我明白我遗漏了什么。我想NAT会关心“回复”来自哪里,如果不从服务器返回,它就不会正确路由。我现在明白了,这并不重要,只要服务器告诉客户机B客户机A在哪里(IP和端口),客户机A前面的NAT就不关心数据包是来自服务器还是客户机B。它有一些好的信息,并且有助于了解“STUN”。