http2 explained
  • English
    • Background
    • HTTP Today
    • Things done to overcome latency pains
    • Updating HTTP
    • http2 concepts
    • The http2 protocol
    • Extensions
    • An http2 world
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • After http2
    • Further reading
    • Thanks
  • Español
    • Antecedentes
    • HTTP hoy
    • Estrategias para evitar los dolores de latencia
    • Actualizando HTTP
    • Conceptos de http2
    • El protocolo http2
    • Extensiones
    • Un mundo http2
    • http2 en Firefox
    • http2 en Chromium
    • http2 en curl
    • Después de http2
    • Otras lecturas
    • Agradecimientos
  • فارسی
    • مقدمه و معرفی
    • پیش‌زمینه
    • HTTP امروز
    • کارهایی که برای غلبه بر تأخیرها انجام شده
    • آپدیت‌کردن HTTP
    • مفاهیم http2
    • پرتکل http2
    • افزونه‌ها
    • دنیایی با http2
    • http2 در فایرفاکس
    • http2 در کرومیوم
    • http2 در curl
    • بعد از http2
    • خواندن بیشتر
    • تقدیر و تشکر
    • واژه‌نامه
  • Français
    • Avant-propos
    • HTTP aujourd'hui
    • Rustines pour s'accommoder de la latence
    • Mettre à jour HTTP
    • Concepts http2
    • Le protocole http2
    • Extensions
    • Le monde http2
    • http2 et Firefox
    • http2 et Chromium
    • http2 et curl
    • Après http2
    • Lecture complémentaire
    • Remerciements
  • Italiano
    • Background
    • HTTP oggi
    • Tecniche applicate al contrasto della latenza
    • Aggiornare HTTP
    • http2 a grandi linee
    • Il protocollo http2
    • Estensioni
    • Un mondo di http2
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • Dopo http2
    • Altre letture
    • Riconoscimenti, Ringraziamenti
  • 日本語
    • 背景
    • HTTPの現状確認
    • レイテンシーの闇を克服せよ
    • もうやめて、HTTP 1.1のライフはゼロよ
    • http2のコンセプト
    • http2プロトコル
    • http2は拡張の夢を見る
    • http2化される世界
    • Firefoxにおけるhttp2
    • Chromiumにおけるhttp2
    • curlにおけるhttp2
    • http2の次にくるもの
    • 参考文献
    • 謝辞
  • 한국어
    • 배경
    • HTTP 현재
    • 대기시간의 고통을 극복하기 위해 한일
    • HTTP 업데이팅
    • http2 컨셉
    • http2 프로토콜 (번역되지 않은)
    • 연장선 (번역되지 않은)
    • http2 세계 (번역되지 않은)
    • Firefox에서의 http2
    • Chromium에서의 http2
    • curl에서의 http2
    • HTTP2 다음에 오는 것
    • 참조
    • 감사의 말
  • Português
    • Antecedentes
    • HTTP Hoje
    • Estratégias para evitar as dores da latência
    • Atualizando HTTP
    • Conceitos de http2
    • O protocolo http2
    • Extensões
    • Um mundo http2
    • http2 e Firefox
    • http2 e Chromium
    • http2 e curl
    • Após o http2
    • Outras leituras
    • Agradecimentos
  • русском
    • История
    • HTTP сегодня
    • Шаги, предпринятые для преодоления задержки
    • Обновление HTTP
    • Концепция http2
    • Протокол http2
    • Расширения
    • Мир http2
    • http2 в Firefox
    • http2 в Chromium
    • http2 в curl
    • После http2
    • Дальнейшее чтение
    • Благодарности
  • Svenska
    • Bakgrund
    • HTTP idag
    • Tricks för att komma över fördröjningssmärtor
    • Uppdatera HTTP
    • http2-koncept
    • http2-protokollet
    • Utökningar
    • En http2-värld
    • http2 i Firefox
    • http2 i Chromium
    • http2 i curl
    • Efter http2
    • Fortsatt läsning
    • Tack
  • Türkçe
    • Arkaplan
    • HTTP'nin Bugünü
    • Gecikmelerin üstesinden gelmek için yapılanlar
    • HTTP'nin güncellenmesi
    • http2 konseptleri
    • http2 protokolü
    • Uzantılar
    • http2 dünyası
    • Firefox'da http2
    • Chromium'da http2
    • curl'de http2
    • http2 sonrası
    • Daha fazla bilgi için
    • Teşekkürler
  • 中文
    • 背景
    • HTTP的现状
    • 那些年,克服延迟之道
    • 升级HTTP
    • http2的观念
    • http2协议
    • 扩展
    • http2的世界
    • Firefox里的http2
    • Chromium里的http2
    • Curl里的http2
    • 后http2时代
    • 扩展阅读
    • 致谢
