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.
Conteúdo
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.
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.
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:
| Comando | O que faz |
|---|---|
| Navegação e diretórios | |
cd | Muda para o diretório informado. |
pwd | Mostra o diretório de trabalho atual. |
dir | Mostra o conteúdo do diretório no servidor. |
ls | Mostra uma lista abreviada do diretório. |
mkdir | Cria um diretório ou subdiretório no servidor. |
| Transferência de arquivos | |
get | Obtém um arquivo do servidor (use mget para vários). |
put | Envia um arquivo ao servidor (use mput para vários). |
recv | Recebe um arquivo (semelhante a get). |
send | Envia um arquivo (semelhante a put). |
append | Adiciona dados a um arquivo existente. |
delete | Apaga um arquivo (use mdelete para vários). |
rename | Renomeia um arquivo. |
| Tipo e modo de transferência | |
ascii | Define a transferência para o modo ASCII (texto). |
binary | Define a transferência para o modo binário. |
type | Especifica o tipo de representação dos dados. |
hash | Mostra cada bloco transferido (1024 bytes por bloco). |
| Sessão e conexão | |
user | Inicia a sessão no servidor. |
bye / quit | Encerra a sessão FTP. |
disconnect | Encerra a conexão (semelhante a bye). |
status | Obtém informações de estado do servidor. |
remotehelp | Solicita ajuda do servidor FTP remoto. |
| Outros | |
! | Executa um comando na máquina local. |
? / help | Lista os comandos disponíveis. |
prompt | Ativa/desativa o modo interativo. |
glob | Controla a expansão de nomes de arquivo. |
quote | Envia subcomandos diretamente ao servidor FTP. |
literal | Permite enviar comandos arbitrários. |
debug | Ativa o modo de depuração. |
trace | Mostra o caminho percorrido na transferência. |
verbose | Ativa/desativa o modo detalhado. |
bell | Emite um bip ao concluir um comando. |
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:
| Comando | O que faz |
|---|---|
USER e PASS | Enviam o nome de usuário e a senha para autenticar a conexão com o servidor. |
LIST | Lista 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 arquivo | Obtém (baixa) um arquivo do servidor. O servidor abre uma conexão de dados e envia o arquivo solicitado. |
STOR arquivo | Armazena (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ódigo | Significado |
|---|---|
| 1xx — Respostas preliminares (positivas) | |
| 110 | Reiniciar resposta do marcador. |
| 120 | Serviço pronto em nnn minutos. |
| 125 | Conexão de dados já aberta; transferência iniciando. |
| 150 | Status do arquivo ok; prestes a abrir a conexão de dados. |
| 2xx — Sucesso | |
| 200 | Comando ok. |
| 202 | Comando não implementado, supérfluo neste servidor. |
| 211 | Status do sistema ou resposta de ajuda do sistema. |
| 212 | Status do diretório. |
| 213 | Status do arquivo. |
| 214 | Mensagem de ajuda sobre como usar o servidor (útil para o usuário humano). |
| 215 | Nome do tipo de sistema (conforme o documento de números atribuídos). |
| 220 | Serviço pronto para novo usuário. |
| 221 | Encerrando a conexão de controle; desconectado. |
| 225 | Conexão de dados aberta; nenhuma transferência em andamento. |
| 226 | Fechando a conexão de dados. Ação solicitada concluída com êxito. |
| 227 | Entrando no modo passivo. |
| 230 | Usuário conectado; pode continuar. |
| 250 | Ação de arquivo solicitada concluída. |
| 257 | Caminho (“PATHNAME”) criado. |
| 3xx — Ação pendente (precisa de mais informações) | |
| 331 | Nome de usuário ok; precisa de senha. |
| 332 | É necessária uma conta para o login. |
| 350 | Ação de arquivo pendente de mais informações. |
| 4xx — Erro temporário | |
| 421 | Serviço indisponível; fechando a conexão de controle. |
| 425 | Não foi possível abrir a conexão de dados. |
| 426 | Conexão fechada; transferência abortada. |
| 450 | Ação não efetuada; arquivo indisponível (por exemplo, ocupado). |
| 451 | Ação abortada; erro local no processamento. |
| 452 | Ação não realizada; espaço de armazenamento insuficiente. |
| 5xx — Erro permanente | |
| 500 | Erro de sintaxe; comando não reconhecido (pode ser uma linha longa demais). |
| 501 | Erro de sintaxe nos parâmetros ou argumentos. |
| 502 | Comando não implementado. |
| 503 | Sequência de comandos incorreta. |
| 504 | Comando não implementado para esse parâmetro. |
Perguntas frequentes sobre o protocolo FTP
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.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 hospedagemConclusã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.