Como funciona o protocolo FTP?
Autor: Rodrigues dos Santos | Publicado: 2012-03-19T11:24:00-07:00

O FTP (File Transfer Protocol - Protocolo de transferência de arquivos) 
oferece um meio de transferência e compartilhamento de arquivos remotos.
 Entre os seus serviços, o mais comum é o FTP anônimo, pois permite o 
download de arquivos contidos em diretórios sem a necessidade de 
autenticação. Entretanto, o ace anônimo é restrito a diretórios públicos
 que foram especificados pelo administrador da rede.O protocolo 
FTP disponibiliza interatividade entre cliente e servidor, de forma que o
 cliente possa acessar informações adicionais no servidor, não só ao 
próprio arquivo em questão. Como exemplo de  facilidadepodemos citar a 
lista de arquivos, onde o cliente lista os arquivos existentes no 
diretório, ou opções do tipo Help, onde o cliente tem acesso a lista de 
comandos. Essa interatividade e proveniente do padrão NVT (Network 
Virtual Terminal) usado pelo protocolo TELNET. Contudo, o FTP não 
permite a negociação de opções, utilizando apenas as funções básicas do 
NVT, ou seja, seu padrão default.O protocolo FTP permite que o 
cliente especifique o tipo e o formato dos dados armazenados. Como 
exemplo, se o arquivo contém texto ou inteiros binários, sendo que no 
caso de texto, qual o código utilizado (USASCII, EBCDIC, etc).Como
 segurança mínima o protocolo FTP implementa um processo de autenticação
 e outro de permissão. A autenticação é verificada através de um código 
de usuário e senha, já a permissão, é dada em nível de diretórios e 
arquivos.O servidor de FTP possibilita acessos simultâneos para 
múltiplos clientes. O servidor aguarda as conexões TCP, sendo que para 
cada conexão cria um processo cativo para tratá-la. Diferente de muitos 
servidores, o processo cativo FTP não executa todo o processamento 
necessário para cada conexão. A comunicação FTP utiliza uma conexão para
 o controle e uma (ou várias) para transferência de arquivos. A primeira
 conexão (chamada de conexão de controle "Ftp-control") é utilizada para
 autenticação e comandos, já a segunda (chamada de conexão de dados 
"Ftp-data"), é utilizada para a transferência de informações e arquivos 
em questão.O FTP também é utilizado de forma personalizada e 
automática em soluções que trabalham como o EDI (Eletronic Data 
Interchange), onde Matrizes e Filiais trocam arquivos de dados com a 
finalidade de sincronizar seus bancos de dados. Outro uso seria os 
LiveUpdates, como o usado nas atualizações dos produtos da Symantec 
(Norton Antivírus, Personal Firewall e etc).Existem também os programas que aceleram download e que utilizam o protocolo FTP. Esses programas usam tecnologia
 de múltiplas sessões e empacotamento com a quebra dos arquivos, 
conseguindo dessa forma, uma melhora significativa na velocidade dos 
downloads.Os modos de transferência em detalhes:PadrãoNo
 modo padrão a primeira conexão que é estabelecida pelo cliente é em uma
 porta TCP de número alto (varia entre 1024 a 65535, pois é dinâmica) 
contra o servidor na porta TCP número 21. Essa conexão é quem autentica e
 diz ao servidor qual(is) arquivo(s) o cliente deseja. Esta conexão 
permite também, a passagem de outras informações de controle (comandos 
por exemplo). Contudo, quando chega à hora de transferir os dados reais 
uma segunda conexão será aberta. Diferente da conexão de controle, esta 
que é de dados, é aberta pelo servidor em sua porta TCP de número 20 
contra o cliente em uma porta TCP de número alto e que é atribuída 
também dinamicamente (cliente e servidor negociam a porta em questão 
como parte da troca da conexão de controle).PassivoNo 
modo passivo a primeira conexão é idêntica ao modo padrão. Contudo, 
quando chega à hora de transferir os dados reais, a segunda conexão não 
opera da mesma forma que no modo padrão. Ela opera da seguinte forma: o 
servidor fica esperando que o cliente abra a conexão de dados. Essa 
conexão e aberta pelo cliente em uma porta TCP de número alto (varia 
entre 1024 a 65535, pois é dinâmica) contra o servidor em uma porta TCP 
de número alto também. Tudo fica estabelecido na conexão de controle 
inclusive a porta TCP que o cliente vai usar contra o servidor. Além de 
modificar o sentido da conexão de dados, as portas são altas em ambos os
 lados.O comando PASV é quem altera o modo de operação.Problemas com o protocolo FTP em alguns GatewaysUm
 aspecto importante que deve ser mencionado é o fato de que as redes 
normalmente se conectam à Internet através de um Gateway, e dependendo 
do tipo e a concepção dele, poderá fazer com que o FTP seja configurado 
de forma nada convencional. Um exemplo é o Proxy da AnalogX. O programa 
FTP nesse caso deve ser configurado para conectar diretamente no 
servidor Proxy, como se este fosse realmente o servidor de FTP. 
Entretanto, será passado a ele o endereço do FTP correto, de tal forma 
que ele fará o resto do trabalho (conexões no FTP correto e repasses 
para o cliente da rede interna que solicitou a conexão).Advertência sobre a segurançaNa
 conexão FTP feita no modo padrão a segunda conexão (ftp-data) traz 
sérios problemas para a segurança das redes. O motivo é que a conexão 
aberta no sentido do servidor em uma porta TCP de número abaixo de 1024 
(o default é 20) contra o cliente em uma porta TCP numerada de forma 
dinâmica e maior que 1024, sem estar com o flag ACK acionado, será 
considerada pelo administrador da rede como acesso indevido e os pacotes
 de dados serão descartados. Já o modo passivo é considerado o modo 
correto de abrir uma conexão do tipo "ftp-data".