Buscar

O que é o protocolo FTP

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

O que é o protocolo FTP
O protocolo FTP (File Transfer Protocol) é, como o seu nome indica, um protocolo de transferência de arquivos. A implementação do protocolo FTP data de 1971, na mesma época em que um mecanismo de transferência de arquivos (descrito no RFC 141) entre as máquinas do MIT (Massachussetts Institute of Technology) foi criado. Em seguida, vários RFC trouxeram melhorias ao protocolo básico, mas as maiores inovações datam de julho de 1973. Atualmente, o protocolo FTP é definido pelo RFC 959. 
Como funciona o protocolo FTP
O protocolo FTP define a maneira pela qual os dados devem ser transferidos numa rede TCP/IP. Ele tem como objetivos o compartilhamento de arquivos entre dispositivos remotos, a independência dos sistemas de arquivos das máquinas dos clientes e do servidor e a transferência dos dados de maneira eficaz.
O modelo do serviço 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 efetuar ações (o servidor). Em uma conexão FTP, dois canais de transmissão estão abertos: um canal para os comandos (canal de controle) e um canal para os dados: 
Assim, o cliente, tal como o servidor, possui dois processos que permitem gerenciar estes dois tipos de informação: 
O DTP (Data Transfer Process) é o processo encarregado de estabelecer a conexão e gerenciar o canal de dados. O DTP servidor chama-se SERVER-DTP e o DTP cliente, 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 controle. Ele é diferente no cliente e no servidor: 
O SERVER-PI se encarrega de ouvir os comandos que proveem de um USER-PI no canal de controle em uma determinada porta, de estabelecer a conexão para o canal de controle, de receber nele os comandos FTP do USER-PI e de responder e pilotar o SERVER-DTP. 
O USER-PI se encarrega de estabelecer a conexão com o servidor FTP, de enviar os comandos FTP, de receber as respostas do SERVER-PI e de controlar o USER-DTP, se necessário. 
Durante a conexão de um cliente FTP com um servidor FTP, o USER-PI inicia a conexão com o servidor de acordo com o protocolo Telnet. O cliente envia comandos FTP para o servidor, que os interpreta, pilota o seu DTP e devolve uma resposta padrão. Quando a conexão é estabelecida, o SERVER-PI dá a porta para onde os dados serão enviados ao cliente DTP. 
Em seguida, o cliente DTP ouve os dados provenientes do servidor na porta especificada. É importante observar que, como as portas de controle e de dados são canais separados, é possível enviar os comandos por uma máquina e receber os dados por outra. Por exemplo, é possível transferir dados entre dois servidores FTP passando por um cliente para enviar as instruções de controle e transferindo as informações entre dois processos de servidores conectados na porta certa: 
Nesta configuração, o protocolo determina que os canais de controle permaneçam abertos durante toda a transferência de dados. Assim, um servidor pode parar uma transmissão se o canal de controle for cortado durante a transmissão. 
Quais são os comandos FTP
Todas as comunicações efetuadas pelo canal de controle 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 (ou seja, a sequência <CR>+<LF> - quebra de linha - seguida pelo caractere <CRLF> - Line Feed). Se o comando FTP admitir uma configuração, esta será separada do comando por um espaço (<SP>). Os comandos FTP permitem especificar a porta utilizada, o modo de transferência dos dados, a estrutura dos dados e a natureza da ação a ser realizada (Retrieve, List, Store, etc.). 
Podemos distinguir três tipos de comandos FTP: comandos de controle de acesso, de configuração de transferência e de serviço FTP: 
	Comando de controle de acesso
	Comando
	Descrição
	USER
	Cadeia de caracteres que permitem identificar o usuário. A identificação do usuário é necessária para estabelecer uma comunicação no canal de dados
	PASS
	Cadeia de caracteres que especificam a senha do usuário. Este comando deve ser imediatamente precedido do comando USER. Cabe ao cliente esconder a exibição deste comando por razões de segurança
	ACCT
	Cadeia de caracteres que representam a conta (account) do usuário. Geralmente, este comando não é necessário. Na resposta à aceitação da senha, se a resposta for 230 esta fase não é necessária; se a resposta for 332, ela é
	CWD
	Change Working Directory: este comando permite alterar o diretório em andamento. Ele requer o caminho de acesso ao diretório a ser alcançado como argumento
	CDUP
	Change to Parent Directory: este comando permite chegar ao diretório parente. Ele foi introduzido para remediar os problemas de nomeação de diretório parente de acordo com o sistema (geralmente “. ”)
	SMNT
	Structure Mount
	REIN
	Reinitialize (Reinicializar)
	QUIT
	Comando permitindo terminar a sessão em curso. Neste caso, o servidor espera até terminar a transferência atual e, em seguida, dá uma resposta antes de fechar a conexão
	Comando de configurações de transferência
	Comando
	Descrição
	PORT
	Cadeia de caracteres que permitem especificar o número da porta a ser usada
	PASV
	Comando permitindo indicar ao servidor DTP de 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 especificar o tipo de formato no qual os dados serão enviados
	STRU
	Caractere Telnet especificando a estrutura do arquivo (F para ‘File’, R para ‘Record’, P para ‘Page’)
	MODE
	Caractere Telnet especificando 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 arquivo cujo caminho de acesso passou como parâmetro
	STOR
	Este comando (‘store’) pede ao servidor DTP que aceite os dados enviados no canal de dados e que os armazene no arquivo que leva o nome passado como parâmetro. Se o arquivo não existir, o servidor vai criá-lo ou esmagá-lo
	STOU
	Este comando é idêntico ao precedente, mas pede ao servidor que crie um arquivo cujo nome é único. O nome do arquivo retorna na resposta
	APPE
	Graças a este comando (append), os dados enviados são concatenados no arquivo que leva o nome passado como parâmetro, se ele já existir; caso contrário, ele é criado
	ALLO
	Este comando (allocate) pede ao servidor que preveja um espaço de armazenamento suficiente para conter o arquivo cujo nome passou como argumento
	REST
	Este comando (restart) permite retomar uma transferência onde ela parou. Para isso, este comando envia como parâmetro o indicador que representa a posição no arquivo 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 renomear um arquivo. Ele indica como parâmetro o nome do arquivo a ser renomeado e deve ser imediatamente seguido do comando RNTO
	RNTO
	Este comando (rename to) permite renomear um arquivo. Ele indica como parâmetro o nome do arquivo a ser renomeado e deve ser imediatamente precedido pelo comando RNFR
	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 ou a fecha. Por outro lado, o canal de controle permanece aberto
	DELE
	Este comando (delete) permite excluir o arquivo cujo nome passou como parâmetro. Este comando é irremediável, só uma confirmação a nível do cliente pode ser feita
	RMD
	Este comando (remove directory) permite excluir um diretório. Ele indica como parâmetro o nome do diretório a ser excluído
	MKD
	Este
