如果服务器A接收到UDP数据包,由于UDP是无连接的,它是否可以将其转发到服务器B并让服务器B直接响应最终客户端,而无需通过服务器A来返回?
除非服务器A和服务器B具有相同的IP地址(也许可以广播?),否则我的直觉不会。
但是,如果将客户端构建为也是UDP服务器,则它在理论上可以工作,因为来自服务器B的(逻辑)响应看起来就像是一个新请求。但这实际上由于防火墙和NAT而实际上不起作用,出于同样的原因,很难在防火墙,路由器和ISP的后面托管游戏服务器。
如果服务器A接收到UDP数据包,由于UDP是无连接的,它是否可以将其转发到服务器B并让服务器B直接响应最终客户端,而无需通过服务器A来返回?
除非服务器A和服务器B具有相同的IP地址(也许可以广播?),否则我的直觉不会。
但是,如果将客户端构建为也是UDP服务器,则它在理论上可以工作,因为来自服务器B的(逻辑)响应看起来就像是一个新请求。但这实际上由于防火墙和NAT而实际上不起作用,出于同样的原因,很难在防火墙,路由器和ISP的后面托管游戏服务器。
如果服务器A接收到UDP数据包,由于UDP是无连接的,它是否可以将其转发到服务器B并让服务器B直接响应最终客户端,而无需通过服务器A来返回?
是的,可以。但是,有一些警告:
NAT设备,大多数客户端都在后面。有several types of NAT devices。 全锥 NAT可以很好地接受重定向的数据包,但是受地址限制的NAT将要求该数据包从发送到的地址返回(因此,您的任播想法将起作用,因为以及简单地让服务器B欺骗服务器A的IP)。 受端口限制或对称 NAT也将需要相同的源端口(即服务器B必须从服务器A接收到的同一端口发送响应)。
其他类型的网络middleboxes,例如防火墙可能会阻止返回的数据包
应用程序-客户端应用程序会接受来自其他IP地址和端口的响应吗?