Protocolo FTP: entenda tudo sobre ele

Este guia é um aprofundamento técnico do FTP: as portas que ele usa, a diferença entre os modos ativo e passivo, os principais comandos e os códigos de resposta. Se você ainda não conhece o básico, comece pelo nosso guia sobre o que é FTP. Aqui, vamos direto ao funcionamento por baixo dos panos.

Qual a porta de FTP, e como ele funciona?

Em resumo, o protocolo FTP usa as portas 20 e 21.

Quando um cliente forma uma conexão inicial com o servidor, o cliente usa um número de porta aleatória e localmente atribuído e contata o servidor em uma porta conhecida (Porta 21).

Contudo, um servidor que usa apenas uma porta de protocolo pode aceitar conexões de muitos clientes, porque o TCP usa os dois lados para identificar uma conexão.

Para a transferência de dados em si, o FTP não usa o mesmo par de portas da conexão de controle: ele abre uma conexão separada. O cliente reserva uma porta livre na sua máquina, informa esse número pela conexão de controle, e o servidor então estabelece a conexão TCP de dados com a porta indicada.

No modo ativo, ao abrir a conexão de dados os papéis se invertem: o servidor passa a iniciar a conexão de volta para o cliente, usando a porta 20, reservada para a transferência de dados.

Conexão de controle

Além de passar comandos do usuário para o servidor FTP, se usa a conexão de controle para permitir que os processos de controle do cliente e do servidor coordenem seu uso das portas de protocolo TCP dinamicamente atribuídas, e a criação dos processos de transferência de dados que usam essas portas.

protocolo FTP

FTP Passivo e Ativo

Como o projeto FTP original não funciona bem com firewalls de segurança e sistemas NAT, uma extensão foi acrescentada. Mais conhecida como FTP passivo, então a extensão permite que um cliente inicie cada conexão de transferência de dados, o que significa que o FTP pode ser usado através de um firewall ou sistema NAT sem ser um caso especial. Portanto, a maioria dos servidores e cliente FTP aceita a extensão de FTP passivo.

Comandos e modos do FTP

Durante a transferência de dados sobre a rede, duas representações de dados podem ser utilizadas:

  • Modo ASCII: usado para arquivos de texto. Os dados são convertidos para o padrão de caracteres adequado entre origem e destino. Não é indicado para arquivos binários (imagens, executáveis, etc.).
  • Modo imagem (normalmente chamado de modo binário): a máquina remetente envia o arquivo byte a byte, e o destinatário armazena o fluxo de bytes conforme o recebe. É o modo recomendado para a maioria das transferências.
Conexão inicial com login e senha, usando o protocolo ftp.
Conexão inicial com login e senha

Comandos do console

Os comandos podem ser executados no FTP através da linha de comando ou observados no Filezilla e também podem ser abreviados, desde que não formem expressões ambíguas. Os principais são:

Principais comandos do FTP
Comando O que faz
Navegação e diretórios
cdMuda para o diretório informado.
pwdMostra o diretório de trabalho atual.
dirMostra o conteúdo do diretório no servidor.
lsMostra uma lista abreviada do diretório.
mkdirCria um diretório ou subdiretório no servidor.
Transferência de arquivos
getObtém um arquivo do servidor (use mget para vários).
putEnvia um arquivo ao servidor (use mput para vários).
recvRecebe um arquivo (semelhante a get).
sendEnvia um arquivo (semelhante a put).
appendAdiciona dados a um arquivo existente.
deleteApaga um arquivo (use mdelete para vários).
renameRenomeia um arquivo.
Tipo e modo de transferência
asciiDefine a transferência para o modo ASCII (texto).
binaryDefine a transferência para o modo binário.
typeEspecifica o tipo de representação dos dados.
hashMostra cada bloco transferido (1024 bytes por bloco).
Sessão e conexão
userInicia a sessão no servidor.
bye / quitEncerra a sessão FTP.
disconnectEncerra a conexão (semelhante a bye).
statusObtém informações de estado do servidor.
remotehelpSolicita ajuda do servidor FTP remoto.
Outros
!Executa um comando na máquina local.
? / helpLista os comandos disponíveis.
promptAtiva/desativa o modo interativo.
globControla a expansão de nomes de arquivo.
quoteEnvia subcomandos diretamente ao servidor FTP.
literalPermite enviar comandos arbitrários.
debugAtiva o modo de depuração.
traceMostra o caminho percorrido na transferência.
verboseAtiva/desativa o modo detalhado.
bellEmite um bip ao concluir um comando.
Comandos do FTP utilizados: bin, mkdir, lcd, cd, mput e quit
Comandos do FTP utilizados: bin, mkdir, lcd, cd, mput e quit

Camadas e respostas FTP

Os comandos (do cliente para o servidor) e as respostas (do servidor para o cliente) trafegam pela conexão de controle em formato de texto ASCII de 7 bits. Por isso podem ser lidos por pessoas, assim como os comandos HTTP.

Cada comando é encerrado por uma quebra de linha (carriage return + line feed).

Comandos

Os comandos são formados por caracteres ASCII maiúsculos, alguns com argumentos. Os principais:

Principais comandos do protocolo
Comando O que faz
USER e PASSEnviam o nome de usuário e a senha para autenticar a conexão com o servidor.
LISTLista os arquivos do diretório remoto atual. A lista é enviada por uma conexão de dados separada, não pela conexão de controle.
RETR arquivoObtém (baixa) um arquivo do servidor. O servidor abre uma conexão de dados e envia o arquivo solicitado.
STOR arquivoArmazena (envia) um arquivo no diretório atual do servidor.

