Por que o modo passivo FTP usa uma variedade de portas efêmeras em oposição a uma única porta conhecida? [fechadas]


9

No modo passivo de FTP, li que o servidor envia um número de porta aleatório ao cliente, onde pode estabelecer um canal de dados.
Em seguida, o cliente estabelece um canal de dados do seu número de porta aleatório para esse número de porta enviado pelo servidor.

Minha pergunta é por que o servidor envia um número de porta aleatório para o cliente? Por que o cliente não pode estabelecer diretamente um canal de dados para a porta número 20 no lado do servidor?


2
Eu pensei que isso estava fora de tópico.

Infelizmente, perguntas sobre protocolos acima da camada 4 do OSI estão fora de tópico aqui.
Ron Maupin

Respostas:


13

Foi assim que o protocolo FTP foi projetado para funcionar no modo passivo. Provavelmente não foi uma boa ideia, pois não acho que esse modelo tenha sido repetido novamente em qualquer outro protocolo (e isso é verdade ainda mais no modo ativo de FTP).


Na porta de conexão de dados, não há protocolo. Tudo o que o servidor sabe - a única coisa que carrega informações nessa conexão - é o número da porta à qual você se conecta.

Se você se conectar à mesma porta todas as vezes, o servidor não poderá informar para qual arquivo você está se conectando. O número da porta serve como um link entre uma solicitação de transferência na conexão de controle e uma conexão de dados - o número da porta está contido na resposta ao PASVcomando.

Se dois clientes solicitarem uma transferência ao mesmo tempo, quando o servidor aceitar uma conexão em uma única porta, o servidor não poderá informar qual arquivo transferir. Obviamente, o servidor pode usar um IP do cliente para a decisão (na verdade, muitos servidores FTP validam que o IP do cliente corresponde ao IP usado na conexão de controle, por segurança).

Mas isso não funcionaria para:

  • Várias conexões da mesma máquina (a maioria dos clientes FTP suporta transferências / filas paralelas e você pode realmente executar vários clientes FTP diferentes em uma máquina);
  • Conexão de máquinas diferentes na mesma rede (corporativa), como aquelas com o mesmo IP externo.

Parcialmente copiado da minha resposta para Por que o modo passivo FTP requer um intervalo de portas em oposição a apenas uma porta? na falha do servidor.


O número da porta usada no lado do servidor também pode ser 20, certo? Em todas as respostas, o número da porta no lado do servidor é outro que 20
Zephyr

Minha resposta explica por que o número da porta deve ser exclusivo para cada conexão / transferência. Portanto, não pode ser fixado a 20.
Martin Prikryl

Sim, não pode ser corrigido, mas um deles pode ter 20, certo?
Zephyr

11
Sim, mas todas as outras portas precisam estar acima de 1024. E, do ponto de vista prático, uma faixa de portas contígua é melhor. A maioria dos firewalls / NATs suporta regras baseadas em intervalo. Você não deseja adicionar uma regra especial para a porta 20 isolada - Além disso, a maioria dos servidores FTP suporta apenas um intervalo contíguo de portas.
Martin Prikryl

11
@ Zac67 não, o cliente abrirá uma nova conexão (além da conexão de controle) para recuperar o arquivo no modo passivo, para que o servidor não possa usar o número da porta de origem (cliente) para distinguir entre as conexões do cliente. Além disso, o NAT frequentemente altera a porta de origem do cliente (e / ou endereço IP), tornando essa abordagem inutilizável na prática.
Jjmontes

4

Normalmente, o servidor não envia uma porta aleatória, mas livre de um intervalo / pool definido (por instalação) - para o cliente isso parece aleatório. Essa porta precisa ser encaminhada no firewall, o que requer a definição de um intervalo.

Infelizmente, o FTP é antigo. Eu acho que os servidores antigos não conseguiam distinguir as sessões de dados de vários clientes, exceto por porta. Geralmente, é melhor seguir para protocolos mais atualizados, onde tudo está perfeitamente empacotado em uma única sessão de soquete.


Então pode ser 20, certo? Em cada site o número da porta do servidor para os dados é diferente de 20.
Zephyr

20 é a porta de saída do servidor para FTP ativo (que não é mais muito utilizado).
Zac67

Não que os servidores antigos tivessem problemas, é que os projetistas de protocolos ainda estavam tentando descobrir a melhor maneira de fazer as coisas mais complicadas do que a resposta de solicitação primitiva.
Mark
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.