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

# Comportamento das portas no PC

> Comportamento das portas no PC

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](/pt-BR/build/console-features/networking/game-mesh/playfab-party-intro-networking) 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](/pt-BR/build/core-features/common/game-config/MicrosoftGameConfig-Overview).

<a id="firewall-and-how-it-affects-traffic" />

## 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)](/pt-BR/build/console-features/networking/game-mesh/xbox-console-port-behavior)

* [Porta multijogador UDP preferencial](/pt-BR/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)

* [PlayFab Party](/pt-BR/build/console-features/networking/game-mesh/playfab-party-intro-networking)


## Related topics

- [XR-015 Gerenciamento das comunicações do jogador](/pt-BR/publishing/certification/xr/xr-015.md)
- [Portar do PC (não-Steam)](/pt-BR/paths/porting/from-pc.md)
- [Información general sobre PC portátiles](/es/build/gdk-and-engines/handheld/overview.md)
- [Notas de versão do PlayFab Party](/pt-BR/services/playfab/multiplayer/networking/release-notes.md)
- [XR-132 Limitações de acesso aos serviços](/pt-BR/publishing/certification/xr/xr-132.md)
