O FTP trabalha com o modelo cliente-servidor, onde o sistema destino (servidor, onde está rodando o programa ftpd - ftp daemon) responde aos chamados do sistema origem (cliente - onde está rodando o programa ftp). O modelo implementado utiliza-se de duas conexões diferentes entre os sistemas envolvidos: a conexão de controle, dedicada aos comandos FTP, e a outra denominada conexão de dados, dedicada a transferência de dados.
A parte do FTP executada no cliente pode ser dividida em três módulos, que interagem por algum mecanismo interno de comunicação e compartilham informações sobre o estado das transações solicitadas:
Existe outra parte do FTP executada no servidor que é dividida em dois módulos com funções e ligações análogas aos seus equivalentes no cliente. São eles o Servidor-PI e o Servidor-DTP. O equivalente ao módulo de Interface de Usuário não existe, pois no servidor não existe interação direta com o usuário.
A conexão de controle é realizada diretamente entre o Clinete-PI e o Servidor-PI, e a conexeção de dados é estabelecida entre o Cliente-DTP e o Servidor-DTP.