【问题标题】:What are the advantages of using multiple ports in a game?在游戏中使用多个端口有什么好处?
【发布时间】:2016-04-12 18:55:56
【问题描述】:

在游戏中使用多个端口有什么好处?我明白为什么有些游戏会出于不同目的使用 TCP 和 UDP 的组合,但为什么有些游戏会使用多个 TCP 或 UDP 端口?这有什么好处吗?我之所以这么问,是因为我发现自己正在为我的游戏编写网络代码,我想知道为什么其他人会不顾一切地拥有多个端口?

例如 GTA V 使用 5 个 UDP 端口,而刺客信条启示录使用 4 个 TCP 和 4 个 UDP 端口。

【问题讨论】:

  • 可能是因为作者不懂网络。港口是稀缺资源。不要浪费它们。
  • @EJP 一定是有原因的...例如 GTA V 使用 TCP 端口:80、443 UDP 端口:6672、61455、61457、61456 和 61458 为什么是 5 个 UDP 端口?许多大游戏似乎都在这样做?
  • 80 是 HTTP。 443 是 HTTPS。使用五个 UDP 端口是犯罪行为。
  • @EJP 也许他们有 5 个不同的服务器与单个游戏通信?
  • 这不是使用五个 UDP 端口的理由。

标签: networking tcp udp


【解决方案1】:

总是有原因的。

它们通常不是(完全)技术性的。例如,一个团队正在开发游戏间聊天功能,而另一个团队正在开发游戏 X 的服务器-客户端协议。然后它们被集成到同一个产品中,但由于成本、时间限制和担忧,没有人会为统一协议而烦恼关于未来的可维护性等。

还有纯技术原因:

如果游戏服务器和聊天服务器运行在不同的位置,自然会使用多个连接;另一种方法是在服务器端使用一种反向 NAT 盒,但这是有风险的,因为它是一个瓶颈和单点故障。

稳定性:如果聊天服务器崩溃或出现故障,您不希望它也中断客户端和游戏服务器之间的流,因此在并行连接上进行通信更安全。

总体而言,这是一个理论与实践相结合的经典示例:使用单个端口(和连接)会很棒,但出于各种原因将不同的传输和交互分开更为实际。

有点跑题了,你有没有注意到现在访问网页时打开了多少个连接?通常是几十个。如果没有所有广告,可能会少一个数量级。反正和那个比起来,开5个连接的游戏算什么。

【讨论】:

  • 另一个原因是,在具有某些要求的单个 TCP 或 UDP 连接上多路复用流是一个难以解决的问题。参见 QUIC 和 HTTP/2,非常聪明的人付出了很多努力来解决这个问题,我什至不确定这是否足以满足游戏的低延迟要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多