O FTP pode ser um protocolo complicado. A conexão de controle é (normalmente) configurada na porta. Essa conexão é usada para autenticação e envio de comandos para o servidor. A transferência de dados acontece em uma conexão diferente. Normalmente, isso está na porta 20. O que acontece é que o cliente solicita dados do servidor na porta 21 e, em seguida, o servidor abre uma conexão de volta ao cliente na porta 20 para transferir os dados. É onde um firewall na máquina rodando o cliente ftp pode atrapalhar (pode bloquear a conexão de entrada do servidor ftp).
O FTP tem um modo passivo que supostamente faz com que o servidor ftp transfira dados para o cliente através da conexão de controle, em vez de abrir uma nova conexão para a transferência de dados. Eu acho que o comando é PASV, mas eu nunca tentei isso sozinho.
Espero que isso seja útil.