> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comportamento das portas no PC

> Saiba como as portas no PC tratam o tráfego TCP e UDP de entrada, como declarar isenções de firewall no MicrosoftGame.config e como os firewalls afetam os títulos.

Este tópico descreve os comportamentos das portas no PC.

## Regras de portas

* As portas do PC permitem todo o tráfego de saída do TCP (Transmission Control Protocol) e do UDP (User Datagram Protocol), bloqueando pacotes TCP e UDP de entrada não solicitados, quando os usuários usam o firewall padrão interno do Windows.

* A porta multijogador UDP local preferencial se comporta da mesma forma que as outras portas, mas permite pacotes UDP de entrada não solicitados. O TCP não pode ser usado.

* Os fluxos de saída sempre funcionarão e você não precisa declarar nenhum atributo para isso. Quando os usuários enviam o primeiro pacote ao servidor/dispositivo remoto, os pacotes de entrada subsequentes desse dispositivo serão entregues de qualquer forma.

* Para conexões ponto a ponto em títulos do Microsoft Game Development Kit (GDK), você deve usar UDP na porta multijogador preferencial. Além disso, você deve executar o hole punching de firewall e NAT. Pacotes TCP de entrada não solicitados são bloqueados, a menos que o usuário crie uma exceção para o jogo. Pacotes UDP de entrada não solicitados também são bloqueados por padrão e exigem exceções do usuário ou alguma forma de hole punching de firewall para desbloquear fluxos UDP ponto a ponto.

* As exceções para o título podem ser adicionadas pelo usuário por meio das configurações do firewall ou quando você declara atributos específicos durante o processo de empacotamento. Tanto as configurações de firewall dos usuários quanto os atributos do pacote do jogo determinam o comportamento real dos pacotes de entrada não solicitados.

* É importante observar que os usuários de PC podem usar firewalls de terceiros. Essas configurações afetarão o comportamento geral das portas. Mais detalhes abaixo.

