A resposta está na forma como o FTP funciona. Quando um cliente se conecta a um servidor FTP, ele estabelece uma conexão com a porta de comando do servidor. O cliente envia então comandos para o servidor, como pedir uma lista de ficheiros ou carregar um ficheiro. No entanto, quando se trata de transferir ficheiros, os próprios dados são transferidos através de uma ligação separada à porta de dados do servidor. Isto permite que várias transferências de ficheiros ocorram simultaneamente, uma vez que cada transferência tem a sua própria ligação de dados.
Mas porque não utilizar uma única ligação para os comandos e para os dados? A razão é que o FTP foi desenvolvido nos primórdios da Internet, quando a segurança da rede não era uma preocupação tão grande como é actualmente. A utilização de ligações separadas para comandos e dados ajudou a evitar certos tipos de ataques, como o roubo de portas, que poderia permitir a um atacante assumir o controlo da sessão FTP.
Hoje em dia, o FTP é considerado um protocolo inseguro devido à sua falta de encriptação, sendo frequentemente substituído por alternativas mais seguras, como o SFTP (Secure File Transfer Protocol). O SFTP utiliza uma única ligação encriptada para comandos e dados, eliminando a necessidade de portas separadas.
Se estiver a executar um servidor Linux e pretender configurar o SFTP, é relativamente fácil fazê-lo. Primeiro, é necessário instalar um servidor SFTP, como o OpenSSH. Uma vez instalado, pode configurar o servidor SFTP para utilizar uma porta específica para as ligações de entrada. Por padrão, o OpenSSH usa a porta 22, mas é possível alterá-la para qualquer porta disponível.
Para criar um utilizador SFTP no Linux, terá de criar uma nova conta de utilizador e depois configurar o servidor SFTP para permitir a ligação desse utilizador. Isto pode ser feito editando o ficheiro de configuração SSH (/etc/ssh/sshd_config) e adicionando uma nova linha com o nome do utilizador e o caminho para o seu directório pessoal. É possível então definir a senha do usuário usando o comando passwd.
Para se ligar a um servidor SFTP utilizando o FileZilla, terá de criar uma nova ligação e especificar o nome de anfitrião do servidor, o número da porta e o seu nome de utilizador e palavra-passe SFTP. Uma vez ligado, pode navegar e transferir ficheiros tal como faria com o FTP.
Em conclusão, embora a utilização de duas portas de ligação pelo FTP possa parecer desactualizada, era uma forma eficaz de evitar determinados tipos de ataques nos primórdios da Internet. Hoje em dia, são frequentemente utilizadas alternativas mais seguras, como o SFTP, que utilizam uma única ligação encriptada para comandos e dados. Se estiver a correr um servidor Linux e quiser configurar o SFTP, é relativamente fácil fazê-lo usando um servidor SFTP como o OpenSSH.
Para abrir uma ligação SFTP, é necessário um software cliente SFTP instalado no seu computador. Alguns clientes SFTP populares são WinSCP, FileZilla e Cyberduck. Depois de ter instalado um cliente SFTP, abra o software e introduza a ligação SFTP no formato “sftp://username:password@hostname:port”. Substitua “username” e “password” pelas credenciais da sua conta SFTP, “hostname” pelo endereço do servidor e “port” pelo número da porta SFTP (normalmente 22). Em seguida, clique no botão “Connect” (Conectar) para estabelecer uma conexão segura com o servidor SFTP.
O HTTP e o FTP são ambos protocolos utilizados para transferir ficheiros através da Internet, mas diferem na sua abordagem e funcionalidade.
O HTTP (Hypertext Transfer Protocol) é utilizado principalmente para obter páginas Web e outros recursos Web a partir de servidores Web. Funciona numa única porta (Porta 80) e é um protocolo sem estado, o que significa que cada pedido é independente de quaisquer pedidos anteriores.
O FTP (File Transfer Protocol), por outro lado, foi especificamente concebido para transferir ficheiros entre servidores e clientes. Funciona em duas portas (a porta 20 para a transferência de dados e a porta 21 para o controlo e os comandos) e é um protocolo com estado, o que significa que mantém uma ligação e controla o estado do processo de transferência de ficheiros.
Em resumo, a principal diferença entre o HTTP e o FTP é a sua finalidade e a forma como tratam as transferências de ficheiros.