Para iniciar uma sessão FTP (File Transfer Protocol) típica e acessar uma conta, o usuário deve fornecer uma identificação e uma senha; Após a identificação o usuário pode realizar operações de transferência de arquivos do sistema local para o sistema remoto e vice-versa; O usuário interage com o FTP por meio de um agente usuário FTP. Primeiramente fornece o nome do host remoto e estabelece uma conexão TCP com o processo servidor. Em seguida, fornece a identificação e senha, que são enviadas pela conexão TCP como parte dos comandos FTP; Se a conexão for autorizada, o usuário poderá copiar um ou mais arquivos para o sistema remoto (ou vice-versa).
Tanto o FTP quanto o HTTP são protocolos de transferência de arquivo e têm características comuns, por exemplo, ambos utilizam o TCP; O HTTP e o FTP têm algumas diferenças importantes. O FTP utiliza duas conexões paralelas para transferir um arquivo: uma conexão de controle e uma conexão de dados; A conexão de controle é utilizada para enviar informações de controle entre o cliente e o servidor como, identificação de usuário, senha, comandos para trocar de diretório e comando de inserir e resgatar arquivos; A conexão de dados é utilizada para enviar arquivos.
O FTP envia as informações de controle Fora de Banda devido a conexão de controle ser realizada em separado das informações de dados; O HTTP envia envia linhas de cabeçalho de requisição e de resposta pela mesma conexão TCP que transporta o arquivo de dados. Por esta razão, dizse que o HTTP envia suas informações de controle na Banda; Quando uma sessão FTP é iniciada com o host remoto (servidor), o lado do cliente inicia uma conexão TCP de controle com o lado servidor na porta 21. Através desta porta se estabelece uma conexão de controle e informações como, identificação, senha do usuário e comando para acesso a diretórios são enviadas; Quando o servidor recebe um comando para transferência de um arquivo, abre uma conexão TCP de dados para o lado do cliente. Neste caso, a porta 20 é utilizada para a transferência de arquivos.
FTP: o protocolo de transferência de arquivos user at host FTP interface de usuário FTP cliente transferência de arquivos sistema de arquivos local FTP servidor sistema de arquivos remoto transferência de arquivos de e para o computador remoto modelo cliente servidor cliente: lado que inicia a transferência (seja de ou para o lado remoto) servidor: host remoto ftp: RFC 959 ftp servidor: porta 21
Se, durante a mesma sessão FTP, o usuário desejar transferir outro arquivo, o FTP abrirá uma nova conexão de dados; Cabe ressaltar, que uma conexão de controle permanece aberta durante uma sessão FTP, mas uma nova conexão TCP de dados é criada para cada arquivo transferido em uma mesma sessão; Durante uma sessão FTP, o servidor deve manter informações de estado sobre o usuário. O servidor monitora o diretório corrente enquanto o usuário navega pelo mesmo; Monitorar as informações de estado para cada sessão limita o número total de sessões que o FTP pode manter simultaneamente;
FTP: controle separado, conexões de dados cliente ftp contata o servidor ftp na porta 21, especificando TCP como protocolo de transporte duas conexões TCP paralelas são abertas: controle: troca de comandos e respostas entre cliente e servidor. controle out of band dados: dados do arquivo trocados com o servidor servidor ftp mantém o estado : diretório corrente, autenticação anterior FTP cliente TCP conexão de controle porta 21 TCP conexão de dados porta 20 FTP servidor
FTP: Comandos e Respostas Os comandos, do cliente para o servidor, e as respostas, do servidor para o cliente, são enviados por meio de uma conexão de controle TCP no formato ASC II de 7 bits; Para separar comandos sucessivos, um carriage return e um line feed encerram cada um deles; Cada comando é constituído por quatro caracteres ASC II maiúsculos, alguns com argumentos opcionais;
Comandos FTP para Envio de Arquivos USER username: usado para enviar identificação do usuário ao servidor; PASS password: usado para enviar a senha do usuário ao servidor; LIST: usado para solicitar ao servidor que envie uma lista com todos os arquivos existentes no diretório remoto. A lista de arquivos é enviada por meio de uma conexão de dados (nova e não persistente), e não pela conexão TCP de controle; RETR filename: usado para resgatar um arquivo do diretório do host remoto; STOR filename: usado para inserir um arquivo no diretório corrente do host remoto;
Respostas FTP As respostas FTP são número de três digitos com uma mensagem opcional após o número; 331 Nome do usuário OK, senha requisitada; 125 Conexão de dados já aberta; iniciando transferência; 425 Não é possível abrir a conexão de dados; 452 Erro ao escrever o arquivo.
FTP Comandos e Respostas Exemplos de comandos: envie um texto ASCII sobre canal de controle USER username PASS password LIST retorna listagem do arquivo no diretório atual RETR filename recupera (obtém) o arquivo STOR filename armazena o arquivo no host remoto Exemplos de códigos de retorno código de status e frase (como no http) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file
Experiência com o protocolo FTP usando o telnet. Nesta experiência, é aberta uma conexão com a porta 21 (controle), onde são enviados o nome do usuário e senha requisitados pelo servidor FTP. Observar os códigos e as respectivas mensagens enviadas pelo servidor. Notar também os comandos FTP.
Experiência FTP com o Wireshark.
Experiência FTP com o Wireshark.