FTP Modo ativo vs passivo

2

Eu tenho um servidor FTP e, durante os testes, encontrei um problema estranho que não entendi. Eu envio um comando RETR no arquivo "/Folder1/file.txt" e funciona bem. Em seguida, envio um comando RETR no arquivo "/Folder1/SubFolder1/file.txt" e o tempo limite na transferência dos dados para o cliente. Isso estava no modo ativo. Quando mudo para o modo passivo, funciona bem.

Eu entendo a diferença entre os dois modos, mas o que eu não entendo é porque funcionou para um arquivo no modo ativo, mas não o outro. Eu tentei uma dúzia de vezes e ainda consegui os mesmos resultados.

Alguma ideia? Obrigado!

    
por Dan 19.04.2010 / 20:22

3 respostas

2

Se você verificar a especificação oficial do File Transfer    Protocolo , você descobrirá que:

FTP can be run in active mode or passive mode, which control how the second connection is opened. In active mode the client sends the server the IP address port number that the client will use for the data connection, and the server opens the connection. Passive mode was devised for use where the client is behind a firewall and unable to accept incoming TCP connections. The server sends the client an IP address and port number and the client opens the connection to the server. Both modes were updated in September 1998 to add support for IPv6 and made some other changes to passive mode, making it extended passive mode.

Então, meu primeiro pensamento é que há algo errado com suas permissões de pasta. Verifique-os novamente.

    
por 19.04.2010 / 20:37
1

Suponho que o primeiro arquivo era pequeno o suficiente para ser aceitável para transferir na mesma conexão, mas que o segundo arquivo era maior.

    
por 19.04.2010 / 21:24
1

Embora seja improvável, neste caso, outro problema concebível que você pode ter é o firewall do seu cliente. O FTP ativo requer que o cliente abra uma porta TCP à qual o servidor se conecta para transferência de arquivos.

É possível que o firewall do cliente tenha uma porta estendida acessível, mas não mais que o primeiro arquivo permitido pela primeira porta e não por outras portas estendidas (os clientes tendem a alocar portas TCP de maneira incremental).

Agora com FTP passivo o servidor aloca as portas TCP para transferência e o cliente se conecta ao servidor. Nesse caso, o firewall do cliente não pode mais causar muitos problemas porque o cliente está conectando ao mundo externo (os firewalls protegem o mundo externo de se conectar ao firewall).

Quase sempre acho que mudar de um modo ativo quebrado para um modo passivo de trabalho indica problemas de firewall.

Agora, para um diagrama:


Active FTP

  client:n ---RETR portnum1---> server:21
  client:portnum1 <---fetches-- server:m1

  client:n ---RETR portnum2---> server:21
  client:portnum2 <---fetches-- server:m2

Passive FTP

  client:n ---PASV request----> server:21
  client:n <--PORT portnum1---- server:21
  client:n2 --fetches---------> server:portnum1

  client:n ---PASV request----> server:21
  client:n <--PORT portnum2---- server:21
  client:n3 --fetches---------> server:portnum2

Note que a porta 21 é o canal comando . É aqui que as instruções são enviadas para / de. Outras portas são usadas para transferência de dados real.

    
por 20.04.2010 / 02:31

Tags