Buscar

9c17ac57-564b-4bff-9810-4a705fb322b4

Prévia do material em texto

ARQUITETURA 
TCP/IP II
Thiago Nascimento Rodrigues
Protocolo FTP
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Explicar os comandos e respostas do protocolo FTP.
 � Detalhar as características do FTP.
 � Exemplificar o modo de funcionamento do FTP.
Introdução
A necessidade de troca de arquivos eletrônicos entre computadores 
interligados por uma rede existe desde o surgimento da internet. Com 
o aumento sem precedentes do número de máquinas enviando e rece-
bendo dados pela rede mundial de computadores, o uso de protocolos 
de transferência de arquivos se torna cada mais vez mais crucial para a 
dinâmica da comunicação digital.
Neste capítulo, você vai ler sobre um protocolo que remonta ao início 
da internet, mas que continua sendo extensamente utilizado para a 
troca de arquivos — o FTP. Você vai estudar os principais comandos e 
todo o funcionamento desse protocolo, além de ver as características 
que podem ser exploradas para possibilitar que modificações em sua 
operação padrão possam ser configuradas.
1 Principais comandos FTP
O FTP ( file transfer protocol, ou protocolo de transferência de arquivos) 
é um protocolo de camada de aplicação que move arquivos entre sistemas de 
arquivos locais e remotos. Ele é executado sobre o protocolo TCP (transmission 
control protocol, ou protocolo de controle de transmissão). Para transferir um 
arquivo, duas conexões TCP são usadas pelo FTP em paralelo: uma conexão 
de controle e outra conexão de dados. 
Para enviar informações de controle, como identificação do usuário, senha, 
comandos para alterar o diretório remoto, comandos para recuperar e armazenar 
arquivos, etc., o FTP utiliza a conexão de controle, que é iniciada na porta 
número 21. Para enviar o arquivo real, o FTP utiliza a conexão de dados, que 
é iniciada na porta número 20. O FTP envia as informações de controle fora 
de banda, pois usa uma conexão de controle separada. 
Alguns protocolos enviam suas linhas de cabeçalho de solicitação e resposta 
e os dados na mesma conexão TCP. Por esse motivo, é dito que eles enviam 
suas informações de controle dentro da banda. HTTP (hypertext transfer 
protocol, ou protocolo de transferência de hipertexto) e SMTP (simple mail 
transfer protocol, ou protocolo de transferência de correio simples) são exem-
plos de protocolos que funcionam dessa forma. A Figura 1 apresenta uma 
visão esquemática do funcionamento do protocolo FTP (FOROUZAN, 2008).
Figura 1. Esquema de funcionamento do FTP.
Fonte: Forouzan (2008, p. 841).
O processo servidor–FTP contém estes dois elementos de protocolo:
 � Interpretador de protocolo do servidor (IP–servidor): responsável 
pelo gerenciamento da conexão de controle no servidor. Ele escuta na 
porta FTP principal as solicitações de conexão recebidas de usuários 
(clientes). Depois que uma conexão for estabelecida, ele recebe co-
mandos do interpretador de protocolo do usuário (IP–Usuário), envia 
respostas e gerencia o processo de transferência de dados do servidor.
Protocolo FTP2
 � Processo de transferência de dados do servidor (PTD–servidor): 
o PTD no lado do servidor é usado para enviar ou receber dados de ou 
para o processo de transferência de dados do usuário (PTD–usuário). 
O PTD–servidor pode estabelecer uma conexão de dados ou escutar uma 
conexão de dados proveniente do usuário. Ele interage com o sistema 
de arquivos local do servidor para ler e gravar arquivos.
Em contrapartida, o processo de FTP do usuário contém os seguintes três 
elementos de protocolo:
 � Interpretador de protocolo do usuário (PI–usuário): responsável pelo 
gerenciamento da conexão de controle no cliente. Inicia a sessão FTP 
emitindo uma solicitação para o PI–servidor. Depois que uma conexão 
for estabelecida, ele processa os comandos recebidos da interface do 
usuário, envia-os para o PI–servidor e recebe respostas de volta. Ele 
também gerencia o processo de transferência de dados do usuário.
 � Processo de transferência de dados do usuário (PTD–usuário): 