comando (make directory) permite criar um diretório. Ele indica como parâmetro o nome do diretório a ser criado
	PWD
	Este comando (print working directory) permite reenviar o caminho completo do diretório atual
	LIST
	Este comando permite reenviar a lista dos arquivos e diretórios presentes no diretório atual. Esta lista é enviada para o DTP passivo. É possível passar como parâmetro deste comando um nome de diretório, o servidor DTP enviará a lista dos arquivos no diretório passado como parâmetro
	NLST
	Este comando (name liste) permite enviar a lista dos arquivos e diretórios no diretório atual
	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 remoto
	STAT
	Este comando (status) permite emitir o estado do servidor para, por exemplo, conhecer a progressão de uma transferência em curso. Este comando aceita como argumento um caminho de acesso e reenvia as mesmas informações que o LIST, mas pelo canal de controle
	HELP
	Este comando permite conhecer o conjunto das comandos compreendidos pelo servidor. As informações retornam pelo canal de controle
	NOOP
	Este comando (no operations) serve unicamente para obter um comando OK do servidor. Ele pode servir para não ser desconectado após um tempo de inatividade longo
Como são as respostas dos comandos FTP
As respostas FTP garantem a sincronização entre o cliente e o servidor FTP. Assim, a cada comando enviado pelo cliente, o servidor poderá efetuar uma ação e reenviará, sistematicamente, uma resposta. 
As respostas são constituídas por um código de 3 números que indicam a maneira como 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, cujo primeiro número indica o status da resposta (sucesso ou falha), o segundo indica a quê a resposta se refere e o terceiro 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 ação pedida está curso de realização, uma segunda resposta deve ser obtida antes de enviar um segundo comando
	2yz
	Resposta positiva de realização
	A ação pedida foi realizada, um novo comando pode ser enviado
	3yz
	Resposta intermédia positiva
	A ação solicitada está temporariamente suspensa. O cliente está esperando informações adicionais
	4yz
	Resposta negativa de realização
	A ação solicitada não foi realizada porque o comando não foi aceito temporariamente. O cliente deve tentar mais tarde novamente
	5yz
	Resposta negativa permanente
	A ação solicitada não foi realizada porque o comando não foi aceito. O cliente deve reformular o seu pedido
	Segundo número
	Número
	Significado
	Descrição
	x0z
	Sintaxe
	A ação possui um erro de sintaxe ou trata-se de um comando não compreendido pelo servidor
	x1z
	Informação
	Trata-se de uma resposta que retorna informações (ex: para uma resposta a um comando STAT)
	x2z
	Conexões
	A resposta refere-se ao canal de dados
	x3z
	Autenticação e contas
	A resposta refere-se ao login (USER/PASS) ou ao pedido de mudança de conta (CPT)
	x4z
	Não utilizado pelo protocolo FTP
	
	x5z
	Sistema de arquivos
	A resposta diz respeito ao sistema remoto de arquivos
