Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

Fala Rapaziada. Tudo na paz?

Se você trabalha com TI, provavelmente já ouviu falar sobre portas TCP e UDP, mas você sabe como funciona e para que serve o uso delas? Nesse post tentarei explicar de forma simplificada sua função em um ambiente de redes. Logo em seguida, irei postar um outro artigo explicando as principais diferenças entre portas TCP e UDP.

TCP (Transmission Control Protocol) e UDP (User Datagram Protocol) – São protocolos de rede da camada de transporte, responsável por preparar os dados, reorganizá-los e identificar suas aplicações (através do uso de Portas). Nesse post irei focar apenas na parte de identificação das aplicações com o uso de portas.

Como funciona a identificação das aplicações?

Imagine que você precisa entregar vários produtos em um condomínio, porém cada produto para uma casa diferente, caso você não coloque a identificação no produto, o porteiro não saberá para qual casa cada produto é destinado.

Pois bem, a entrega dos dados não é muito diferente do exemplo acima,  as portas funcionarão para identificar para qual aplicação será enviada cada pacote.

Como exemplo, imagine um pessoa que está navegando na internet e acessando sites que utilizem o protocolo HTTP (protocolo utilizado para navegação Web). A camada de transporte irá adicionar o cabeçalho TCP no pacote, onde estará determinada a porta 80 como destino.

Com isso, a camada de transporte estará dizendo “Quero que esse pacote deseja destinado ao protocolo HTTP”

Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

Quando o pacote chegar ao servidor web resposável pelo site, a camada de transporte do servidor irá fazer a leitura do da porta de destino contida no cabeçalho TCP, assim encaminhando o pacote para o HTTP.

Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

Usei como exemplo o protocolo HTTP, mas é dessa mesma forma que funcionará para todo e qualquer tráfego enviado entre dois hosts. A porta sempre será usada para identificar para qual aplicação o pacote estará destinado. Veja abaixo uma tabela com as portas conhecidas mais utilizadas no dia a dia:

Número da   Porta Protocolo Serviço de   Rede
20 TCP FTP Dados
21 TCP FTP Controle
22 TCP SSH
23 TCP Telnet
25 TCP SMTP
53 UDP,TCP DNS
67, 68 UDP DHCP
69 UDP TFTP
80 TCP HTTP
443 TCP HTTPS
110 TCP POP3
161 UDP SNMP

Elas também seguem um padrão de portas, são elas:

  • Portas conhecidas (de 0 a 1023) – Portas reservadas para serviços e aplicações.
  • Portas Registradas (de 1024 a 49151) – Portas designadas para processos ou aplicação de usuário, normalmente e escolhida manualmente pelo usuário para rodar algum processo ou aplicação.
  • Portas Dinâmicas ou privadas (De 49152 a 65535) – Portas dinâmicas são dignidades dinamicamente quando se inicia uma nova conexão.

Avançar para o conteúdo principal

Não há mais suporte para esse navegador.

Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.

Solucionar problemas de esgotamento de porta

  • Artigo
  • 10/13/2022
  • 10 minutos para o fim da leitura

Neste artigo

Aplica-se a: Windows 10

Os protocolos TCP e UDP funcionam com base nos números de porta usados para estabelecer a conexão. Qualquer aplicativo ou serviço que precise estabelecer uma conexão TCP/UDP exigirá uma porta em seu lado.

Há dois tipos de portas:

  • Portas efêmeras, que são portas dinâmicas, são o conjunto de portas que cada computador, por padrão, terá para fazer uma conexão de saída.
  • Portas conhecidas são a porta definida para um aplicativo ou serviço específico. Por exemplo, o serviço de servidor de arquivos está na porta 445, HTTPS é 443, HTTP é 80 e RPC é 135. O aplicativo personalizado também terá seus números de porta definidos.

Quando uma conexão está sendo estabelecida com um aplicativo ou serviço, os dispositivos cliente usam uma porta efêmera do dispositivo para se conectar a uma porta conhecida definida para esse aplicativo ou serviço. Um navegador em um computador cliente usará uma porta efêmera à qual se conectar https://www.microsoft.com na porta 443.

Em um cenário em que o mesmo navegador está criando muitas conexões com vários sites, para qualquer nova conexão que o navegador está tentando, uma porta efêmera é usada. Após algum tempo, você observará que as conexões começarão a falhar e uma alta possibilidade para essa falha seria porque o navegador usou todas as portas disponíveis para fazer conexões fora e qualquer nova tentativa de estabelecer uma conexão falhará, pois não há mais portas disponíveis. Quando todas as portas em um computador são usadas, podemos defini-la como esgotamento de porta.

