02 - Baseado em TCP
video: https://youtu.be/... no frontmatter da nota.Baseado em TCP
O FTP (File Transfer Protocol) é fundamentado estritamente sobre o Protocolo TCP (Transmission Control Protocol) na camada de transporte. Por ser orientado a conexão e garantir a entrega de pacotes em ordem e sem erros, o TCP é o alicerce indispensável que permite ao FTP mover gigabytes de arquivos críticos sem o risco de corrupção de dados. Esta relação técnica profunda entre a camada de aplicação (FTP) e a camada de transporte (TCP) define a robustez do sistema de arquivos em rede.
1. Conexões TCP Duplas: Controle e Dados
Diferente de protocolos mais simples, o FTP exige que existam duas conexões TCP independentes para cada sessão de usuário.
- Canal de Controle (Porta 21): Utiliza um socket TCP persistente para o diálogo de comandos. O sucesso de cada comando (
USER,PASS,LIST) depende da confirmação de recebimento ACK do TCP em nível de segmento. - Canal de Dados (Portas 20 ou Dinâmicas): Para cada transferência de arquivo em curso, uma nova conexão TCP é aberta e fechada. Isso garante que a largura de banda total do link possa ser dedicada exclusivamente ao fluxo bruto de bytes do arquivo, sem interferência de comandos de controle.
2. Modos de Conexão de Dados
Modo Ativo (Active Mode)
- O cliente envia comando
PORTindicando IP e porta onde está escutando. - O servidor abre uma conexão TCP da sua porta 20 para o IP:porta informados pelo cliente.
- Problema: firewalls do lado do cliente costumam bloquear conexões entrantes.
Modo Passivo (Passive Mode)
- O cliente envia comando
PASV. - O servidor responde com IP e porta (alta) onde está escutando.
- O cliente abre a conexão TCP para o servidor.
- Vantagem: atravessa NAT e firewalls do cliente, sendo hoje o padrão de fato.
3. O Three-Way Handshake em Dobro
Cada etapa técnica do FTP exige a sincronização rigorosa do TCP.
- Handshake de Controle: O cliente inicia o SYN para a porta 21, recebe o SYN-ACK e responde com ACK. Somente após este ciclo é que o servidor FTP envia o banner de boas-vindas.
- Handshake de Dados: No momento de um download (
RETR), um segundo handshake TCP deve ocorrer para estabelecer o fluxo de bits do arquivo. No modo ativo, o servidor envia o SYN para o cliente; no modo passivo, o cliente envia o SYN para a porta dinâmica do servidor.
Cliente Servidor FTP
| |
| --- SYN (porta 21) -> |
| <- SYN-ACK ----------- |
| --- ACK -------------> | (Canal de Controle estabelecido)
| --- USER/PASS -------> |
| <- 230 ---------------- |
| --- PASV ------------> | (solicita modo passivo)
| <- 227 (port 5000) --- |
| --- SYN (port 5000)-> | (inicia Canal de Dados)
| <- SYN-ACK ----------- |
| --- ACK -------------> |
| --- RETR arquivo.txt > |
| <== DADOS ============ |
| --- FIN -------------> | (fecha Canal de Dados)
4. Garantia de Integridade e Janela de Transmissão
O FTP tira proveito da inteligência do TCP para mitigar falhas de rede.
- Checksums e Retransmissão: Se um segmento de um executável (.exe) for perdido ou corrompido durante a transferência, o TCP detecta e solicita a retransmissão automática. O FTP nunca "vê" o erro; ele apenas recebe o fluxo de bytes correto no final.
- Sliding Window (Janela Deslizante): O TCP ajusta a velocidade de envio dos dados do arquivo baseando-se na capacidade de recepção do cliente, o que previne o transbordamento de buffers (Buffer Overflow) em máquinas lentas ou redes congestionadas.
- Controle de Congestionamento: Algoritmos como Slow Start, Congestion Avoidance, Fast Retransmit e Fast Recovery (TCP Reno/Cubic) garantem que o FTP não agrave o congestionamento da rede subjacente.
5. Perspectiva de Cyber Security e Ameaças em Nível TCP
Para um profissional de Cyber Security, a dependência do FTP no TCP cria superfícies de ataque específicas.
TCP Session Hijacking (Sequestro de Sessão)
Como o canal de controle do FTP é frequentemente em texto claro, um atacante pode prever ou capturar os números de sequência (Sequence Numbers) do TCP.
- O Ataque: O invasor injeta pacotes TCP falsificados com o número de sequência correto, permitindo-lhe "sequestrar" a conexão e executar comandos administrativos em nome do usuário legítimo.
Port Stealing (Roubo de Porta)
Em modo ativo, o servidor conecta de volta no cliente. Um atacante local na rede do cliente pode tentar "chegar primeiro" e abrir o socket na porta que o cliente anunciou que estaria esperando os dados, desviando o arquivo para sua própria máquina de forma silenciosa.
Bounce Attack (Ataque de Salto)
Histórico (mitigado em servidores modernos): um cliente FTP instrui o servidor a enviar dados para uma porta de um terceiro alvo, usando o servidor FTP como proxy de varredura de portas. A RFC 2577 documenta o problema.
6. Comparação FTP vs Alternativas Modernas
| Protocolo | Transporte | Porta | Cifragem | Estado |
|---|---|---|---|---|
| FTP | TCP | 21 (controle) + 20 (dados) | Nenhuma | Obsoleto para uso externo |
| FTPS | TCP | 21 + dados | TLS | Comum em integrações B2B |
| SFTP | TCP (subconjunto SSH) | 22 | SSH | Padrão moderno |
| SCP | TCP (subconjunto SSH) | 22 | SSH | Substituído por SFTP |
| HTTP/HTTPS | TCP | 80 / 443 | TLS | Preferido para downloads web |
7. Auditoria Técnica e Diagnóstico de Transporte
Auditar o transporte TCP é fundamental para diagnosticar quedas prematuras de conexão (Timeout):
# Verificando as conexoes TCP ativas do servidor FTP (Canal 21 e Portas de Dados)
netstat -ant | grep ':21'
# Capturando o Handshake TCP de uma conexao FTP de entrada
sudo tcpdump -i eth0 -n 'port 21 and (tcp-syn|tcp-ack)!=0'
# Analisando janela TCP anunciada pelo cliente FTP
sudo tcpdump -i eth0 -n 'port 21' -X | grep -i window
# Testando throughput real do Canal de Dados via ftp
ftp> hash
ftp> binary
ftp> get arquivo_grande.bin
8. Tuning de Parâmetros TCP para FTP de Alta Carga
Para transferências de arquivos muito grandes (TBs), os seguintes ajustes do TCP são críticos:
| Parâmetro | Valor Recomendado | Justificativa |
|---|---|---|
net.core.rmem_max |
16 MB | Buffer de recepção maior para janelas TCP grandes |
net.core.wmem_max |
16 MB | Buffer de envio |
net.ipv4.tcp_window_scaling |
1 | Habilita janelas TCP acima de 64 KB |
net.ipv4.tcp_timestamps |
1 | Estimativa precisa de RTT em links longos |
net.ipv4.tcp_congestion_control |
bbr | Algoritmo de congestionamento moderno (Google BBR) |
| MTU da interface | 9000 (Jumbo Frame) | Reduz overhead em LANs de data center |
9. Conclusão
A simbiose entre o FTP e o TCP é o que confere ao protocolo a sua confiabilidade histórica. Por delegar a gestão de erros, janelamento e retransmissão para a camada de transporte, o FTP pode focar exclusivamente na semântica de arquivos e diretórios. Compreender a mecânica do Three-Way Handshake duplo, os modos ativo/passivo e os riscos de manipulação de números de sequência TCP é essencial para administradores que ainda precisam operar FTP legado ou diagnosticar problemas de transferências lentas em ambientes corporativos. Para novas implantações, contudo, a recomendação técnica contemporânea é substituir FTP por SFTP ou HTTPS, que oferecem cifragem nativa e superfície de ataque reduzida.