4

我有一个多人游戏软件,它接近成熟,有望很快进入公开测试阶段。对于非正式的私人测试,我一直在使用我喜欢的端口号,它属于用户端口范围,1024-49151。我想知道我是否应该向 IANA 注册一个端口(在这种情况下,我不能使用我当前的端口,因为它已经被一个非常模糊的服务使用)。

我有点困惑的是,我们被告知不要在未注册的情况下使用用户端口,而大多数主要的多人游戏(例如使命召唤、军团要塞 2、Minecraft)都使用此范围内的数字而无需注册。游戏是否不被认为是该范围的“重要”用途,需要注册?我是否应该完全避免这个问题并从动态(临时)范围中选择一个数字 49152-65535?我只是想知道为什么大多数游戏都避免了这个上限,如果它不需要 IANA 注册(害怕与临时端口发生冲突?)。或者我根本不需要担心注册?当我准备发布我的第一个网络应用程序时,我只是想成为一个负责任的网民。谢谢。

4

1 回答 1

4

如果必须在每个单独的客户端* 上打开特定端口,则需要在用户端口范围内注册一个端口,因为RFC 6335 , 8.1.2.:

[...] 应用软件不得假定动态端口范围内的特定端口号始终可用于通信 [...]

在您的服务器(如果有)上,您可以使用任何端口,无需注册。但是,我建议也使用动态端口范围内的端口。然后,您的客户端可以从某种主服务器(例如通过 HTTP / 端口 80 或 HTTPS / 端口 443)获取服务器列表及其当前端口号。这样一来,您 1. 消除了误用的用户端口,并且 2. 可以随时更改您的实际服务器端口。


*:如果您的播放器在 NAT 之后,则必须在 NAT 设置中转发客户端端口;这将使您的游戏难以为没有经验的用户玩。通过您的服务器重定向所有流量可能是一个更好的主意......

如果您在某处使用服务器并且确实需要客户端协议,则可以通过打开随机动态端口并通知服务器该端口来规避向 IANA 注册的问题,然后通知所有想要连接的客户端。这样,您根本不需要任何用户端口,因此无需注册。但这使得 NAT 后面的用户更加困难。

于 2014-04-17T20:41:13.910 回答