# Os 27 protocolos que o curl fala

> O curl é conhecido como ferramenta de HTTP, mas a versão atual fala 27 esquemas de URL: transferência de arquivos por FTP, SFTP e SMB, e-mail por SMTP, POP3 e IMAP, publish-subscribe MQTT, consultas LDAP e relíquias como Gopher, DICT e Telnet. Conhecer o mapa, e saber quais esquemas começam em texto claro, muda a forma de usar a ferramenta.

Source: https://ronutz.com/pt-BR/learn/curl-protocols-beyond-http  
Updated: 2026-07-07  
Related tools: https://ronutz.com/pt-BR/tools/curl-command-builder, https://ronutz.com/pt-BR/tools/http-request-translator

---

Pergunte à maioria dos engenheiros o que o curl faz e a resposta será "requisições HTTP". Verdade, e radicalmente incompleta. A versão atual da ferramenta curl fala 27 esquemas de URL, e a lista oficial em curl.se parece um passeio pela história das redes: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS e WSS. Este artigo percorre o mapa: para que serve cada família, quais esquemas começam dentro de TLS e as semânticas do curl que surpreendem na primeira vez.

## Uma ferramenta, uma gramática

A razão de uma ferramenta só cobrir tanto terreno é que o curl trata tudo como uma transferência endereçada por URL: um esquema, um host e um caminho com sabor de protocolo. O que muda por protocolo é o significado de "download" e "upload". Em HTTP, download é um GET e upload com `-T` é um PUT. Em FTP e SFTP, são busca e gravação de arquivos. Em SMTP, fazer upload de uma mensagem significa enviá-la. Em MQTT, baixar um tópico significa assiná-lo, e postar dados com `-d` significa publicar. Em POP3, o download busca um e-mail. A gramática permanece constante; os verbos são reinterpretados.

Mais uma peça da gramática: se você der ao curl uma URL sem esquema, ele adivinha. O palpite padrão é HTTP, mas prefixos comuns de hostname o direcionam, então um hostname começando com "ftp." é assumido como FTP. Conveniente no uso interativo, e melhor evitar em scripts, onde um esquema explícito documenta a intenção.

## A família web: HTTP, HTTPS, WS, WSS

HTTP e HTTPS dispensam apresentação; o curl fala de HTTP/0.9 a HTTP/3, dependendo do build e das flags, e é aqui que mora a modelagem rica de requisições: métodos, cabeçalhos, cookies, formulários multipart, redirecionamentos, compressão. WS e WSS são WebSocket: um canal bidirecional, parecido com TCP, inicializado sobre uma requisição HTTP ou HTTPS, útil para cutucar endpoints de socket a partir do shell.

## A família de transferência: FTP, FTPS, SFTP, SCP, TFTP, SMB, SMBS, FILE

Este é o território original do curl. O FTP clássico começa em texto claro na porta 21 e pode subir a sessão para TLS; o FTPS, em vez disso, embrulha a conexão em TLS desde o primeiro byte, e suas conexões de dados separadas irritam firewalls há décadas. SFTP e SCP parecem iguais na linha de comando, mas compartilham apenas o transporte: ambos rodam sobre SSH versão 2, com o SCP oferecendo semântica simples de cópia e o SFTP um protocolo de arquivos mais completo. O TFTP é o minimalista sobre UDP, sem autenticação por definição, vivendo no mundo de gravação de firmware e boot de rede. SMB e SMBS alcançam compartilhamentos Windows, com uma ressalva que a ferramenta deve dizer em voz alta: o curl fala SMB versão 1, que servidores modernos frequentemente desabilitam. E `file://` dispensa a rede por completo, o que o torna perfeito para testar um pipeline com sintaxe real de curl antes de apontá-lo para a produção.

## A família de e-mail: SMTP, POP3, IMAP e seus gêmeos TLS

O curl é um cliente de e-mail completo, ainda que espartano. Enviar é um upload SMTP: `-T mensagem.eml` mais `--mail-from` e `--mail-rcpt` para o envelope. Receber é um download POP3 ou IMAP, com a URL do IMAP selecionando caixa e mensagem. Cada um dos três vem em dois sabores: uma porta em texto claro que pode subir para TLS dentro da sessão (STARTTLS em SMTP e IMAP, STLS em POP3), e um gêmeo com TLS implícito em porta própria: SMTPS na 465, POP3S na 995, IMAPS na 993. A regra prática: nos sabores com upgrade, adicione `--ssl-reqd` para a transferência falhar em vez de continuar em texto claro caso o servidor não ofereça o upgrade.

## Mensageria, consultas e a ala do museu

O MQTT dá ao curl um pé em IoT: versão 3 do protocolo publish-subscribe, em que assinar é um download e publicar é `-d` com dados postados na URL do tópico, com o MQTTS como variante TLS. LDAP e LDAPS empacotam uma consulta de diretório inteira, DN base, atributos, escopo e filtro, em uma única URL. Depois vem a ala do museu, ainda mantida e de vez em quando exatamente o que você precisa: o DICT consulta servidores de dicionário com URLs como `dict://dict.org/d:curl`; o Gopher, protocolo de documentos anterior à web, ganhou um gêmeo moderno GopherS; o RTSP 1.0 conversa com servidores de mídia em streaming; e o TELNET transforma o curl em um cliente TCP cru interativo, que envia o stdin e imprime o que voltar.

Uma nota histórica: builds antigos do curl também listavam a família de streaming RTMP. Ela sobrevive apenas em builds ligados à librtmp e está ausente da lista oficial atual, e é por isso que ferramentas voltadas ao curl atual a tratam como legado.

## O mapa do texto claro é o mapa de segurança

Ordene os 27 esquemas por postura de TLS e uma checklist de segurança cai no colo. Um grupo começa dentro de proteção criptográfica: HTTPS, WSS, FTPS, SFTP, SCP, SMBS, SMTPS, POP3S, IMAPS, MQTTS, LDAPS (SFTP e SCP herdam a proteção do SSH em vez do TLS, mesmo efeito prático). Um segundo grupo começa em texto claro mas pode subir dentro da sessão: FTP, SMTP, POP3, IMAP, LDAP. Todo o resto, HTTP, WS, TFTP, SMB, DICT, GOPHER, RTSP, TELNET, roda em claro, ponto final. Credenciais enviadas pelo terceiro grupo cruzam a rede legíveis; pelo segundo grupo também, a menos que você force o upgrade. Esse é o argumento inteiro a favor do `--ssl-reqd`, e a favor de ler o esquema antes de ler qualquer outra coisa em um comando.

## Experimente

O [construtor de comandos curl](https://ronutz.com/pt-BR/tools/curl-command-builder) transforma este artigo em bancada de trabalho: escolha qualquer um dos 27 protocolos, receba o explicador, preencha campos adaptados ao protocolo e copie o comando exato com cada flag explicada. Seu inverso, o [tradutor de requisições HTTP](https://ronutz.com/pt-BR/tools/http-request-translator), lê de volta para você um comando colado.