o PTD do lado do usuário é quem envia ou recebe dados de ou para o 
PTD do servidor. O PTD–usuário pode estabelecer uma conexão de 
dados ou escutar uma conexão de dados proveniente do servidor. Ele 
interage com o sistema de arquivos local do dispositivo cliente.
 � Interface do usuário: fornece uma interface FTP mais “amigável” 
para um usuário humano. Ele permite que comandos mais simples, 
orientados ao usuário, sejam usados para funções FTP, em vez dos 
comandos FTP internos. Permite também que resultados e informações 
sejam transmitidos de volta à pessoa que opera a sessão FTP.
Cada comando FTP é identificado por um código de três ou quatro letras, 
por conveniência, e executa uma tarefa específica da funcionalidade geral do 
FTP. Existem vários desses comandos e, para auxiliar na organização deles, 
o padrão FTP os categoriza em três grupos, com base no tipo de função geral 
(KOZIEROK, 2017):
 � Comandos de controle de acesso: comandos que fazem parte do 
processo de login e autenticação do usuário, são usados para acessar 
recursos ou fazem parte do controle geral da sessão FTP.
3Protocolo FTP
 � Comandos de parâmetro de transferência: comandos que especi-
ficam parâmetros de como as transferências de dados devem ocorrer. 
Por exemplo, os comandos neste grupo especificam o tipo de dados de 
um arquivo a ser enviado, indicam se as conexões de dados a serem 
usadas serão passivas ou ativas e assim por diante.
 � Comandos de serviço FTP: este é o maior grupo, contendo todos os 
comandos que realmente executam operações de arquivo, como enviar 
e receber arquivos. Comandos para implementar funções de suporte, 
como excluir ou renomear arquivos, também estão aqui.
Na prática, a transmissão real dos comandos FTP pelo canal de controle é feita usando 
as especificações baseadas no protocolo Telnet. O Telnet é um dos primeiros protocolos 
de autenticação remota na internet. Foi lançado no início das redes IP, em 1969, e foi 
por muito tempo a maneira padrão de acessar remotamente computadores. É um 
protocolo cliente–servidor que fornece ao usuário uma sessão de terminal para o host 
remoto a partir da aplicação cliente de Telnet (GEEK UNIVERSITY, 2019).
Comandos de controle de acesso
Os comandos a seguir especificam identificadores de controle de acesso 
(os códigos de comando são mostrados entre parênteses).
 � Nome do usuário (USER): o campo de argumento é uma sequência 
Telnet que identifica o usuário. A identificação do usuário é aquela 
exigida pelo servidor para acessar seu sistema de arquivos. Este co-
mando normalmente será o primeiro a ser transmitido pelo usuário 
após as conexões de controle serem estabelecidas (alguns servidores 
podem exigir isso). Informações adicionais de identificação, como senha 
e/ou outro comando de conta, também podem ser solicitadas por alguns 
servidores. Os servidores podem permitir que um novo comando USER 
seja informado a qualquer momento para alterar o controle de acesso 
e/ou as informações da conta. Com isso, qualquer informação de usuário, 
senha e conta já fornecidos são liberados e uma nova sequência de login 
é iniciada. Neste caso, todos os parâmetros de transferência permane-
Protocolo FTP4
cem inalterados, e qualquer transferência de arquivo em andamento é 
concluída sob os antigos parâmetros de controle de acesso.
 � Senha (PASS): comando que especifica a senha do usuário. Este co-
mando deve ser precedido imediatamente pelo comando de nome de 
usuário. Uma vez que a senha é uma informação bastante sensível, é 
recomendável o uso de algum mecanismo para “mascarar” ou suprimir 
a digitação. Essa responsabilidade, porém, fica a cargo do processo de 
FTP do usuário.
 � Conta (ACCT): identifica a conta do usuário. O comando não está ne-
cessariamente relacionado ao comando USER, pois alguns sites podem 
exigir uma conta para login e outros apenas para acesso específico, 
como armazenamento de arquivos.
 � Mudar diretório de trabalho(CWD): este comando permite ao usuário 
