HTTP/2 — نسل دوم HTTP
همان معنای HTTP با قالب دودویی: همهٔ درخواستها روی یک اتصال و در جریانهای موازی میروند و سرآیندها با HPACK فشرده میشوند.
- لایهٔ OSI: 7 (کاربرد)
- انتقال: TCP (با TLS)
- پورت: 443
- استاندارد: RFC 9113 / 7541
- سطح: متوسط · حدود 8 دقیقه
نکتههای کلیدی
- قالب دودویی و قاببندیشده؛ همهٔ درخواستها روی یک اتصال TCP در جریانهای موازی.
- HPACK سرآیندها را با جدول ایستا، جدول پویا و کد هافمن فشرده میکند.
- انسداد سر صف در سطح TCP هنوز باقی است؛ HTTP/3 آن را با QUIC حل کرد.
مراحل شبیهسازی (8 بسته)
- Preface + SETTINGS: پس از انتخاب h2 در ALPN، مرورگر یک رشتهٔ ثابت ۲۴ بایتی و سپس تنظیمات خود را میفرستد.
- SETTINGS + ACK: سرور تنظیمات خود را میفرستد و دریافت تنظیمات مرورگر را با پرچم ACK تأیید میکند.
- HEADERS · جریان ۱: درخواست صفحه در جریان ۱. سرآیندهای رایج با یک بایت از جدول ایستای HPACK فرستاده میشوند.
- HEADERS · جریان ۳: بدون صبر برای پاسخ، درخواست فایل CSS در جریان ۳ میرود. :authority حالا فقط یک بایت از جدول پویا (اندیس ۶۲) است.
- HEADERS پاسخ: سرور پاسخ جریان ۱ را میفرستد: :status 200 فقط یک بایت است.
- DATA درهم: قابهای دادهٔ دو جریان روی یک اتصال TCP درهم ارسال میشوند؛ هیچ پاسخی منتظر دیگری نمیماند.
- WINDOW_UPDATE: کنترل جریان: مرورگر اعلام میکند میتواند یک مگابایت دیگر دریافت کند.
- GOAWAY: بستن مؤدبانه: آخرین جریان پردازششده و کد خطای صفر اعلام میشود.