Intervalo de portas dinâmicas padrão para TCP/IP

Para estar em conformidade com as recomendações da IANA (Internet Assigned Numbers Authority ), a Microsoft aumentou o intervalo de portas do cliente dinâmico para conexões de saída. A nova porta inicial padrão é 49152 e a nova porta final padrão é 65535. Esse aumento é uma alteração da configuração de versões anteriores do Windows que usaram um intervalo de portas padrão de 1025 a 5000.

Você pode exibir o intervalo de portas dinâmico em um computador usando os seguintes netsh comandos:

  • netsh int ipv4 show dynamicport tcp
    
  • netsh int ipv4 show dynamicport udp
    
  • netsh int ipv6 show dynamicport tcp
    
  • netsh int ipv6 show dynamicport udp
    

O intervalo é definido separadamente para cada transporte (TCP ou UDP). O intervalo de portas agora é um intervalo que tem um ponto de partida e um ponto final. Os clientes da Microsoft que implantam servidores que executam o Windows Server podem ter problemas que afetam a comunicação RPC entre servidores se os firewalls forem usados na rede interna. Nessas situações, recomendamos que você reconfigure os firewalls para permitir o tráfego entre servidores no intervalo de portas dinâmicas de 49152 a 65535. Esse intervalo é além de portas conhecidas que são usadas por serviços e aplicativos. Ou, o intervalo de portas usado pelos servidores pode ser modificado em cada servidor. Você ajusta esse intervalo usando o comando netsh, da seguinte maneira. O comando acima define o intervalo de portas dinâmico para TCP.

netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range

A porta inicial é o número e o número total de portas é o intervalo. A seguir estão os comandos de exemplo:

  • netsh int ipv4 set dynamicport tcp start=10000 num=1000
    
  • netsh int ipv4 set dynamicport udp start=10000 num=1000
    
  • netsh int ipv6 set dynamicport tcp start=10000 num=1000
    
  • netsh int ipv6 set dynamicport udp start=10000 num=1000
    

Esses comandos de exemplo definem o intervalo de portas dinâmico para iniciar na porta 10000 e terminar na porta 10999 (1000 portas). O intervalo mínimo de portas que podem ser definidas é 255. A porta inicial mínima que pode ser definida é 1025. A porta final máxima (com base no intervalo que está sendo configurado) não pode exceder 65535. Para duplicar o comportamento padrão do Windows Server 2003, use 1025 como a porta inicial e use 3976 como o intervalo para TCP e UDP. Esse padrão de uso resulta em uma porta inicial de 1025 e uma porta final de 5000.

Especificamente, sobre conexões de saída como conexões de entrada não exigirão uma porta efêmera para aceitar conexões.

Como as conexões de saída começam a falhar, você verá muitas instâncias dos comportamentos abaixo:

  • Não é possível entrar no computador com credenciais de domínio, no entanto, a entrada com a conta local funciona. A entrada no domínio exigirá que você entre em contato com o controlador de domínio para autenticação, que é novamente uma conexão de saída. Se você tiver as credenciais de cache definidas, a entrada no domínio ainda poderá funcionar.

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  • Política de Grupo de atualização:

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  • Os compartilhamentos de arquivos estão inacessíveis:

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  • Falha no RDP do servidor afetado:

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  • Qualquer outro aplicativo em execução no computador começará a fornecer erros

A reinicialização do servidor resolverá o problema temporariamente, mas você verá todos os sintomas retornarem após um período de tempo.

