1. O protocolo FTP (File Transfer Protocol)
Junho 2014
Introdução ao protocolo FTP
O protocolo FTP (File Transfer Protocol) é, como o seu nome o indica, um protocolo de
transferência de ficheiro.
A aplicação do protocolo FTP data de 1971, na mesma data em que um mecanismo de
transferência de ficheiros (descrito no RFC 141) entre as máquinas do MIT (Massachussetts
Institute of Technology) foi criado. Numerosos RFC trouxeram seguidamente melhorias ao
protocolo básico, mas as maiores inovações datam de Julho de 1973.
O protocolo FTP actualmente é definido pelo RFC 959 (File Transfer Protocol (FTP) -
Especificações).
O papel do protocolo FTP
O protocolo FTP define a maneira segundo a qual os dados devem ser transferidos numa
redeTCP/IP.
O protocolo FTP tem como objectivos:
permitir uma partilha de ficheiros entre máquinas distantes
permitir uma independência dos sistemas de ficheiros das máquinas clientes e servidor
permitir transferir dados de maneira eficaz
O modelo FTP
O protocolo FTP inscreve-se num modelo cliente-servidor, ou seja, uma máquina envia ordens
(o cliente) e a outra espera pedidos para efectuar acções (o servidor).
Aquando de uma conexão FTP, dois canais de transmissão estão abertos :
Um canal para os comandos (canal de controlo)
Um canal para os dados
2. Assim o cliente, tal como o servidor, possui dois processos que permitem gerir estes dois tipos
de informação:
O DTP (Data Transfer Process) é o processo encarregado de estabelecer a conexão e
gerir o canal de dados. O DTP do lado do servidor chama-se SERVER-DTP, o DTP lado
cliente é denominado USER-DTP
O PI (Protocol Interpreter) é o intérprete de protocolo que permite comandar o DTP com a
ajuda de comandos recebidos no canal de controlo. É diferente no cliente e no servidor:
O SERVER-PI está encarregado de ouvir os comandos que provêm de uma PI no
canal de controlo numa porta dada, estabelecer a conexão para o canal de controlo,
receber neste os comandos FTP da GASTAR-PI, responder-lhes e pilotar o
SERVER-DTP
O USER-PI está encarregado de estabelecer a conexão com o servidor FTP, enviar
os comandos FTP, receber as respostas do SERVER-PI e de controlar USER-DTP
se necessário.
Aquando da conexão de um cliente FTP a um servidor FTP, o USER-PI inicia a conexão ao
servidor de acordo com o protocolo Telnet. O cliente envia comandos FTP ao servidor, este
último interpreta, pilota o seu DTP, seguidamente devolve uma resposta standard. Quando a
conexão é estabelecida, o servidor-Pi dá a porta para a qual os dados serão enviados ao
Cliente DTP. O cliente DTP ouve então na porta especificada os dados provenientes do
servidor.
É importante observar que, sendo as portas de controlo e de dados canais separados, é possível
enviar os comandos a partir de uma máquina e receber os dados a partir de outra. Assim, é por
exemplo possível transferir dados entre dois servidores FTP passando por um cliente para
enviar as instruções de controlo e transferindo as informações entre dois processos servidores
conectados na porta certa.
3. Nesta configuração, o protocolo impõe que os canais de controlo permaneçam abertos durante
toda a transferência de dados. Assim, um servidor pode parar uma transmissão se o canal de
controlo for cortado aquando da transmissão.
Os comandos FTP
Todas as comunicações efectuadas pelo canal de controlo seguem as recomendações do
protocolo Telnet. Assim, os comandos FTP são cadeias de caracteres Telnet (em código NVT-ASCII)
terminadas pelo código de fim de linha Telnet (quer dizer, a sequência <CR>+<LF>,
Carriage Return (regresso carro) seguido do carácter Line Feed, notado <CRLF>).
Se o comando FTP admitir um parâmetro, este é separado do comando por um espaço (<SP>).
Os comandos FTP permitem precisar:
A porta utilizada
O modo de transferência dos dados
A estrutura dos dados
A natureza da acção a efectuar (Retrieve, List, Store,…)
Distingue-se três tipos de comandos FTP:
Os comandos de controlo de acesso
Os comandos de parametrizaçaõ de transferência
Os comandos de serviço FTP
Comando de controlo de acesso
4. Comando Descrição
USER
Cadeia de caracteres que permitem identificar o utilizador. A
identificação do utilizador é necessária para estabelecer uma
comunicação no canal de dados
PASS
Cadeia de caracteres que especificam a palavra-passe do
utilizador. Este comando deve ser imediatamente precedido do
comando USER. Cabe ao cliente esconder a afixação deste
comando por razões de segurança
ACCT
cadeia de caracteres que representam a conta (account) do
utilizador. Este comando não é geralmente necessário.
Aquando da resposta à aceitação da palavra-passe, se a
resposta for 230 esta fase não for necessária; se a resposta for
332, é.
CWD
Change Working Directory : este comando permite alterar o
directório corrente. Este comando necessita o caminho de
acesso ao directório a atingir como argumento
CDUP
Change to Parent Directory :este comando permite subir ao
directório parente. Foi introduzido para remediar os problemas
de nomeação de directório parente de acordo com o sistema
(geralmente “. ”)
SMNT Structure Mount :
REIN Reinitialize :
QUIT
Comando permitindo terminar a sessão corrente. O servidor
espera até terminar a transferência corrente se for caso disso,
seguidamente fornece uma resposta antes de fechar a conexão
Comando de parâmetros de transferência
Comando Descrição
PORT
Cadeia de caracteres que permitem precisar o número de porta
a utilizar
PASV
Comando permitindo indicar ao servidor DTP para esperar uma
conexão numa porta específica escolhida aleatoriamente entre
as portas disponíveis. A resposta a este comando é o endereço
IP da máquina e a porta.
TYPE
Este comando permite precisar o tipo de formato em que os
dados serão enviados
STRU
Carácter Telnet precisando a estrutura do ficheiro (F para File,
R para Record, P para Page)
5. MODE
Carácter Telnet precisando o modo de transferência dos dados
(S para Stream, B para Block, C para Compressed)
Comando de serviço FTP
Comando Descrição
RETR
Este comando (RETRIEVE) pede ao servidor DTP uma cópia
do ficheiro cujo caminho de acesso passou em parâmetro.
STOR
Este comando (store) pede ao servidor DTP que aceite os
dados enviados sobre o canal de dados e que os armazene no
ficheiro que leva o nome passado em parâmetro. Se o ficheiro
não existir, o servidor cria-o, se não esmaga-o
STOU
Este comando é idêntico ao precedente, mas pede ao servidor
que crie um ficheiro cujo nome é único. O nome do ficheiro é
devolvido na resposta
APPE
Graças a este comando (append) os dados enviados são
concatenados no ficheiro que leva o nome passado em
parâmetro , se ele já existir; no caso contrário, é criado.
ALLO
Este comando (allocate) pede ao servidor que preveja um
espaço de armazenamento suficiente para conter o ficheiro cujo
nome passou em argumento.
REST
Este comando (restart) permite retomar uma transferência onde
tinha parado. Para isso, este comando envia em parâmetro o
indicador que representa a posição no ficheiro onde a
transferência tinha sido interrompida. Este comando deve ser
imediatamente seguido de um comando de transferência.
RNFR
Este comando (rename from) permite rebaptizar um ficheiro.
Indica em parâmetro o nome do ficheiro a rebaptizar e deve ser
imediatamente seguido do comando RNTO
RNTO
Este comando (rename to) permite rebaptizar um ficheiro. Indica
em parâmetro o nome do ficheiro a rebaptizar e deve ser
imediatamente precedido pelo comando RNFR
6. ABOR
Este comando (abort) diz ao servidor DTP para abandonar
todas as transferências associadas ao comando precedente.
Se nenhuma conexão de dados estiver aberta, o servidor DTP
não faz nada, se não fecha-a. Em contrapartida, o canal de
controlo permanece aberto.
DELE
Este comando (delete) permite suprimir o ficheiro cujo nome
passou em parâmetro. Este comando é irremediável, só uma
confirmação a nível do cliente pode ser feita.
RMD
Este comando (remove directory) permite suprimir um directório.
Indica em parâmetro o nome do directório a suprimir
MKD
Este comando (make directory) permite criar um directório.
Indica em parâmetro o nome do directório a criar
PWD
Este comando (print working directory) permite reenviar o
caminho completo do directório corrente
LIST
Este comando permite reenviar a lista dos ficheiros e directórios
presentes no directório corrente. Esta lista é enviada para o
DTP passivo. É possível passar em parâmetro deste comando
um nome de directório, o servidor DTP enviará a lista dos
ficheiros no directório passado em parâmetro
NLST
Este comando (name liste) permite enviar a lista dos ficheiros e
directórios no directório corrente
SITE
Este comando (site parameters) permite ao servidor propor
serviços específicos, não definidos no protocolo FTP
SYST
Este comando (system) permite enviar informações para o
servidor distante
STAT
Este comando (status) permite emitir o estado do servidor, por
exemplo para conhecer a progressão de uma transferência
corrente. Este comando aceita em argumento um caminho de
acesso, reenvia então as mesmas informações que LIST mas
sobre o canal de controlo
HELP
Este comando permite conhecer o conjunto das encomendas
compreendidas pelo servidor. As informações são voltadas
sobre o canal de controlo
NOOP
Este comando (no operations) serve unicamente para obter um
comando OK do servidor. Pode servir unicamente para não ser
desligada após um tempo de inactividade demasiado longo
As respostas FTP
As respostas FTP permitem garantir a sincronização entre cliente e servidor FTP. Assim, a cada
comando enviada pelo cliente, o servidor efectuará eventualmente uma acção e reenviará
7. sistematicamente uma resposta.
As respostas são constituídas por um código de 3 números que indicam a maneira segundo a
qual o comando enviado pelo cliente foi tratado. Contudo, este código de 3 números dificilmente
legível por um humano, é acompanhado de um texto (cadeia de caracteres Telnet separada do
código numérico por um espaço).
Os códigos de resposta são constituídos por 3 números, cujos significados são os seguintes:
O primeiro número indica o estatuto da resposta (sucesso ou falha)
O segundo número indica a que é que a resposta se refere
O terceiro número dá um significado mais específico (relativo a cada segundo número)
Primeiro número
Número Significado Descrição
1yz
Resposta
preliminar
positiva
A acção pedida está curso, uma segunda resposta
deve ser obtida antes de enviar um segundo
comando
2yz
Resposta
positiva de
realização
A acção pedida foi realizada, um novo comando
pode ser enviado
3yz
Resposta
intermédia
positiva
A acção pedida está temporariamente suspensa.
Informações suplementares são esperadas por
parte do cliente
4yz
Resposta
negativa de
realização
A acção pedida não teve lugar porque o comando
temporariamente não foi aceite. O cliente deve
experimentar de novo mais tarde
5yz
Resposta
negativa
permanente
A acção pedida não teve lugar porque o comando
não foi aceite. O cliente deve formular um pedido
diferente
Segundo número
Número Significado Descrição
x0z Sintaxe
A acção possui um erro de sintaxe, ou trata-se de
um comando não percebido pelo servidor
x1z Informação
Trata-se de uma resposta que devolve
informações (por exemplo, para uma resposta a
um comando STAT)
x2z Conexões A resposta refere-se ao canal de dados
8. x3z
Autenticação
e contas
A resposta refere-se à ligação (USER/PASS) ou
ao pedido de mudança de conta (CPT)
x4z
Não utilizado
pelo protocolo
FTP
x5z
Sistema de
ficheiros
A resposta refere-se ao sistema de ficheiros
distante
Mais informações
Para saber mais sobre o protocolo FTP, não hesite em consultar os seguintes documentos:
La RFC 959
A RFC 959 traduzida em francês
FTP protocol (File Transfer Protocol) Protocolo FTP (Protocolo de transferencia de archivos)
Das FTP Protokoll (File Transfer Protocol) Le protocole FTP (File Transfer Protocol) Il protocollo
FTP (File Transfer Protocol)
Este documento, intitulado « O protocolo FTP (File Transfer Protocol) »a partir de Kioskea (pt.kioskea.net) está
disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições
estipuladas pela licença, como esta nota aparece claramente.