PlayFab Party 端口使用情况、防火墙以及数据包大小要求
本主题详细介绍启用聊天和数据通信所需的 PlayFab Party 端口使用情况、防火墙以及数据包大小要求。通信模式
PlayFab Party 使用两种通信模式:- HTTPS 通信,由 API 调用方发起,连接到多个云 Web 服务,包括 playfabapi.com。
- 基于 UDP 套接字的与透明云中继服务器以及其他对等设备(如果支持)之间的安全通信。
PartyRegionsChangedStateChange)将报告 PartyStateChangeResult::InternetConnectivityError。
对于 Web 服务请求问题,Party 之外的其他必要的 PlayFab 和平台操作(例如用户登录功能)也可能失败。这些失败通常是由于对 HTTPS 连接的本地防火墙限制或代理要求造成的。大多数问题可以通过启用从本地设备或网络到云 Web 服务的直接出站 HTTPS 通信来解决。
HTTPS 域名
Microsoft PlayFab Party 与多个云服务执行 UDP 和 HTTPS 连接。为确保正确的功能,基于域名过滤 HTTPS 流量的环境需要确保可以访问以下名称或名称模式: HTTPS 连接:- *.playfabapi.com
- *.speech.microsoft.com
- api.cognitive.microsofttranslator.com
MTU 和数据包大小
PlayFab Party 会自动执行分片和重组,以使大型应用程序消息适应环境的数据包大小限制。尽管有此功能,某些网络环境仍可能导致通信失败。 PlayFab Party 目前期望环境支持至少 1,419 字节的最大传输单元(MTU)大小,以避免性能不佳或潜在的连接失败。此 MTU 大小在典型环境中受支持。虚拟专用网络(VPN)、IPv4/IPv6 隧道或显式管理配置可能会在 Party 客户端、服务或其他客户端之间网络路径的一个或两个方向上减小 MTU 大小。 如果在给定环境中支持的端到端 MTU 不足,PartyManager::ConnectToNetwork 操作可能会因 PartyStateChangeResult::InternetConnectivityError 而失败。或者,连接可能成功,但设备可能会遇到不必要的延迟、数据包丢失或意外断开连接。
某些平台为最终用户、开发者或互联网服务提供商提供工具,用于帮助排查其环境中的 MTU 配置问题,应尽可能使用这些工具。
本地设备 UDP 端口使用情况
默认情况下,在大多数平台上,PlayFab Party 库将其 UDP 套接字绑定到操作系统动态分配的可用本地端口。Microsoft Game Core 是一个例外,PlayFab Party 默认绑定到该平台的“首选本地 UDP 多人游戏端口”。 在调用PartyManager::Initialize() 之前,通过设置 PartyOption::LocalUdpSocketBindAddress 选项,游戏可以改变此行为,将套接字绑定到特定的本地端口号,或绑定到除 Microsoft Game Core 的“首选本地 UDP 多人游戏端口”之外的、操作系统选择的可用端口。如果请求的端口已被你的游戏或设备上的另一个应用程序使用,则要么 PartyManager::Initialize() 会立即报告错误,要么初始 PartyRegionsChangedStateChange 将报告 PartyStateChangeResult::FailedToBindToLocalUdpSocket 错误,并且异步网络创建或连接操作将失败。
建议游戏使用默认的本地端口选择行为以获得最大的、无需配置的兼容性,除非因环境特定原因由最终用户请求。如果你的游戏使用非默认值,则可能有更多的平台特定要求。你应查阅每个平台的文档以获取端口使用指南。
PlayFab Party 通信始终要求允许出站发起的数据包及其后续回复从此选定的本地 UDP 端口发送到下一节中描述的远程目的地。网络管理员应遵循 Internet 标准的防火墙和网络地址转换(NAT)最佳实践,例如 RFC 4787 - “Network Address Translation (NAT) Behavioral Requirements for Unicast UDP”,以获得最大兼容性。对于为 Party 网络使用直接点对点连接的游戏,这些最佳实践尤为重要,因为在支持有限的环境中可能允许连接到网络,但会阻止从一台设备到另一台设备建立直接通信。
远程 IP 地址和 UDP 端口
Microsoft PlayFab Party 跨多个区域提供动态扩展的服务,为用户提供最佳延迟。这意味着没有永久的远程目的地主机名、IP 地址或端口可供有严格通信约束需求的网络管理员参考。 Microsoft 每周提供 Azure 的 IP 地址范围列表更新,可供下载。如果可以实施持续同步的策略以限制本地网络流量,则此列表可能有用。在大多数情况下,持续维护此列表是一项挑战,并且容易出现细微的连接失败。此外,对于 Party 网络内的直接点对点连接,还必须知道并启用远程客户端 IP 地址的连接。出于这些原因,我们建议防火墙不限制远程 IP 地址连接。 PlayFab Party 可能使用的支持远程端口范围可以是除 Internet Assigned Numbers Authority (IANA) 保留范围 0-1023 之外的任何端口。目前透明云中继仅会分配 30000-65535 范围的端口号,但 Microsoft 保留将来更改此行为的权利。作为最佳实践,应使用 1024-65535 的端口范围。这对于为 Party 网络使用直接点对点连接的游戏尤为重要,因为 NAT 实现通常从此范围分配端口。阻止推荐范围以外的远程端口也可能会阻止直接通信。 要启用 UDP 连接,基于域名过滤 UDP 流量的环境需要确保可以访问以下名称或名称模式:- *.cloudapp.azure.com
