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
  • ۱۱.۱. شباهت به HTTP 1.x
  • ۱۱.۲. متن‌ساده، ناامن
  • ۱۱.۳. TLS با لایبرری‌های مختلف
  • ۱۱.۴. استفاده در خط فرمان
  • ۱۱.۵. آپشن‌های libcurl
  • ۱۱.۵.۱. فعال‌کردن HTTP/2
  • ۱۱.۵.۲. Multiplexing
  • ۱۱.۵.۳. Server push

Was this helpful?

Export as PDF
  1. فارسی

http2 در curl

Previoushttp2 در کرومیومNextبعد از http2

Last updated 5 years ago

Was this helpful?

به طور آزمایشی پشتیبانی از http2 را از سپتامبر ۲۰۱۳ ارائه می‌دهد.

در روح curl، ما تلاش می‌کنیم که همه‌ی جنبه‌های http2 را پوشش دهیم. curl معمولا به عنوان ابزاری برای تست وب‌سایت‌ها به کار می‌رود و ما تلاش می‌کنیم که این روند را برای http2 نیز حفظ کنیم.

curl از لایبرری جدا‌گانه‌ای به نام برای لایه‌ی فریم استفاده می‌کند. curl به nghttp2 1.0 یا بالاتر نیاز دارد.

البته، فراموش نشود که در حال حاضر، curl ارائه‌شده در لینوکس و libcurl با پشتیبانی از پرتکل HTTP/2 به طور پیش‌فرض ارائه نمی‌شوند.

۱۱.۱. شباهت به HTTP 1.x

در درون، curl هدرهای http2 را به سبک HTTP 1.x تبدیل می‌کند و آن‌ها را به کاربر ارائه می‌دهد تا مانند HTTP کنونی ظاهر شوند. این کار اجازه می‌دهد تا انتقال داده‌ها برای کاربر curl و HTTP امروزی راحت‌تر شود. در درخواست‌های رو به بیرون نیز هدرها در میانه‌ی راه از حالت HTTP 1.x به فرمت http2 تبدیل می‌شوند. این قابلیت باعث می‌شود که کاربران خیلی به این مورد اهمیت ندهند که با کدام نسخه‌ی HTTP رو‌به‌رو هستند.

۱۱.۲. متن‌ساده، ناامن

curl از http2 برمبنای TCP استاندارد و هدر Upgrade: پشتیبانی می‌کند. اگر شما یک درخواست HTTP انجام دهید و بخواهید از HTTP 2 استفاده کنید، curl از سرور می‌خواهد که در صورت امکان از http2 استفاده کند.

۱۱.۳. TLS با لایبرری‌های مختلف

curl از لایبرری‌های مختلف TLS می‌تواند استفاده کند. چالشی که در TLS با آن مواجه هستیم، پشتیبانی از ALPN برای Http2 است و هم‌چنین پشتیبانی از NPN است.

curl را با ورژن‌های جدیدتر OpenSSL یا NSS بیلد (Build) کنید تا پشتیبانی ALPN و NPN را داشته باشید. از GNUTLS یا PolarSSL، پشتیبانی ALPN را می‌گیرید، ولی NPN را نه.

۱۱.۴. استفاده در خط فرمان

برای اطلاع‌دادن به curl برای استفاده از http2، چه به صورت متن‌ساده یا TLS، از آپشن --http2 استفاده کنید. curl هم‌چنان از HTTP/1.1 به طور پیش‌فرض استفاده می‌کند.

۱۱.۵. آپشن‌های libcurl

۱۱.۵.۱. فعال‌کردن HTTP/2

اپلیکیشن شما می‌تواند از URLهای https:// یا http:// پشتیبانی کند، ولی شما می‌توانید از آپشن CURLOPT_HTTP_VERSION استفاده کنید تا نسخه‌ی HTTP مورداستفاده را تغییر دهید.

۱۱.۵.۲. Multiplexing

۱۱.۵.۳. Server push

libcurl تلاش می‌کند که رفتارهای کنونی را ادامه دهد، بنابراین باید قابلیت multiplexing HTTP/2 را با آپشن فعال کنید.

نکته‌ی ریز دیگر این‌که در خاطر داشته باشید که اگر چندین درخواست با libcurl یک‌جا بفرستید، با اینترفیس چندگانه‌ی خودش، هر تعداد انتقالی را یک‌جا شروع کند و اگر شما می‌خواهید صبر کنید تا libcurl همه‌ی آن‌ها را در یک کانکشن قرار دهد،‌به جای این‌که چندین کانکشن با هم باز کند، شما می‌توانید از آپشن استفاده کنید.

libcurl 7.44.0 و بالاتر از قابلیت Server push در HTTP/2 پشتیبانی می‌کند. شما می‌توانید از این قابلیت با اضافه‌کردن یک تابع برای فراخوانی هنگام دریافت Push با آپشن ست کنید. اگر Push توسط اپلیکیشن پذیرفته شود، یک انتقال جدید روی curl ساخته می‌شود و محتوا به همان صورت کانکشن‌های معمولی تحویل داده می‌شود.

پروژه‌ی curl
nghttp2
CURLMOPT_PIPELINING
CURLOPT_PIPEWAIT
CURLMOPT_PUSHFUNCTION