Powered by GitBook
On this page
  • 11.1. Parecido com HTTP 1.x
  • 11.2. Texto puro, inseguro
  • 11.3. TLS e quais bibliotecas
  • 11.4. Uso na linha de comando
  • 11.5. Opções libcurl
  • 11.5.1 Habilitar HTTP/2
  • 11.5.2 Multiplexação
  • 11.5.3 Server push

Was this helpful?

Export as PDF
  1. Português

http2 e curl

Previoushttp2 e ChromiumNextApós o http2

Last updated 5 years ago

Was this helpful?

O provê suporte experimental para http2 desde Setembro de 2013.

No espírito do curl, nós pretendemos suportar cada detalhe do http2 que seja possível. curl é frequentemente utilizado como uma ferramenta de teste e uma maneira de “pingar” manualmente sites e nós pretendemos manter isto para http2 também.

curl utiliza uma biblioteca separada para a funcionalidade de camada de frame do http2. curl requer nghttp2 1.0 ou mais novo.

Note que, atualmente, no linux, o curl e libcurl nem sempre são instalados com o suporte ao protocolo HTTP/2 ativado.

11.1. Parecido com HTTP 1.x

Internamente, curl converterá cabeçalhos http2 de entrada para o formato de cabeçalhos HTTP 1.x e fornecê-los ao usuário, de forma semelhante ao HTTP existente. Isto permite uma transição mais fácil para quem está utilizando curl e HTTP hoje em dia. Da mesma forma, curl converterá cabeçalhos de saída no mesmo estilo: informe cabeçalhos HTTP 1.x para o curl e eles serão convertidos em tempo real quando estão conversando com servidores http2. Isto permite que os usuários não tenham que se preocupar demais com cada particularidade da versão HTTP em uso para cada conexão.

11.2. Texto puro, inseguro

curl suporta http2 sobre o padrão TCP via cabeçalho “Upgrade:”. Se realizar uma requisição HTTP e perguntar por HTTP 2, curl perguntará ao servidor se é possível atualizar a conexão para http2.

11.3. TLS e quais bibliotecas

curl suporta uma grande variedade de diferentes bibliotecas TLS para sua implementação TLS, e isso continua válido para o suporte http2. O desafio com TLS para o mundo http2 é o suporte para APLN e, de certa forma, o suporte NPN.

Compile o curl utilizando versões atuais do OpenSSL ou NSS para obter suporte para ALPN e NPN. Utilizando GnuTLS ou PolarSSL você terá suporte para ALPN, mas não para NPN.

11.4. Uso na linha de comando

Para dizer ao curl para utilizar http2, seja texto puro ou sobre TLS, deve ser utilizada a opção --http2 (que é “traço traço http2”). O padrão no curl ainda é HTTP/1.1, portanto a opção extra é necessária para indicar o uso de http2.

11.5. Opções libcurl

11.5.1 Habilitar HTTP/2

Sua aplicação deve utilizar URLs https:// ou http:// normalmente, mas setar a opção CURLOPT_HTTP_VERSION do curl_easy_setopt para CURL_HTTP_VERSION_2 para fazer uma tentativa do libcurl utilizar http2. Ele tentará conectar via http2 se for possível, mas continuará utilizando HTTP 1.1 caso ocorra algum problema.

11.5.2 Multiplexação

11.5.3 Server push

Como libcurl tenta manter o comportamento existente o máximo possível, será necessário habilitar multiplexação HTTP/2 para sua aplicação com a opção . Caso contrário, continuará utilizando uma requisição de cada vez por conexão.

Outro pequeno detalhe para ter em mente é que se várias requisições forem solicitadas de uma só vez com libcurl, utilizando sua interface múltipla, uma aplicação pode iniciar qualquer número de transferências de uma vez. Caso seja necessário que o libcurl espere um pouco para adicioná-las na mesma conexão, ao invés de abrir novas conexões para todas elas, a opção pode ser utilizada para cada transferência que você prefira esperar.

libcurl 7.44.0 e posteriores suportam HTTP/2 server push. Para utilizar esta funcionalidade, indique um callback na opção . Se a aplicação aceitar o push, uma nova transferência será criada utilizando “CURL easy handle” e o conteúdo será entregue nele, assim como qualquer outra transferência.

projeto curl
nghttp2
CURLMOPT_PIPELINING
CURLOPT_PIPEWAIT
CURLMOPT_PUSHFUNCTION