trabalhar com um diretório diferente ou um conjunto de dados para 
armazenamento ou recuperação de arquivos sem alterar seu login ou 
informações de conta. Ele requer um argumento referente a um nome 
do caminho, que especifica um diretório ou outro sistema responsável 
pela designação de grupos de arquivos.
 � Montagem de estrutura (SMNT): permite ao usuário montar uma 
estrutura de dados diferente do sistema de arquivos sem alterar seu 
login ou informações de conta.
 � Reinicializar (REIN): finaliza um usuário, liberando todas as entradas/
saídas e contas, exceto para permitir que qualquer transferência em 
andamento seja concluída. 
 � Sair (QUIT): finaliza um usuário e, se a transferência de algum arquivos 
não estiver em andamento, o servidor fecha a conexão de controle. 
Por outro lado, se a transferência de arquivos estiver em andamento, 
a conexão permanecerá aberta aguardando uma resposta de conclusão 
da operação em execução.
Comandos de parâmetros de transferência
Todos os parâmetros de transferência de dados têm valores padrão, e os coman-
dos que especificam os parâmetros de transferência de dados são necessários 
apenas se os valores dos parâmetros padrão forem alterados. O valor padrão 
é o último valor especificado ou, se nenhum valor foi especificado, o valor 
padrão é o indicado por meio desses comandos. Isso implica que o servidor 
deve “lembrar” os valores padrão aplicáveis. Os comandos podem estar em 
qualquer ordem, porém eles devem preceder a solicitação de serviço FTP. 
5Protocolo FTP
O Quadro 1 apresenta os comandos usados para especificar parâmetros de 
transferência de dados.
Fonte: Adaptado de Postel e Reynolds (1985).
Comando Descrição
PORT Especificação da porta de dados do host a ser usada na conexão 
de dados. Existem padrões para as portas de dados do usuário 
e do servidor e, em circunstâncias normais, esse comando e sua 
resposta não são necessários.
PASV Solicita que o servidor “escute” em uma porta de dados (que não 
é a porta de dados padrão) e aguarde uma conexão em vez de 
iniciar uma após o recebimento de um comando de transferência.
TYPE Especifica o tipo de dado que está sendo transmitido pelo cliente.
STRU O comando STRU é enviado com um único parâmetro de 
caractere Telnet que especifica a estrutura de arquivos para o 
servidor usar nas transferências de arquivos.
MODE Altera o modo de transferência. O argumento é um único 
código de caractere Telnet que especifica um dos modos de 
transferência de dados: S (stream), B (bloco) ou C (comprimido).
Quadro 1. Comandos de parâmetros de transferência
Comandos de serviço FTP
Os comandos de serviço FTP definem a transferência de arquivos ou a função 
do sistema de arquivos solicitada pelo usuário. O argumento de um comando 
de serviço FTP normalmente será um nome de caminho. A sintaxe dos nomes 
de caminho deve estar em conformidade com as convenções do servidor e 
com as convenções de idioma da conexão de controle. O tratamento padrão 
sugerido é usar o último dispositivo, diretório ou nome de arquivo especificado 
ou o padrão definido para usuários locais. Os dados, quando transferidos 
em resposta aos comandos do serviço FTP, sempre devem ser enviados pela 
conexão de dados, exceto por determinadas respostas informativas. 
Protocolo FTP6
Alguns dos principais comandos que especificam solicitações de serviço 
FTP são descritos a seguir (SOLARWINDS, 2019):
 � Recuperar (RETR): um cliente envia um comando RETR após estabe-
lecer com êxito uma conexão de dados para baixar uma cópia de um 
arquivo do servidor. O cliente fornece o nome do arquivo que deseja 
baixar junto com o comando RETR. O servidor enviará uma cópia do 
arquivo para o cliente. Este comando não afeta o conteúdo da cópia do 
arquivo do servidor.
 � Armazenar (STOR): um cliente envia o comando STOR após estabelecer 
com êxito uma conexão de dados quando deseja fazer upload de uma 
cópia de um arquivo local para o servidor. O cliente fornece o nome 
do arquivo que deseja usar para o upload. Se o arquivo já existir no 
servidor, ele será substituído pelo arquivo carregado. Se o arquivo não 
existir, ele será criado. Este comando não afeta o conteúdo da cópia 
local do arquivo do cliente.
 � Armazenamento único (STOU): semelhante ao comando STOR, 