Conheça as diferenças entre o modo FTP ativo e passivo
O FTP (File Transfer Protocol) é um serviço baseado em TCP (Transmission Control Protocol), amplamente utilizado para transferir ficheiros através de redes de dados.
O termo FTP pode referir-se tanto ao protocolo, como ao programa que implementa este protocolo (Servidor FTP, Cliente FTP). Este, utiliza dois modos de operação, ativo e passivo. Conheçamos então o que os difere.
Os dois modos FTP funcionam consoante a configuração do servidor e do cliente. Ambos utilizam dois canais de comunicação entre o servidor, o de comandos e o de dados, separados por duas ligações TCP. O canal de comandos é utilizado, como o próprio nome indica, para enviar comandos e receber a resposta. Já o canal de dados, é utilizado para transferir dados.
Modo Ativo (Padrão)
Este modo funciona quando o cliente requisita o servidor, enviando um comando PORT, através de um porto aleatório, com um pacote endereçado ao porto 21, a fim de transferir um ficheiro. Uma vez estabelecida a ligação, o servidor inicia uma segunda.
O servidor, através do porto 20, contacta de imediato o porto seguinte do cliente, ou seja, imaginemos que o porto utilizada na primeira ligação, por este, foi a 1500, a utilizada para efeitos da segunda ligação será a 1501, designada para o canal de dados.
Uma vez estabelecida a ligação, todas as transferências de ficheiros são feitas através dessas mesmos portos, entre o cliente e servidor. Portanto, o cliente estabelece o canal de comandos, mas é o servidor que estabelece o canal de dados.
No segundo esquema, a presença de uma firewall bloqueia a tentativa de comunicação entre servidor e cliente, uma vez que o servidor utiliza um porto diferente da primeira ligação.
Resumindo (Modo ativo):
O cliente abre o canal de comandos através do porto 1500
Envia o comando PORT para dirigido ao porto 21 do servidor
O servidor confirma a ligação do canal de comandos
Abre o canal de dados na porto 20 para o cliente no porto 1501
O cliente confirma a ligação pelo canal de dados
Os canais de comandos e dados estão abertos e prontos a sua atividade
Modo Passivo
Neste, o cliente também contacta, primeiramente, o porto 21 do servidor FTP, através de um comando PASV. Em vez de iniciar uma segunda ligação de imediato, o servidor responde que o cliente apenas o pode contactar através de um segundo porto, diferente da primeira. É então realizada uma segunda ligação entre o cliente e o servidor para a transferência de dados.
A firewall não bloqueia a tentativa de comunicação entre o servidor e o cliente, visto ter sido o cliente quem iniciou a ligação ambas as vezes.
O modo passivo é utilizado, geralmente, em situações que o servidor FTP não consiga estabelecer o canal de dados, por culpa da firewall, mesmo que exista uma regra no servidor FTP.
Para um melhor controlo sobre a rede, o mais indicado será utilizar o modo ativo, que apenas requer a abertura dos portos 20 e 21. Já o modo passivo, obriga à abertura de vários portos, deixando a rede mais exposta e com vários pontos de vulnerabilidade, precisamente por estarem mais portos acessíveis.
Resumindo (Modo Passivo):
O cliente abre o canal de comandos através do porto 1500
Envia o comando PASV para o servidor dirigido ao porto 21
O comando altera a transmissão para o modo passivo
Através do canal de comandos, o servidor envia ao cliente o porto que irá escutar o canal de dados, por exemplo 2345
O cliente abre o canal de dados no porto 1501 para o porto 2345 do servidor
O servidor confirma a ligação do canal de dados
Os canais de comandos e dados estão abertos e prontos a sua atividade
 
São estas as principais diferenças entre os modos Ativo e Passivo do protocolo FTP. É importante conhecê-las para nos podermos adaptar em situações em que estejamos com problemas ou que tenhamos de nos adaptar a uma rede com uma firewall mais restritiva.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina