

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 玩家网关的工作原理
<a name="ddos-protection-howitworks"></a>

玩家网关使用中继网络在游戏客户端和游戏服务器之间路由 UDP 流量。这通过在流量到达游戏服务器之前对其进行验证、限制玩家流量、向公众隐藏游戏服务器 IP 地址以及在中继端点变得不健康时提供更新的端点来防御 DDo S 攻击。

## 流量流
<a name="ddos-protection-howitworks-traffic-flow"></a>

当玩家连接到游戏会话时，您的游戏后端会从 `GetPlayerConnectionDetails` API 中检索中继端点和玩家网关令牌，并将其发送到游戏客户端。游戏客户端将玩家网关令牌预置在 UDP 数据包中，并将数据包发送到中继端点。中继网络验证令牌并将合法流量路由到游戏服务器。在交付之前，中继网络会剥离玩家网关令牌，以便游戏服务器接收原始游戏客户端有效负载，并且不需要更改代码。从游戏服务器返回到游戏客户端的通信通过中继网络返回，无需修改。

![\[架构图显示了游戏客户端通过中继网络连接到游戏服务器\]](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/player_gateway_architecture.png)


## 核心概念
<a name="ddos-protection-howitworks-components"></a>

### 中继端点
<a name="ddos-protection-howitworks-endpoints"></a>

中继端点是游戏客户端用来通过玩家网关发送流量的 IP 地址和端口组合。每个玩家都会收到多个端点，这些端点因玩家而异，以分配流量并减少攻击对同一游戏会话中其他玩家的影响。

![\[该图显示了多个玩家在相同的游戏会话中接收不同的中继端点\]](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/player_gateway_relay_endpoints.png)


### 玩家网关代币
<a name="ddos-protection-howitworks-tokens"></a>

玩家网关令牌是加密的字节数组，授权玩家通过玩家网关向游戏会话发送流量。`GetPlayerConnectionDetails`API 以 base64 编码的字符串形式返回令牌。游戏客户端必须在每个 UDP 数据包中预先添加玩家网关令牌。中继网络验证令牌并拒绝带有无效或缺失令牌的数据包。

**重要**  
玩家网关令牌不得加密，并且必须出现在游戏客户端发送的每个 UDP 数据包的开头。如果您的游戏对有效负载进行加密，请在加密游戏数据后预先添加未修改的玩家网关令牌。

玩家网关代币的有效期至少为 3 分钟。我们建议每 60 秒刷新一次令牌，以确保玩家在中继端点变得不健康时收到更新的端点。

### GetPlayerConnectionDetails API
<a name="ddos-protection-howitworks-api"></a>

您的游戏后端调用 `GetPlayerConnectionDetails` API 来检索游戏会话中玩家的连接详细信息。API 返回中继端点和玩家网关令牌，或者回退到游戏服务器的 IP 地址和端口进行直接连接。您的游戏客户端应设计为可以处理这两种连接类型。要在中继端点变得不健康时接收更新的端点，请在整个游戏会话中定期调用此 API（建议每 60 秒调用一次）。

有关更多信息，请参阅 [GetPlayerConnectionDetails API](ddos-protection-integrate.md#ddos-protection-integrate-backend-api)。

## 监控玩家网关
<a name="ddos-protection-howitworks-monitoring"></a>

Player gateway CloudWatch 向 Amazon 发布指标，以帮助您监控网络流量模式、识别潜在的 DDo S 攻击并跟踪中继性能。指标包括入/出的数据包和字节、限制的流量以及玩家会话。有关玩家网关指标的完整列表，请参阅[DDoS 保护（玩家网关）指标](monitoring-cloudwatch.md#gamelift-metrics-fleet-playergateway)。

## IPv4 和 IPv6 兼容性
<a name="ddos-protection-howitworks-ipv4-ipv6"></a>

游戏客户端使用进行通信 IPv4。玩家网关 IPv6 用于与游戏服务器通信。 Amazon GameLift Servers IPv6 根据您的舰队配置自动处理 IPv4 和之间的转换。

有关在舰队上配置玩家网关的更多信息，请参阅[CreateFleet](https://docs.amazonaws.cn/gameliftservers/latest/apireference/API_CreateFleet.html#gameliftservers-CreateFleet-request-PlayerGatewayMode)或[CreateContainerFleet](https://docs.amazonaws.cn/gameliftservers/latest/apireference/API_CreateContainerFleet.html#gameliftservers-CreateContainerFleet-request-PlayerGatewayMode)。有关 IPv4 和 IPv6 支持的更多信息，请参阅[IPv4 和 IPv6 兼容性](ddos-protection-enable.md#ddos-protection-enable-ip-protocol)。