o comando STOU é enviado após estabelecer com êxito uma conexão 
de dados para transferir um arquivo local para o servidor. Um nome 
de arquivo é fornecido para o servidor usar. Se o arquivo não existir no 
servidor, ele será criado; se o arquivo já existir, ele não será substituído. 
Em vez disso, o servidor cria um nome de arquivo exclusivo e o atribui 
para o arquivo transferido. A resposta do servidor conterá o nome do 
arquivo criado.
 � Anexar (APPE): um cliente envia o comando APPE após estabelecer 
com êxito uma conexão de dados quando deseja fazer upload de dados 
para o servidor. O cliente fornece o nome do arquivo que deseja usar para 
o upload. Se o arquivo já existir no servidor, os dados serão anexados 
ao arquivo existente. Se o arquivo não existir, ele será criado.
 � Listar (LIST): o comando LIST é enviado para transferir informações 
sobre arquivos no servidor por meio de uma conexão de dados esta-
belecida anteriormente. Quando nenhum argumento é fornecido com 
o comando LIST, o servidor envia informações sobre os arquivos no 
diretório de trabalho atual. Se o argumento especificar um diretório 
ou outro grupo de arquivos, o servidor deverá transferir uma lista de 
arquivos no diretório especificado. Se o argumento especificar um 
arquivo, o servidor deverá enviar informações atuais sobre o arquivo.
7Protocolo FTP
2 Características do FTP
De acordo com Oliveira (2020, documento on-line), o FTP “[...] é um utilitário 
de uso iterativo que pode ser chamado por programas para efetuar transferência 
de arquivos”. Seus principais objetivos são os seguintes:
 � motivar a utilização de computadores remotos;
 � tornar transparentes ao usuário diferenças existentes entre sistemas de 
arquivos associados a estações de uma rede;
 � transferir dados de maneira eficiente e confiável entre dois sistemas;
 � promover o compartilhamento de arquivos, sejam programas ou dados.
Tipos de acesso
Como em outros protocolos de cliente/servidor, o servidor FTP assume uma 
função passiva no processo de conexão de controle. O interpretador de protocolo 
do servidor “escuta” na porta TCP conhecida e especialmente reservada para 
conexões de controle FTP — a porta 21. Então, o interpretador de protocolo do 
usuário inicia a conexão abrindo uma conexão TCP do dispositivo do usuário 
para o servidor nessa porta. Ele usa um número de porta temporário como 
porta de origem na conexão TCP. Depois que o TCP é configurado, a conexão 
de controle entre os dispositivos é estabelecida, permitindo que os comandos 
sejam enviados do cliente para o servidor e que os códigos de resposta sejam 
enviados de volta. 
A primeira demanda após o canal estar em operação é a autenticação 
do usuário, que o padrão FTP chama de sequência de login. Existem dois 
propósitos para esse processo:
 � Controle de acesso: o processo de autenticação permite que o acesso 
ao servidor seja restrito apenas a usuários autorizados. Ele também 
permite que o servidor controle quais tipos de acesso cada usuário tem.
 � Seleção de recursos: ao identificar o usuário que está fazendo a co-