Se você suspeitar que o computador está em um estado de esgotamento de porta:

  1. Tente fazer uma conexão de saída. No servidor/computador, acesse um compartilhamento remoto ou tente um RDP para outro servidor ou telnet para um servidor em uma porta. Se a conexão de saída falhar para todas essas opções, vá para a próxima etapa.

  2. Abra o visualizador de eventos e, nos logs do sistema, procure os eventos que indicam claramente o estado atual:

    1. ID do evento 4227

      Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

    2. ID do evento 4231

      Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  3. Coletar uma netstat -anob saída do servidor. A saída do netstat mostrará um grande número de entradas para TIME_WAIT para um único PID.

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

    Após um fechamento normal ou um fechamento abrupto de uma sessão, após um período de 4 minutos (padrão), a porta usada pelo processo ou aplicativo seria liberada de volta para o pool disponível. Durante esses 4 minutos, o estado de conexão TCP será TIME_WAIT estado. Em uma situação em que você suspeita de esgotamento de porta, um aplicativo ou processo não será capaz de liberar todas as portas que ele consumiu e permanecerá no estado de TIME_WAIT.

    Você também pode ver CLOSE_WAIT de estado na mesma saída; no entanto, CLOSE_WAIT estado é um estado quando um lado do par TCP não tem mais dados para enviar (FIN enviado), mas é capaz de receber dados da outra extremidade. Esse estado não indica necessariamente o esgotamento da porta.

    Observação

    Ter conexões enormes TIME_WAIT estado nem sempre indica que o servidor está atualmente fora de portas, a menos que os dois primeiros pontos sejam verificados. Ter muitas conexões TIME_WAIT indica que o processo está criando muitas conexões TCP e, eventualmente, pode levar ao esgotamento da porta.

    O Netstat foi atualizado em Windows 10 -Q com a adição do comutador para mostrar as portas que transiçãoam fora do tempo de espera como no estado BOUND. Uma atualização para Windows 8.1 e Windows Server 2012 R2 foi lançada que contém essa funcionalidade. O cmdlet Get-NetTCPConnection do PowerShell Windows 10 também mostra essas portas BOUND.

    Até 10/2016, o netstat era impreciso. Correções para netstat, portadas de volta para 2012 R2, permitidas Netstat.exeGet-NetTcpConnection e para relatar corretamente o uso de porta TCP ou UDP no Windows Server 2012 R2. Consulte Windows Server 2012 R2: hotfixes de portas efêmeras para saber mais.

  4. Abra um prompt de comando no modo de administrador e execute o comando abaixo.

    Netsh trace start scenario=netconnection capture=yes tracefile=c:\Server.etl
    
  5. Abra o arquivo server.etl com o Monitor de Rede e, na seção de filtro, aplique o filtro Wscore_MicrosoftWindowsWinsockAFD.AFD_EVENT_BIND.Status.LENTStatus.Code == 0x209. Você deve ver entradas que dizem STATUS_TOO_MANY_ADDRESSES. Se você não encontrar nenhuma entrada, o servidor ainda não estará fora das portas. Se você encontrá-los, poderá confirmar se o servidor está sob esgotamento de porta.

Solucionar problemas de esgotamento de porta

A chave é identificar qual processo ou aplicativo está usando todas as portas. Abaixo estão algumas das ferramentas que você pode usar para isolar em um único processo

Método 1

Comece examinando a saída do netstat. Se você estiver usando Windows 10 ou Windows Server 2016, netstat -anobq poderá executar o comando e verificar a ID do processo que tem entradas máximas como BOUND. Como alternativa, você também pode executar o comando do PowerShell abaixo para identificar o processo:

Get-NetTCPConnection | Group-Object -Property State, OwningProcess | Select -Property Count, Name, @{Name="ProcessName";Expression={(Get-Process -PID ($_.Name.Split(',')[-1].Trim(' '))).Name}}, Group | Sort Count -Descending 

A maioria dos vazamentos de porta é causada por processos de modo de usuário que não fecham corretamente as portas quando um erro foi encontrado. No nível do modo de usuário, as portas (na verdade, soquetes) são identificadores. O TaskManager e o ProcessExplorer são capazes de exibir contagens de identificadores, o que permite identificar qual processo está consumindo todas as portas.

Para Windows 7 e Windows Server 2008 R2, você pode atualizar sua versão do PowerShell para incluir o cmdlet acima.

Método 2

Se o método 1 não ajudar você a identificar o processo (antes de Windows 10 e Windows Server 2012 R2), dê uma olhada no Gerenciador de Tarefas:

  1. Adicione uma coluna chamada "handles" em detalhes/processos.

  2. Classifique os identificadores de coluna para identificar o processo com o maior número de identificadores. Normalmente, o processo com identificadores maiores que 3000 poderia ser o culpado, exceto por processos como System, lsass.exe, store.exe, sqlsvr.exe.

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  3. Se qualquer outro processo além desses processos tiver um número maior, interrompa esse processo e tente entrar usando credenciais de domínio e veja se ele é bem-sucedido.

