Qual é a diferença entre FTP ativo e passivo?

1

Qual é a diferença entre FTP ativo e passivo?

nota: acho que isso seria útil como uma questão do wiki da comunidade. Além disso, espero que alguém possa apresentar uma resposta clara e concisa como esta: Como funciona o trabalho de sub-rede IPv4?

    
por zippy 11.04.2012 / 23:34

1 resposta

4

Ativo e passivo são os dois modos em que o FTP pode ser executado. O FTP usa dois canais entre cliente e servidor, o canal de comando e o canal de dados, que são conexões TCP separadas. O canal de comando é para comandos e respostas, o canal de dados é para a transferência de arquivos. É uma maneira bacana de enviar comandos para o servidor sem precisar aguardar a conclusão da transferência de dados atual.

No modo ativo, o cliente estabelece o canal de comando (da porta do cliente X para a porta do servidor 21 (b) ), mas o servidor estabelece o canal de dados (da porta do servidor 20 (b) para a porta do cliente Y , onde Y foi fornecido pelo cliente).

No modo passivo, o cliente estabelece os dois canais. Nesse caso, o servidor informa ao cliente qual porta deve ser usada para o canal de dados.

O modo passivo é geralmente usado em situações em que o servidor FTP não consegue estabelecer o canal de dados. Uma das principais razões para isso é firewalls de rede. Embora você possa ter uma regra de firewall que permita abrir os canais de FTP para ftp.microsoft.com , os servidores da Microsoft podem não ter a capacidade de abrir o canal de dados de volta pelo firewall.

O modo passivo resolve isso abrindo os dois tipos de canal do lado do cliente. Para tornar isso mais claro:

Modo ativo:

  • O cliente abre o canal de comando da porta do cliente 2000 (a) para a porta do servidor 21 (b) .
  • O cliente envia PORT 2001 (a) para o servidor e o servidor confirma no canal de comando.
  • O servidor abre o canal de dados da porta do servidor 20 (b) para a porta do cliente 2001 (a) .
  • O cliente confirma no canal de dados.

Modo passivo:

  • O cliente abre o canal de comando da porta do cliente 2000 (a) para a porta do servidor 21 (b) .
  • O cliente envia PASV para o servidor no canal de comando.
  • O servidor envia de volta (no canal de comando) PORT 1234 (a) depois de iniciar a escuta nessa porta.
  • O cliente abre o canal de dados do cliente 2001 (a) para a porta do servidor 1234 (a) .
  • O servidor reconhece no canal de dados.

Neste ponto, os canais de comando e dados estão abertos.

(a) Observe que a seleção de portas no lado do cliente depende do cliente, já que a seleção da porta do canal de dados do servidor no modo passivo está no servidor.

(b) Além disso, note que o uso das portas 20 e 21 é apenas uma convenção (embora strong). Não há nenhum requisito absoluto para que essas portas sejam usadas, embora o cliente e o servidor tenham que concordar em quais portas estão sendo usadas. Vi implementações que tentam se esconder dos clientes usando portas diferentes (em vão, na minha opinião).

Resposta original de stackoverflow

    
por 11.04.2012 / 23:43

Tags