Como o Windows 2008 seleciona especificamente portas efêmeras (testa para evitar conflitos)?

4

Eu tenho um aplicativo de servidor que usa portas de entrada permanentemente conectadas dentro do intervalo que o W2k8 agora usa no intervalo recomendado pela IANA de ~ 49000-65000. (Por razões de legado, é extremamente difícil mudar isso, , por isso vou ter que alterar o intervalo do Windows para evitar o meu intervalo, mas essa não é a questão ).

Estou pesquisando como evitar conflitos com portas efêmeras no Windows 2008 Server, mas não consigo encontrar detalhes sobre o algoritmo do Windows para selecionar portas efêmeras .

Quando a camada de rede do Windows está atribuindo uma porta efêmera 'aleatória' para a resposta a uma conexão TCP / IP de saída, testa a porta proposta para ver se ela já está sendo usada?

(O kernel do Linux parece fazer um teste check_stablished mas ainda assim pode -utilizar algumas conexões usadas, por isso estou me perguntando quais decisões o Windows pode tomar ao tirar portas aparentemente não utilizadas ou ociosas de outro processo ...)

i.e. se meu servidor abrir o winsocks em todas as suas portas e as mantiver no estado LISTENING, o Windows respeitará e ignorará essas informações porque elas estão em uso? Ou vai ignorar o fato de que eles estão em uso e atribuí-los a outros processos de qualquer maneira para uso efêmero, causando conflitos?

Descobri que, às vezes, quando meu servidor é iniciado, ele não pode alocar algumas de suas portas, porque elas estão sendo usadas para propósitos aleatórios por outros processos - o que faz sentido e eu entendo isso. Mas ainda não consegui provar se as portas que ele consegue abrir inicialmente são posteriormente "roubadas" para fins efêmeros (é uma coisa difícil de testar ou forçar devido à grande variedade e natureza aleatória).

Como eu disse, vou reconfigurar as janelas para evitar o meu servidor de qualquer maneira, então essa questão é mais por curiosidade e para explicar o comportamento recente mais claramente (para determinar outros possíveis erros!)

obrigado antecipadamente

    
por scipilot 13.01.2015 / 13:34

1 resposta

0

Eu responderia isso;

Para um programa que você escreveu com a API winsock, ele lida dessa forma; link .

Quando você fecha o identificador para um soquete, alguma negociação adicional acontece entre o cliente e o servidor. O soquete esperará até duas vezes o tempo máximo que o Windows esperaria para receber uma confirmação da outra extremidade do soquete que fechou a porta. Por padrão, essa opção está configurada para dois minutos. Portanto, o Windows pode esperar até quatro minutos antes que a porta seja liberada. Isso torna essa porta específica indisponível até que seja liberada.

Para o serviço Windows RPC;

* Este artigo não especifica quais serviços dependem de outros serviços para comunicação de rede. Por exemplo, muitos serviços dependem dos recursos de chamada de procedimento remoto (RPC) ou do DCOM no Microsoft Windows para atribuir-lhes portas TCP dinâmicas. O serviço de Chamada de Procedimento Remoto coordena solicitações de outros serviços do sistema que usam RPC ou DCOM para se comunicar com computadores clientes. Muitos outros serviços dependem do sistema básico de entrada / saída da rede (NetBIOS) ou SMBs, protocolos que são fornecidos pelo serviço do Servidor. Outros serviços dependem de HTTP ou Hypertext Transfer Protocol Secure (HTTPS). Esses protocolos são fornecidos pelo Internet Information Services (IIS). Uma discussão completa sobre a arquitetura dos sistemas operacionais Windows está além do escopo deste artigo. No entanto, documentação detalhada sobre este assunto está disponível no Microsoft TechNet e nos sites da Microsoft Developer Network (MSDN). Embora muitos serviços possam depender de uma porta TCP ou UDP específica, apenas um serviço ou processo por vez pode escutar nessa porta.

Quando você usa RPC com TCP / IP ou com UDP / IP como o transporte, as portas de entrada são freqüentemente atribuídas dinamicamente aos serviços do sistema conforme necessário; As portas TCP / IP e UDP / IP que são maiores que a porta 1024 são usadas. Estes também são informalmente conhecidos como portas RPC aleatórias. Nesses casos, os clientes RPC dependem do mapeador de ponto de extremidade RPC para informar a eles quais portas ou portas dinâmicas foram atribuídas ao servidor. Para alguns serviços baseados em RPC, você pode configurar uma porta específica em vez de permitir que o RPC atribua dinamicamente uma porta. Você também pode restringir o intervalo de portas que o RPC atribui dinamicamente a um pequeno intervalo, independentemente do serviço. Para obter mais informações sobre esse tópico, consulte a seção "Referências". *

De: link

    
por 14.01.2015 / 15:55