Método 3

Se o Gerenciador de Tarefas não o ajudou a identificar o processo, use o Explorador de Processos para investigar o problema.

Etapas para usar o Explorador de Processos:

  1. Baixe o Explorador de Processos e execute-o com Privilégios Elevados.

  2. Alt + selecione o cabeçalho da coluna, selecione Escolher Colunas e, na guia Desempenho do Processo, adicione Contagem de Identificadores.

  3. Selecione Exibir>Mostrar Painel Inferior.

  4. Selecione Exibir Alças>de Exibição do Painel>Inferior.

  5. Selecione a coluna Identificadores para classificar por esse valor.

  6. Examine os processos com contagens de identificadores mais altas do que o restante (provavelmente será mais de 10.000 se você não puder fazer conexões de saída).

  7. Clique para realçar um dos processos com uma contagem alta de identificadores.

  8. No painel inferior, as alças listadas abaixo são soquetes. (Os soquetes são tecnicamente identificadores de arquivo).

    Arquivo \Device\AFD

    Como se denominam as portas de 0 a 1023 e porque não devem ser utilizadas em novas aplicações?

  9. Alguns são normais, mas um grande número deles não é (centenas a milhares). Feche o processo em questão. Se isso restaurar a conectividade de saída, você provará ainda mais que o aplicativo é a causa. Entre em contato com o fornecedor desse aplicativo.

Por fim, se os métodos acima não ajudarem você a isolar o processo, sugerimos coletar um despejo de memória completo do computador no estado do problema. O despejo informará qual processo tem os identificadores máximos.

Como alternativa, reinicializar o computador o fará voltar ao estado normal e ajudará você a resolver o problema por enquanto. No entanto, quando uma reinicialização é impraticável, você também pode considerar aumentar o número de portas no computador usando os comandos abaixo:

netsh int ipv4 set dynamicport tcp start=10000 num=1000

Esse comando definirá o intervalo de portas dinâmico para iniciar na porta 10000 e terminar na porta 10999 (1000 portas). O intervalo mínimo de portas que podem ser definidas é 255. A porta inicial mínima que pode ser definida é 1025. A porta final máxima (com base no intervalo que está sendo configurado) não pode exceder 65535.

Observação

Observe que aumentar o intervalo de portas dinâmicas não é uma solução permanente, mas apenas temporária. Você precisará rastrear quais processos/processadores estão consumindo o número máximo de portas e solucionar problemas do ponto de vista desse processo quanto ao motivo pelo qual ele está consumindo um número tão alto de portas.

Para Windows 7 e Windows Server 2008 R2, você pode usar o script abaixo para coletar a saída do netstat na frequência definida. Nas saídas, você pode ver a tendência de uso da porta.

@ECHO ON
set v=%1
:loop
set /a v+=1
ECHO %date% %time% >> netstat.txt
netstat -ano >> netstat.txt
 
PING 1.1.1.1 -n 1 -w 60000 >NUL
 
goto loop

Mais informações

  • Esgotamento de porta e você! – este artigo fornece um detalhe sobre os estados netstat e como você pode usar a saída do netstat para determinar o status da porta
  • Detecção de esgotamento de porta efêmera: este artigo tem um script que será executado em um loop para relatar o status da porta. (Aplicável ao Windows 2012 R2, Windows 8, Windows 10 e Windows 11)


Recursos adicionais

Recursos adicionais

Neste artigo

Como são conhecidas as portas 1 a 1023?

As primeiras 1023 portas são portas conhecidas, usadas para serviços de rede conhecidos, tais como FTP, Telnet ou DNS. Os números de portas são representados por 2 bytes no cabeçalho de um segmento TCP ou UDP. Números de portas, são usados para rastrear várias sessões, que podem ocorrer entre hosts.

O que é a porta 23?

Se você acompanha de perto a evolução do mundo digital e, principalmente, das tecnologias da Comunicação e da Informação, deve saber que a Porta 23 é a do protocolo Telnet. Aquele que proporciona facilidade de comunicação baseada em texto, interativo e bidirecional.

Qual é o protocolo da camada de aplicação que utiliza a porta 23?

Portas 0 a 995.

O que é porta TCP e UDP?

Quando alguém fala dessas portas, está se referindo às portas TCP e UDP, que são meios utilizados por softwares e serviços do sistema operacional para a comunicação em rede e, conseqüentemente, na internet.