nexão, o servidor FTP pode tomar decisões sobre quais recursos dis-
ponibilizar para o usuário.
Protocolo FTP8
O esquema de autenticação regular do FTP é bastante rudimentar: trata-se 
de um esquema de login simples, ou seja, nome de usuário e senha, conforme 
mostrado na Figura 2. Primeiramente, o usuário é identificado enviando um 
nome de usuário do cliente para o servidor por meio do comando USER. 
Em seguida, a senha do usuário é enviada por meio do comando PASS. 
O servidor verifica o nome de usuário e a senha em seu banco de dados, 
para validar se o usuário que está se conectandotem autorização válida para 
acessar o servidor. Se as informações forem válidas, o servidor envia uma 
saudação (greeting) ao cliente, para indicar que a sessão está aberta. Se o 
usuário se autenticar incorretamente (especificando um nome de usuário 
ou senha incorretos), o servidor solicitará que o usuário tente novamente a 
autenticação. Após várias tentativas de autenticação inválidas, o servidor pode 
expirar e encerrar a conexão.
Figura 2. Estabelecimento da conexão FTP e autenticação do usuário.
Fonte: Adaptada de Kozierok (2017).
9Protocolo FTP
Como a maioria dos protocolos antigos, o esquema de login simples usado pelo 
FTP é um legado da natureza relativamente “fechada” da internet antiga. Ele não é 
considerado seguro pelos padrões atuais da internet, porque o nome do usuário e a 
senha são enviados pela conexão de controle em texto não criptografado. Isso torna 
relativamente fácil para os sistemas intermediários interceptarem as informações de 
login e comprometerem contas. A Request for Comments (RFC) 2228, Extensões de 
segurança FTP, define opções de autenticação e criptografia mais sofisticadas para 
segurança adicional possa ser incorporada a um software FTP.
Supondo que a autenticação tenha êxito, o servidor configurará a conexão 
para permitir o tipo de acesso ao qual o usuário está autorizado. Alguns usuários 
podem ter acesso apenas a certos arquivos ou certos tipos de arquivos. Alguns 
servidores podem permitir que usuários específicos leiam e gravem arquivos 
no servidor, enquanto outros usuários podem recuperar apenas arquivos. 
O administrador pode assim adaptar o acesso ao FTP conforme necessário.
Depois que a conexão for estabelecida, o servidor também pode tomar de-
cisões de seleção de recursos com base na identidade do usuário. Por exemplo, 
em um sistema com vários usuários, o administrador pode configurar o FTP 
para que, quando qualquer usuário se conectar, ele ou ela seja automaticamente 
levado para o seu próprio “diretório inicial”. O comando opcional ACCT 
(conta) também permite que um usuário selecione uma conta específica se 
ele tiver mais de uma.
Existem cenários, no entanto, em que não é necessário ter um nível aprimo-
rado de segurança, ou seja, o FTP é utilizado sem nenhuma autenticação. Este 
é o caso de organizações que querem usar o servidor para fornecer informações 
ao público em geral. Atualmente, a maioria das organizações usa a internet 
para distribuir documentos, software e outros arquivos para clientes e outras 
pessoas que desejam obtê-los. Entretanto, na década de 1980, antes de a web 
se tornar popular, o FTP era o modo com que isso era feito com frequência. 
Claramente, exigir que cada cliente tenha um nome de usuário e senha em 
um servidor desse tipo seria contraproducente. 
Por esse motivo, a Request for Comments (RFC) 1635 definiu, em 1994, 
um uso para o protocolo chamado FTP anônimo. Nessa técnica, um cliente 
Protocolo FTP10
se conecta a um servidor e fornece um nome de usuário padrão para efetuar 
login como convidado. Normalmente, os nomes “anonymous” (anônimo, 
em português) ou “ftp” são suportados. Recebendo um desses nomes, o ser-
vidor responde com uma mensagem especial, como “Guest Login ok, send 
your complete e-mail address as password” — cuja tradução seria “Login de 
convidado ok, envie seu endereço de e-mail completo como senha”. A senha, 
nesse caso, não é uma senha de fato, ela é usada apenas para permitir que o 
servidor registre quem está acessando.
O convidado pode acessar o site, embora o servidor normalmente restrinja 
severamente os direitos de acesso dos convidados no sistema. Muitos servidores 
FTP suportam acesso identificado e anônimo, com usuários autenticados com 
mais permissões (como poder percorrer o caminho completo do diretório e 
ter o direito de excluir ou renomear arquivos), enquanto os anônimos podem 
apenas ler arquivos de um diretório específico criado para acesso público.
Modos de transferência de dados
O canal de controle criado entre o servidor e o cliente usando o processo de 
estabelecimento e autenticação da conexão FTP é mantido durante toda a 
sessão FTP. Comandos e respostas são trocados entre os interpretadores de 
protocolo nesse canal, mas não os dados. Cada vez que arquivos ou outros 
dados precisam ser enviados entre os processos de FTP do servidor e do 
usuário, uma conexão de dados deve ser criada. Essa conexão é necessária 
para ações explícitas de transferência de arquivos (obtendo ou recebendo um 
arquivo), e também para transferências implícitas de dados, como solicitar uma 
lista de arquivos de um diretório no servidor. O padrão FTP especifica duas 
maneiras diferentes de criar uma conexão de dados. Os dois métodos diferem 
principalmente em qual dispositivo, o cliente ou o servidor, inicia a conexão. 
O primeiro método pode ser chamado de criação de uma conexão de dados 
normal (porque é o método padrão) ou pode ser conhecido também como 
conexão de dados ativa (para contrastar com o segundo método, o passivo). 
Nesse tipo de conexão, o servidor inicia o canal de dados, abrindo uma conexão 
TCP com o cliente. O servidor usa o número da porta reservada especial 20 
(um a menos que o conhecido número da porta FTP de controle, 21) para a 
conexão de dados. Na máquina do cliente, o número da porta padrão usado é 
o mesmo que o número da porta temporária usada para a conexão de controle.
11Protocolo FTP
Suponha que o usuário estabeleceu uma conexão de controle a partir de porta tem-
porária 1678 para a porta 21 de controle FTP do servidor. Em seguida, para criar uma 
conexão de dados para transferência de arquivos, o servidor inicia uma conexão TCP 
a partir de sua porta 20 para a porta 1678 do cliente. O cliente reconheceria isso e os 
dados poderiam ser transferidos (em qualquer direção, tendo em vista que o TCP é 
bidirecional). 
Na prática, ter o controle e a conexão de dados do cliente na mesma porta pode 
complicar a operação do FTP e levar a alguns problemas de complexidade considerável. 
Por esse motivo, é recomendável que o cliente especifique um número de porta 
diferente usando o comando PORT antes da transferência de dados. Neste exemplo, 
supondo que o cliente especifique a porta 1742 usando PORT, o servidor criaria uma 
conexão da porta 20 com a porta 1742 do cliente, em vez de com a 1678. 
O segundo método de transferência de dados é chamado de conexão de 
dados passiva. Nesse método, o cliente diz ao servidor para ser “passivo”, 
ou seja, para aceitar uma conexão de dados de entrada iniciada pelo cliente. 
O servidor responde fornecendo ao cliente o endereço IP do servidor e o número 
da porta que ele deve usar. O servidor passa então a escutar nessa porta uma 
conexão TCP de entrada do usuário. Por padrão, a máquina do usuário usa 
o mesmo número de porta usado para a conexão de controle, como no caso 
ativo. No entanto, aqui, novamente, o cliente pode optar por usar um número 
de porta diferente para a conexão de dados, se necessário (geralmente um 
número de porta temporário).
Retomando o exemplo anterior, suponha uma conexão de controle da porta 1678 do 
cliente para a porta 21 do servidor, mas, desta vez, considerando a transferência de 
dados usando uma conexão passiva. O cliente enviaria o comando PASV para informar 
ao servidor que quer usar o controle passivo de dados. O servidor responderia com um 
número de porta para o cliente usar, por exemplo, a porta 2223, e passaria a escutar 
nessa mesma porta. O usuário criaria uma conexão a partir da porta 1742 do cliente 
para a porta 2223 do servidor. O servidor reconheceria isso e os dados poderiam ser 
enviados e recebidos, novamente em qualquer direção.
Protocolo FTP12
3 Funcionamento do FTP
Quando uma sessão FTP é iniciada entre um cliente e um servidor, o cliente 
inicia uma conexão TCP de controle com o lado do servidor. O cliente envia 
informações de controle sobre isso e, quando o servidor recebe isso, ele inicia 
uma conexão de dados com o lado do cliente. Somenteum arquivo pode ser 
enviado por uma conexão de dados, mas a conexão de controle permanece 
ativa durante toda a sessão do usuário. Diferentemente do protocolo HTTP, 
que é sem estado, ou seja, não precisa acompanhar nenhum estado do usuário, 
o FTP precisa manter um estado sobre seu usuário durante toda a sessão.
Um conceito crítico para a compreensão do FTP é que, embora ele use 
TCP como muitas outras aplicações, ele não usa apenas uma conexão TCP 
para todas as comunicações, da mesma forma que a maioria dos protocolos. 
O modelo FTP é projetado em torno de dois canais lógicos de comunicação 
entre os processos FTP do servidor e do usuário, listados a seguir:
 � Conexão de controle: esta é a principal conexão TCP lógica que é criada 
