【发布时间】:2020-03-08 16:25:55
【问题描述】:
如果服务器 A 收到一个 UDP 数据包,由于 UDP 是无连接的,它是否可以将其转发给服务器 B,并让服务器 B 直接响应最终客户端,而不需要通过服务器 A 返回?
我的直觉是不,除非服务器 A 和服务器 B 具有相同的 IP 地址(可能是任播?)
但是如果客户端被构建为也是一个 UDP 服务器,它在理论上可以工作,因为来自服务器 B 的(逻辑)响应看起来就像一个新请求。但是由于防火墙和 NAT,这在实践中确实行不通,出于同样的原因,很难从防火墙、路由器和 ISP 后面托管游戏服务器。
【问题讨论】:
-
您可以发送它,但它不会被接收者视为响应,因为它来自与发送请求不同的源地址,即使防火墙和 NAT 允许。
-
为什么要这样做?你能在服务器附近设置一些(有状态的)盒子来确保数据包被中继到适当的服务器吗?
-
理想情况下,我应该能够将请求从服务器 A 转发到直接响应最终用户的服务器 B,而不必通过不关心的 A 代理可能较大的响应。不过,即使对于像 UDP 这样的无连接协议,互联网似乎也不是这样工作的。
标签: networking network-programming udp