我正在为游戏构建中继服务器,并希望它在大多数情况下都能正常工作。主机和客户端将连接到充当中间人的中继服务器。
基本信息:
中继服务器(我们称之为 R)获得一个静态 IP。
应用程序(服务器或客户端)(我们称之为 A)理论上可以使用任何类型的提供商,例如 3G/4G/Wifi......并且位于任意数量的防火墙/NAT/代理/交换机之后......想想最坏的情况。
所以我的问题是,如果 A 向 R 发送一条 UDP 消息,R 会获得一个 IP 和一个可以发送响应的端口。一切正常。
但是假设 A(同一个 A)向 R 发送另一条 UDP 消息。世界上是否存在一些硬件或者软件可能会改变 R 响应的 IP 或端口?
理论上的例子:
即使消息发往与之前相同的 IP,NAT 能否提供不同的端口来响应?是否存在防火墙只允许每个出站消息响应一次?一条消息是否可以通过代理发送,而另一条消息不通过代理发送,从而导致其中一条消息可能具有不同的端口来发送响应?如果 A 使用 3G 连接并开车,并且他们切换了基站。R 在使用新的基站时可以获得另一个 IP 或端口吗?再次考虑最坏的情况。
为什么?
我之所以问这个问题是因为我想知道:
- 我可以使用从 A 发送的第一条消息中获得的相同 IP 和端口。
- 或者我应该不时发送一条消息来更新回复信息。
- 或者,如果 A 首先发送消息,则 R 是否应该仅发送给 A,而我仅对每个请求发回一个响应。
无论情况如何,第 3 条应该始终有效。但我只想知道我是否想太多了。
这个问题可能太宽泛,但很难准确指出。