O que acontece com o httpd quando recebe um número de porta incorreto?

1

Eu tenho um arquivo httpd.conf que foi acidentalmente alterado para ter o número da porta que o servidor escuta alterado para um número maior que 65535. Quando o HTTPD lê esse arquivo de configuração, o que ele faz? Ela cai de volta para a porta 80?

    
por Robert 01.06.2009 / 16:04

4 respostas

5

Depende da configuração. Você pode definir várias portas para escutar e, nesse caso, ele tentará se vincular a todas elas. Pense na inicialização do aplicativo como um processo de várias etapas. Na sua forma mais básica, o processo ficaria assim:

  1. Leia o arquivo de configuração, verificando erros
  2. Tentativa de vincular à porta especificada
  3. Ouça as conexões

Se você fornecer uma porta inutilizável, mas existente, o httpd atingiria a etapa 2 e falhará. O aplicativo falharia ao iniciar completamente e não não falharia na porta 80.

No caso em que você apresentou um não-porta, que é texto, número negativo ou número maior que 65535, a configuração seria considerada inválida e o httpd morreria em 1.

    
por 01.06.2009 / 16:09
2

Uma maneira seria tentar você mesmo e usar

netstat -lptn
para ver em que porta httpd está escutando.     
por 01.06.2009 / 16:07
1

Se você definir a porta acima de 65535, digamos, por exemplo, 65536, ocorrerá um erro de sintaxe dizendo "Endereço ou Porta Inválida".

    
por 01.06.2009 / 16:16
0

Depende muito do software de servidor específico que você está usando.

Você esperaria que o software lançasse um erro sobre um número de porta ilegal, mas isso não é necessariamente o caso; alguns softwares aceitarão com prazer o que você der, resultando em um comportamento muito estranho.

Aqui está o problema: O número da porta é um valor não assinado de 16 bits (0 - 65535) e, em algumas situações, os aplicativos aceitarão números maiores, mas usarão somente os 16 bits mais baixos. Isso levou a casos desconcertantes em que um script de inicialização especifica uma porta de (digamos) 90000 e o aplicativo é encontrado escutando na porta 24464 (90000 mod 65536 = 24464)

Eu documentei um incidente similar na edição de fevereiro de 2002 da Revista SysAdmin em "Aumentando Confiabilidade Através de Operações Forenses" ( copy ) Idealmente, essas coisas nunca deveriam acontecer, mas entre software ingênuo e desenvolvedores ignorantes das especificidades da rede subjacente ( ie faixa de portos) ainda é necessário proteger-se contra tais incidentes "impossíveis". Minha abordagem preferida é trabalhar com desenvolvedores para garantir que seu código seja amigável às operações, mas muitas vezes operações e desenvolvimento não estão no melhor dos termos.

    
por 01.06.2009 / 18:45