**Dica**: o [PlayFab Party](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/playfab-party-intro-networking.md) fornece uma topologia de rede ponto a ponto que lida automaticamente com essa funcionalidade. Como alternativa, confira as RFCs de [STUN](https://tools.ietf.org/html/rfc5389) e [ICE](https://tools.ietf.org/html/rfc8445) como ponto de partida para sua própria implementação.

## Gerenciamento do tráfego de entrada não solicitado

Os títulos de PC criados usando o GDK são publicados como pacotes MSIXVC.

Quando os títulos são lançados como pacotes MSIXVC, você tem a opção de declarar como o tráfego de entrada não solicitado é tratado declarando atributos como [privateNetworkClientServer](https://learn.microsoft.com/uwp/schemas/appxpackage/uapmanifestschema/element-capability) ou [internetClientServer](https://learn.microsoft.com/uwp/schemas/appxpackage/uapmanifestschema/element-capability) no arquivo **MicrosoftGame.config**.

**Importante:** devido aos firewalls e às configurações dos usuários, esses atributos podem não ter nenhum efeito real. Para saber mais, confira [O firewall e como ele afeta o tráfego](#firewall-and-how-it-affects-traffic).

A tabela abaixo lista como os atributos afetam o acesso do tráfego de entrada não solicitado e a experiência esperada do cliente.

| MicrosoftGame.config | Acesso | Experiência esperada do cliente |
| - | - | - |
| **privateNetworkClientServer** especificado | Permite tráfego de entrada não solicitado da LAN | As exceções para o jogo são adicionadas durante a instalação da imagem executável, conforme especificado no pacote do jogo. |
| **privateNetworkClientServer** NÃO especificado | Mantém o comportamento padrão, em que todo o tráfego de entrada não solicitado da LAN é bloqueado | Nenhuma notificação é exibida. Pacotes UDP/TCP de entrada não solicitados são descartados silenciosamente. |
| **internetClientServer** especificado | Permite tráfego de entrada não solicitado da Internet ponto a ponto | As exceções para o jogo são adicionadas durante a instalação da imagem executável, conforme especificado no pacote do jogo. |
| **internetClientServer** NÃO especificado | Mantém o comportamento padrão, em que todo o tráfego de entrada não solicitado da Internet ponto a ponto é bloqueado | Nenhuma notificação é exibida. Pacotes UDP/TCP de entrada não solicitados são descartados silenciosamente. |

### Como editar o MicrosoftGame.config para títulos do GDK

* Acesse o código-fonte do seu título.
* Abra **MicrosoftGame.config**.
* Adicione o snippet de código abaixo e salve o arquivo.

Observe que, ao compilar o pacote MXIXVC, será gerado um aviso no arquivo de log do **SubmissionValidator**.

```xml theme={null}
<ExtendedAttributeList>
  <ExtendedAttribute Name="Capability" Value="privateNetworkClientServer"/>
  <ExtendedAttribute Name="Capability" Value="internetClientServer"/>
</ExtendedAttributeList>
```

Quando as propriedades são adicionadas ao arquivo **MicrosoftGame.config** do jogo, elas são aplicadas ao **AppXManifest.xml** gerado. Para saber mais sobre o processo de geração, confira [Visão geral do MicrosoftGame.config](https://docs.xbox.com/pt-BR/build/core-features/common/game-config/MicrosoftGameConfig-Overview.md).

## O firewall e como ele afeta o tráfego

O firewall e as configurações dos usuários afetam os recursos de rede do seu jogo. Esta seção descreve como os firewalls afetam o tráfego de títulos do GDK, o que ajudará você a aprimorar o design de rede.

Para proporcionar uma melhor compreensão deste tópico, o acesso às portas afetado pelo firewall para jogos Win32 também está incluído como referência.

Em geral, você precisa estar preparado para que os atributos **privateNetworkClientServer** e **internetClientServer** não tenham efeito para usuários com firewalls de terceiros. Espera-se que isso corresponda a 30-40% do total de usuários.

### Jogos executáveis do GDK

**Usuários com o firewall padrão do Windows 10**

* Os atributos **privateNetworkClientServer** e **internetClientServer** funcionam conforme descrito anteriormente
* Os fluxos baseados em saída sempre funcionarão, com ou sem os atributos **privateNetworkClientServer** e **internetClientServer** definidos. Desde que os usuários enviem o primeiro pacote ao servidor/dispositivo remoto, os pacotes de entrada subsequentes desse dispositivo serão entregues.

**Usuários com firewalls de terceiros**

* Os atributos **privateNetworkClientServer** e **internetClientServer** não têm efeito. Esses usuários descartarão pacotes de entrada não solicitados silenciosamente. Observação: isso acontece **independentemente** de você ter declarado ou não os recursos de acesso no **MicrosoftGame.config** durante o empacotamento.
* Todas as portas, incluindo a porta multijogador UDP local preferencial, estão sujeitas às políticas especificadas por esses firewalls.
* Os fluxos baseados em saída normalmente funcionarão. Cabe ao usuário criar as exceções adequadas para o acesso à rede do seu título nas configurações do firewall de terceiros.

### Jogos executáveis Win32

**Observação:** esta seção foi adicionada para comparação. Os títulos do GDK não são títulos Win32. Recomendamos que os títulos de PC usem o GDK para o desenvolvimento.

**Usuários com o firewall padrão do Windows**

* Na primeira inicialização, uma notificação é exibida para permitir que o usuário negue ou permita o acesso de rede do aplicativo ao servidor de jogo.
* Os fluxos baseados em saída sempre funcionarão, porém sem notificações na interface do usuário.

## Confira também

* [Windows Sockets 2 (Winsock)](https://learn.microsoft.com/windows/desktop/WinSock/windows-sockets-start-page-2)

* [Comportamento das portas no console XBOX (tópico sob NDA)](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/xbox-console-port-behavior.md)

* [Porta multijogador UDP preferencial](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking.md)

* [PlayFab Party](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/playfab-party-intro-networking.md)


## Related topics

- [Rede de game mesh para títulos do XBOX](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/index.md)
- [Comunicação de malha de jogo: diferenças entre o GDK e o XDK](https://docs.xbox.com/pt-BR/build/console-features/networking/xdk-migration/xdk-migration-game-mesh-networking.md)
- [Modo offline do Game Saves](https://docs.xbox.com/pt-BR/services/playfab/player-progression/game-saves/offline.md)
- [Comportamento de portas do console XBOX](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/xbox-console-port-behavior.md)
- [Visão geral da pilha de rede e das APIs de rede do GDK](https://docs.xbox.com/pt-BR/build/console-features/networking/introduction-networking.md)
