Não sabe ao certo sobre o uso de portas efêmeras pelo IIS

1

Houve uma discussão no meu trabalho hoje sobre o uso de portas efêmeras. A discussão foi sobre como uma solicitação de um cliente atingirá o servidor na porta 80 (era apenas uma discussão sobre solicitações HTTP), mas a entregará a uma porta efêmera no servidor para processar a solicitação. Eu não tinha ouvido falar disso antes, então eu estava tentando fazer alguma pesquisa, mas não consigo encontrar muita documentação indicando isso.

Isso é realmente o que realmente acontece? Tudo o que vi menciona que as portas efêmeras são usadas para clientes, mas o servidor ainda será apenas a porta 80. Portanto, você nunca deve atingir o esgotamento de portas no servidor desta forma, apenas possivelmente no cliente.

Eu tenho visto menções de servidores usando essa abordagem para FTP ( link ). Embora nunca seja nada para solicitações HTTP.

Qualquer esclarecimento seria ótimo. Obrigado!

    
por David Esteves 17.10.2016 / 22:53

1 resposta

1

No desenvolvimento do soquete TCP, até onde eu me lembro (há algum tempo, pode estar um pouco errado), os servidores têm uma ligação de chamada de soquete de ouvinte, escutam e aceitam e aguardarão. Quando houver uma conexão de entrada, o accept irá desbloquear e retornar outro objeto de soquete. Esse objeto de segundo soquete será como um identificador para a conexão real e pode executar E / S de rede enquanto o soquete original pode fazer loop para aceitar conexões de rede. Esta operação não usa uma porta efêmera.

Não tenho certeza sobre o funcionamento interno exato de um sistema operacional com relação ao gerenciamento de conexão, mas para mim, um driver de rede poderia associar conexões de combinação ip / porta remota a uma identificação de identificador específica quando accept é chamado. Isso permite que um driver de rede rotear com êxito a E / S de rede para o identificador de soquete correto, permitindo novos handshakes TCP da mesma porta local, mas um IP / porta remoto diferente para ser tratado pelo ouvinte sem realmente precisar de uma porta extra. O ouvinte mais uma vez chamaria aceitar e criar um novo identificador de soquete para E / S para a próxima conexão de entrada e assim por diante.

Veja um exemplo de soquete do servidor WinSock: link . Aqui está uma descrição e um valor de retorno da função aceitar: link .

    
por 18.10.2016 / 12:46

Tags