quando uma sessão FTP é estabelecida. Ela é mantida durante toda a 
sessão FTP e é usada apenas para transmitir informações de controle, 
como comandos e respostas FTP. Não é usada para enviar arquivos.
 � Conexão de dados: sempre que os dados são enviados do servidor para 
o cliente ou vice-versa, uma conexão de dados TCP distinta é estabe-
lecida entre eles. Os dados são transferidos por essa conexão. Quando 
a transferência do arquivo estiver concluída, a conexão será encerrada.
Como as funções de controle e dados são comunicadas usando canais 
distintos, o modelo FTP divide o software em cada dispositivo em dois com-
ponentes de protocolo lógico, responsáveis por cada canal. O interpretador de 
protocolo (PI, protocol interpreter) é um software encarregado de gerenciar 
a conexão de controle, emitir e receber comandos e respostas. O processo de 
transferência de dados (PTD) é responsável por realmente enviar e receber 
dados entre o cliente e o servidor. Além desses dois elementos, o processo 
FTP do usuário inclui um terceiro componente, uma interface do usuário, 
que interage com o usuário FTP humano; ele não está presente no lado do 
servidor. Portanto existem dois componentes de processo do servidor e três 
componentes de processo do cliente (usuário) no FTP. A Figura 3 apresenta 
um exemplo de como esses componentes atuam durante uma sessão FTP.
13Protocolo FTP
Figura 3. Funcionamento de uma sessão FTP.
Fonte: Forouzan (2008, p. 843).
Uma sessão FTP começa a ser estabelecida por meio do comando FTP 
seguido do nome do servidor FTP que receberá a conexão de controle. Antes 
que a etapa de autenticação tenha início, o servidor responde ao cliente duas 
mensagens: 220 — indicando que o serviço está pronto para um novo usuário 
— e 530 — informando que o usuário não está autenticado. A partir daí, 
o servidor usa a sessão FTP para iniciar um diálogo padrão no canal de controle, 
requisitando as credenciais de autenticação do usuário. 
O cliente deve então informar o seu nome de usuário e senha por meio dos 
comandos USER e PASS, respectivamente. Se o nome de usuário informado 
for corretamente identificado pelo servidor, ele devolve uma mensagem de 
código 331, acusando que o nome de usuário está correto e que a senha deve 
ser fornecida em sequência. Quando a senha correta é informada, o servidor 
FTP responde com uma mensagem indicando que o login foi realizado com 
sucesso. Nesse momento, a conexão de controle está estabelecida e o usuário 
pode acionar os diversos comandos disponíveis no protocolo. O término 
da comunicação com o servidor é acionado por meio do comando QUIT 
(TODOROV, 2007).
Protocolo FTP14
Protocolo de cópia segura
O protocolo de cópia segura (SCP, secure copy protocol) possibilita a trans-
ferência de arquivos de computador com segurança de um local para um host 
remoto. É um pouco semelhante ao protocolo FTP, mas adiciona segurança e 
autenticação. O SCP é executado na porta 22 e há referências indicando que 
ele é uma combinação dos protocolos BSD RCP (remote copy protocol, ou 
protocolo de cópia remota) e SSH (secure socket shell, ou terminal seguro, em 
tradução livre) (WILSON, 2019). O RCP é usado para transferir os arquivos, 
e o SSH fornece autenticação e criptografia, razão pela qual o SCP é consi-
derado uma mistura desses dois protocolos. 
BSD significa Berkeley Software Distribution. É o nome das distribuições de código-
-fonte da Universidade da Califórnia, Berkeley, que originalmente eram extensões 
ao sistema operacional UNIX® da AT&T. Vários projetos de sistemas operacionais de 
código aberto são baseados em uma versão desse código-fonte, conhecido como 
4.4BSD-Lite. Além disso, eles compõem uma série de pacotes de outros projetos de 
código aberto, incluindo o projeto GNU (TOCA DO LINUX, 2018).
Operando como um comando SSH, o SCP executa a transferência de 
dados por meio de um terminal seguro, por meio do qual eles permanecem 
confidenciais. Logo, o SCP pode ser usado para bloquear, com êxito, os ras-
treadores de pacotes que podem extrair informações valiosas dos pacotes de 
dados. O SCP também pode se beneficiar do SSH, pois permite a inclusão de 
permissões e marcações de data e hora no arquivo que precisa ser copiado.
O comando SCP oferece uma sintaxe simples e muito semelhante aos 
demais comandos de cópia de arquivos. Basicamente, um sistema de arquivos 
de origem e destino deve ser informado juntamente com os arquivos a serem 
copiados. Um aspecto importante é que o comando espera que pelo menos um 
dos sistemas de arquivos informados (ou de origem ou de destino ou ambos) 
sejam remotos. 
15Protocolo FTP
Por exemplo, o comando a seguir realiza a cópia de todos os arquivos com 
extensão PNG do diretório home/thiago/imagens para o diretório remoto 
home/professores/thiago, que se encontra no servidor de nome sagah.com. 
Para que o comando possa ser executado corretamente, o nome do usuário 
deve ser informado junto com o nome do servidor, de acordo com a sintaxe 
usuario@servidor. Antes que a transferência de arquivos aconteça, o servidor 
vai solicitar a senha do usuário no servidor remoto. Se informada corretamente, 
o processo de transmissão se inicia.
scp /home/thiago/imagens/*.png thiago@sagah.com:/home/
professores/thiago
O cliente SCP pode fazer upload de arquivos para o servidor SSH ou so-
licitar arquivos e diretórios para download. O servidor, em troca, envia todos 
os subdiretórios e arquivos que estão disponíveis para download. O servidor 
controla os downloads de arquivos para que não haja riscos de segurança se o 
cliente for conectado acidentalmente a um servidor mal-intencionado. O SCP 
é um comando nativo na maioria dos sistemas operacionais, como MacOS, 
Windows ou Linux. 
O comando a seguir apresenta um exemplo de download de arquivos a partir 
de um servidor remoto para um sistema de arquivos local. Neste caso, todos 
os arquivos disponíveis no diretório /home/professores/thiago do servidor de 
nome sagah.com pertencentes à conta de usuário thiago serão copiados para 
o diretório local /home/thiago/downloads. Novamente, a senha do usuário no 
servidor remoto também será solicitada.
scp thiago@sagah.com:/home/professores/thiago
/home/thiago/downloads
FOROUZAN, B. A. Comunicação de dados e redes de computadores. 4. ed. Porto Alegre: 
AMGH, 2008.
GEEK UNIVERSITY. Telnet Protocol. [S. l.], 2019. Disponível em: https://geek-university.
com/ccna/telnet-protocol/. Acesso em: 11 jul. 2020.
Protocolo FTP16
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
KOZIEROK, C. M. The TCP/IP Guide. [S. l.], 2017. Disponível em: http://www.tcpipguide.
com/buybook.htm?free. Acesso em: 11 jul. 2020.
OLIVEIRA, R. B. FTP: File Transfer Protocol. [Porto Alegre], 2020. Disponível em: http://
penta.ufrgs.br/rc952/trab1/ftp.html. Acesso em: 11 jul. 2020.
POSTEL, J.; REYNOLDS, J. RFC 959: File Transfer Protocol (FTP). [S. l.], 1985.Disponível em: 
https://tools.ietf.org/html/rfc959. Acesso em: 11 jul. 2020.
SOLARWINDS. FTP Commands: APPE, MLSD, MLST, LIST, RETR, STOR, STOU. [S. l.], 2019. 
Disponível em: https://www.serv-u.com/resources/tutorial/appe-stor-stou-retr-list-
-mlsd-mlst-ftp-command. Acesso em: 11 jul. 2020..
TOCA DO LINUX. Uma breve introdução ao BSD: part. I. [S. l.], 2018. Disponível em: http://
www.tocadotux.com.br/2018/03/uma-breve-introducao-ao-bsd-part-i.html. Acesso 
em: 11 jul. 2020.
TODOROV, D. Mechanics of user identification and authentication: fundamentals of 
identity management. New York: Auerbach Publications, 2007.
WILSON, M. What is SCP (Secure Copy Protocol)?. [S. l.], 2019. Disponível em: https://www.
pcwdld.com/what-is-scp. Acesso em: 11 jul. 2020.
17Protocolo FTP