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