File Transfer Protocol

Question book-4.svg
Esta página ou secção cita fontes fiáveis e independentes, mas que não cobrem todo o conteúdo, o que compromete a verificabilidade (desde dezembro de 2013). Por favor, insira mais referências no texto. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)

FTP ou File Transfer Protocol (em português, Protocolo de Transferência de Arquivos) é uma forma de transferir arquivos (Portugal: conhecidos como ficheiros).

Pode referir-se tanto ao protocolo quanto ao programa que implementa este protocolo (Servidor FTP, neste caso, tradicionalmente aparece em letras minúsculas, por influência do programa de transferência de arquivos do Unix).

A transferência de dados em RFC 959) é baseado no TCP, mas é anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. É o padrão da pilha TCP/IP para transferir arquivos, é um protocolo genérico independente de hardware.

Visão geral do protocolo

O protocolo é especificado na RFC959, resumida logo a seguir.[1]

Um cliente realiza uma conexão TCP para a porta 21 do servidor. Essa conexão, chamada de conexão de controle, permanece aberta ao longo da sessão enquanto uma segunda conexão, chamada conexão de dados, é estabelecida na porta 20 do servidor e em alguma porta do cliente (estabelecida no diálogo entre ambos) como requisitado para a transferência de arquivo. A conexão de controle é utilizada para administração da sessão (comandos, identificação, senhas)[2] entre cliente e servidor utilizando um protocolo semelhante ao Telnet. Por exemplo, "RETR filename" iria transferir o arquivo especificado de um servidor para um cliente. Devido a essa estrutura de duas portas, FTP é considerado out-of-band, ao contrário de protocolos in-band, tal como HTTP.[2]

O servidor responde na conexão de controle com três dígitos de código de estado em ASCII com uma mensagem de texto opcional. Por exemplo, "200" ou "200 OK" significa que o último comando obteve sucesso. Os números representam o número do código e o texto opcional representa as explicações ou parâmetros necessários.[3] Uma transferência de arquivo em progresso, sobre uma conexão de dados, pode ser abortada utilizando uma mensagem de interrupção enviada sobre a conexão de controle.

FTP pode ser executado em modo ativo ou passivo, os quais determinam como a conexão de dados é estabelecida. No modo ativo, o cliente envia para o servidor o endereço IP e o número da porta na qual ele irá ouvir e então o servidor inicia a conexão TCP. Em situações onde o cliente está atrás de um firewall e inapto para aceitar entradas de conexões TCP, o modo passivo pode ser utilizado. O cliente envia um comando PASV para o servidor e recebe um endereço IP e um número de porta como resposta, os quais o cliente utiliza para abrir a conexão de dados com o servidor.[1] Ambos os modos foram atualizados em Setembro de 1998 para adicionar suporte ao IPv6 e feitas algumas mudanças no modo passivo, tornando-o modo passivo estendido.[4]

Durante a transferência de dados sobre a rede, quatro representações de dados podem ser utilizadas[5]:

  • Modo ASCII: usado para texto. Dado é convertido, se necessário, da representação de caracteres do host remetente para 8-bit em ASCII antes da transmissão, e (novamente, se necessário) para a representação de caracteres do host destinatário. Como consequência, esse modo é inapropriado para arquivos que contenham dados numéricos em binário, ponto flutuante ou forma decima codificada em binário.
  • Modo imagem (normalmente chamada de modo binário): a máquina remetente envia cada arquivo byte a byte e como tal, o destinatário armazena o fluxo de bytes conforme ele os recebe (o suporte ao modo imagem tem sido recomendado para todas as implementações de FTP).
  • Modo EBCDIC: utilizado para texto simples entre hosts utilizando o conjunto de caracteres EBCDIC.
  • Modo local: permite que dois computadores com configurações idênticas enviem dados em um formato proprietário sem a necessidade de convertê-los para ASCII.

Para arquivos texto, são fornecidas opções para diferentes controles de formato e estrutura de registros. Esses recursos foram projetados para suporte à formatação Telnet ou ASA.

A transferência de dados pode ser feita em qualquer um dos três modos a seguir:[3]

  • Modo fluxo: dado é enviado como um fluxo contínuo, liberando FTP de fazer algum processamento. Ao invés disso, todo processamento é deixado para o TCP. Nenhum indicador de fim de arquivo é necessário, a menos que o dado esteja dividido dentro de registros.
  • Modo de bloqueio: FTP quebra o dado dentro de vários blocos( bloco de cabeçalho, contagem de byte e campo de dado) e então passa-o para o TCP.[5]
  • Modo comprimido: dado é comprimido utilizando um algoritmo simples.