Uso de porta efêmera para servidor

3

Em geral, as portas efêmeras são usadas pelos clientes ao estabelecer a conexão com o servidor.

Por exemplo:

  1. O servidor escuta na porta 80
  2. Um cliente (navegador, cliente FTP, cliente bittorent) envia uma solicitação ao servidor, incluindo a porta efêmera atribuída pelo sistema operacional
  3. O servidor responde usando a porta efêmera fornecida como porta de destino

E agora a pergunta:

Eu escrevi um aplicativo de servidor que eu gostaria de iniciar na porta livre aleatória sempre que ele fosse iniciado (para manter essa questão consistente, não explicarei por que eu gostaria desse comportamento). Agora, minha pergunta é que implicações isso teria se eu usasse uma das portas efêmeras para o servidor escutar. Há alguma desvantagem (também em termos de segurança) de fazer isso?

Você conhece algum exemplo de servidor que também utiliza portas efêmeras na prática?

Uma das minhas preocupações também é a declaração de O Guia TCP / IP: Uma Referência Abrangente e Ilustrada de Protocolos da Internet (página 705) :

Just as well-known and registered port numbers are used for server processes, ephemeral port numbers are for client processes only.

    
por PrimosK 09.05.2014 / 08:45

2 respostas

1

Como ajuda, a página da Wikipedia Ephemeral Port fornece mais informações sobre os números de porta realmente usados pelo sistema operacional.

A partir daqui, pode-se ver imediatamente que existem muitas portas disponíveis que normalmente não são usadas pelo servidor (processos) e não estão no intervalo efêmero.

Assim, a solução óbvia seria selecionar aleatoriamente uma dessas outras portas. Isso evita a necessidade de fazer suposições sobre como o SO aloca a partir do intervalo efêmero: ele verifica o uso real ou apenas suas alocações para evitar colisões para novas alocações?.

Essa pergunta pode parecer pequena, mas com uma porta cliente o processo geralmente não usa diretamente o número da porta (ele é alocado quando o processo abre a conexão, apenas observando as propriedades do soquete o processo pode encontrar o número: e geralmente isso é completamente desnecessário). No entanto, para aceitar conexões de entrada, o soquete deve estar vinculado a uma porta específica, portanto, o processo do servidor é responsável por obter um número de porta.

    
por 09.05.2014 / 10:31
1

Se você ouvir em uma porta efêmera, você pode correr o risco de TCP self connect .

    
por 12.08.2016 / 16:46