您可以响应来自不同服务器的 UDP 数据包吗?
Can you respond to a UDP packet from a different server?
如果服务器A收到一个UDP数据包,由于UDP是无连接的,是否可以将它转发给服务器B,让服务器B直接响应终端客户端而不通过服务器A返回?
我的直觉是不,除非服务器 A 和服务器 B 具有相同的 IP 地址(也许是任播?)
但是如果客户端也被构建为 UDP 服务器,理论上它可以工作,因为来自服务器 B 的(逻辑)响应看起来就像一个新请求。但由于防火墙和 NAT,这在实践中确实行不通,出于同样的原因,很难在防火墙、路由器和 ISP 后面托管游戏服务器。
If server A receives a UDP packet, can it forward it to server B and have server B directly respond to the end client without going back through server A since UDP is connectionless?
是的,可以。但是,有一些注意事项:
NAT 设备,大多数客户端都在后面。有several types of NAT devices。 full-cone NAT 会很好地接受重定向的数据包,但是地址受限的 NAT 会要求数据包从发送到的相同地址 return(因此,您的任播想法将起作用,并且只需让服务器 B 欺骗服务器 A 的 IP)。 port restricted 或 symmetric NAT 也需要相同的源端口(即服务器 B 必须从服务器 A 接收到的相同端口发送响应来自).
其他类型的网络 middleboxes,例如防火墙可能会阻止 returning 数据包
应用程序 - 客户端应用程序是否会接受来自不同 IP 地址和端口的响应?
如果服务器A收到一个UDP数据包,由于UDP是无连接的,是否可以将它转发给服务器B,让服务器B直接响应终端客户端而不通过服务器A返回?
我的直觉是不,除非服务器 A 和服务器 B 具有相同的 IP 地址(也许是任播?)
但是如果客户端也被构建为 UDP 服务器,理论上它可以工作,因为来自服务器 B 的(逻辑)响应看起来就像一个新请求。但由于防火墙和 NAT,这在实践中确实行不通,出于同样的原因,很难在防火墙、路由器和 ISP 后面托管游戏服务器。
If server A receives a UDP packet, can it forward it to server B and have server B directly respond to the end client without going back through server A since UDP is connectionless?
是的,可以。但是,有一些注意事项:
NAT 设备,大多数客户端都在后面。有several types of NAT devices。 full-cone NAT 会很好地接受重定向的数据包,但是地址受限的 NAT 会要求数据包从发送到的相同地址 return(因此,您的任播想法将起作用,并且只需让服务器 B 欺骗服务器 A 的 IP)。 port restricted 或 symmetric NAT 也需要相同的源端口(即服务器 B 必须从服务器 A 接收到的相同端口发送响应来自).
其他类型的网络 middleboxes,例如防火墙可能会阻止 returning 数据包
应用程序 - 客户端应用程序是否会接受来自不同 IP 地址和端口的响应?