Cada comando enviado pelo cliente recebe uma resposta do servidor, indicando o resultado da operação.

Respostas do protocolo FTP

As respostas do FTP são números de três dígitos, seguidos de uma mensagem opcional — funcionam de forma parecida com os códigos de status HTTP. O primeiro dígito indica a classe da resposta: 1xx e 2xx são positivos, 3xx pede mais informações, e 4xx e 5xx indicam erros.

Códigos de resposta do FTP
Código Significado
1xx — Respostas preliminares (positivas)
110Reiniciar resposta do marcador.
120Serviço pronto em nnn minutos.
125Conexão de dados já aberta; transferência iniciando.
150Status do arquivo ok; prestes a abrir a conexão de dados.
2xx — Sucesso
200Comando ok.
202Comando não implementado, supérfluo neste servidor.
211Status do sistema ou resposta de ajuda do sistema.
212Status do diretório.
213Status do arquivo.
214Mensagem de ajuda sobre como usar o servidor (útil para o usuário humano).
215Nome do tipo de sistema (conforme o documento de números atribuídos).
220Serviço pronto para novo usuário.
221Encerrando a conexão de controle; desconectado.
225Conexão de dados aberta; nenhuma transferência em andamento.
226Fechando a conexão de dados. Ação solicitada concluída com êxito.
227Entrando no modo passivo.
230Usuário conectado; pode continuar.
250Ação de arquivo solicitada concluída.
257Caminho (“PATHNAME”) criado.
3xx — Ação pendente (precisa de mais informações)
331Nome de usuário ok; precisa de senha.
332É necessária uma conta para o login.
350Ação de arquivo pendente de mais informações.
4xx — Erro temporário
421Serviço indisponível; fechando a conexão de controle.
425Não foi possível abrir a conexão de dados.
426Conexão fechada; transferência abortada.
450Ação não efetuada; arquivo indisponível (por exemplo, ocupado).
451Ação abortada; erro local no processamento.
452Ação não realizada; espaço de armazenamento insuficiente.
5xx — Erro permanente
500Erro de sintaxe; comando não reconhecido (pode ser uma linha longa demais).
501Erro de sintaxe nos parâmetros ou argumentos.
502Comando não implementado.
503Sequência de comandos incorreta.
504Comando não implementado para esse parâmetro.

Perguntas frequentes sobre o protocolo FTP

Qual a porta do FTP?
O FTP usa duas portas: a 21, para a conexão de controle (comandos), e a 20, para a conexão de dados (transferência de arquivos). As versões seguras usam outras portas: o SFTP usa a 22 e o FTPS, geralmente, a 990.
Qual a diferença entre FTP ativo e passivo?
No modo ativo, o servidor inicia a conexão de dados de volta para o cliente — o que costuma ser bloqueado por firewalls. No modo passivo, é o cliente que inicia as duas conexões, funcionando melhor com firewalls e redes domésticas. Por isso o passivo é o mais usado hoje.
O que são os códigos de resposta do FTP?
São números de três dígitos que o servidor envia para indicar o resultado de cada comando, semelhantes aos códigos de status HTTP. O primeiro dígito indica a classe: 1xx e 2xx são positivos, 3xx pede mais informações, e 4xx e 5xx indicam erros.
O que significa o código FTP 226?
O código 226 indica sucesso: a conexão de dados está sendo fechada e a ação solicitada (como uma transferência de arquivo) foi concluída com êxito. É uma das respostas mais comuns ao final de um upload ou download bem-sucedido.
O que significa o código FTP 530?
O código 530 significa “não conectado” — geralmente um erro de login, quando o usuário ou a senha estão incorretos, ou quando as credenciais não foram aceitas pelo servidor. A solução costuma ser conferir os dados de acesso da sua hospedagem.
Quais são os principais comandos do FTP?
Os mais usados são get (baixar arquivo), put (enviar arquivo), cd (mudar de diretório), ls ou dir (listar arquivos), delete (apagar) e bye (encerrar a sessão). Na maioria dos casos, porém, você usa um programa como o FileZilla e não precisa digitar comandos manualmente.
Hospedagem com acesso FTP e SFTP

Todos os planos da Homehost incluem acesso FTP e SFTP, com painel cPanel e suporte de verdade para você enviar e gerenciar os arquivos do seu site sem complicação.

Ver planos de hospedagem

Conclusão

Entender o funcionamento técnico do FTP — portas, modos ativo e passivo, comandos e códigos de resposta — ajuda a configurar conexões e a resolver problemas com mais segurança. Na prática do dia a dia, esses detalhes ficam por conta do seu programa cliente, mas conhecê-los faz diferença na hora de diagnosticar um erro. Para revisar o conceito geral, volte ao nosso guia sobre o que é FTP; para colocar em prática, veja como usar o FileZilla.

Para a parte de segurança — as diferenças entre FTP, SFTP e FTPS —, veja nosso guia sobre FTP, SFTP e FTPS.

Este artigo foi útil?

Obrigado pela resposta!
Picture of Fabricio Costa Ayres

Fabricio Costa Ayres

Formação em redes e teleprocessamento de dados pela UCP e Análise e desenvolvimento de sistemas pela UCAM, com MBCA em Engenharia da computação e sistemas pela POLI-UFRJ. Cursos oficias e certificações em LPI, CCNA, CLP, Comptia Security+. CSSA e mais Shell Script, Python, Android, Java, C e etc...

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!