Middle
HTTP/1 və HTTP/2 arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Əsas fərqlər:
- Çoxlama (Multiplexing). HTTP/2, eyni TCP bağlantısı vasitəsilə bir vaxtda bir neçə sorğu və cavabı göndərməyə və almaya imkan verir. HTTP/1.1 hər sorğu/cavab üçün ayrıca bağlantı tələb edirdi (yalnız
pipeliningmexanizmi istifadə olunduqda, lakin məhdudiyyətlərlə). - Başlıqların sıxılması. HTTP/2, HPACK algoritmi ilə başlıqları sıxışdıraraq onların ölçüsünü və ötürülən məlumatların miqdarını azaldır. HTTP/1.1-də başlıqlar mətn formatında göndərilir.
- Axın Prioritetləşdirilməsi. HTTP/2-də müştəri müxtəlif axınlar üçün (sorğular/cavablar) prioritet göstərə bilər, bu da serverə məlumatların çatdırılma ardıcıllığını optimallaşdırmağa imkan verir. HTTP/1.1 belə mexanizmi yoxdur.
- Serverin əvvəlcədən göndərməsi (Server Push). HTTP/2 serverə, müştəri onları soruşmadan əvvəl resursları göndərməyə imkan verir, bu da onların səhifənin göstərilməsi üçün lazım olduğunu fərz edir. HTTP/1.1-də, müştəri hər resursu açıq şəkildə sorğulamalıdır.
- Çərçivə formatı. HTTP/2 məlumatları ikili formatda (çərçivələr) ötürür, bu da analiz etməyi asanlaşdırır və HTTP/1.1-in mətn formatına nisbətən səmərəliliyi artırır.
Cədvəldə müqayisə:
| Xüsusiyyət | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Bağlantı | Hər sorğu üçün ayrı bağlantı (pipelining olmadan) | Bir neçə axın üçün tək bağlantı |
| Çoxlama | Yox (və ya pipelining ilə məhdudlaşdırılmış) |
Bəli |
| Başlıqların sıxılması | Yox | HPACK (ikili sıxışdırma) |
| Axın prioritetləşdirilməsi | Yox | Bəli |
| Serverin əvvəlcədən göndərməsi | Yox | Bəli |
| Məlumatların formatı | Mətn | İkili (çərçivələr) |
| Head-of-Line Bloklaması | Mövcuddur | Kısmen çoxlama ilə həll olunur |
HTTP/1.1-də sorğu nümunəsi:
// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*
HTTP/2-də məlumatların qismən nümayişi (çərçivə mübadiləsi daha mürəkkəbdir və burada sadə şəkildə göstərilmir):
// HTTP/2-də qarşılıqlı əlaqə çərçivələr səviyyəsində həyata keçirilir (HEADERS, DATA və s.),
// bunlar ikili və tətbiq səviyyəsində istifadəçidən gizlidir.
// Sadə mətn şəklində onları göstərmək çətindir, yalnız illustrasiya üçün.
// Başlıqlar sıxılır və HEADERS çərçivəsində ötürülür.
// Cavabın gövdəsi DATA çərçivələrində ötürülür.