Junior
HTTP versiyaları və onların fərqləri haqqında danışın.
sobes.tech Süni İntellekt
AI-dan cavab
Əsas HTTP versiyaları:
- HTTP/0.9: Sadə HTML sənədlərinin ötürülməsi üçün əsas versiya. Yalnız
GETmetodu dəstəklənirdi, başlıqlar və cavab statusları yox idi. - HTTP/1.0: Başlıqların (Content-Type, User-Agent),
POSTvəHEADmetodlarının və cavab statuslarının dəstəklənməsi ilə təqdim edildi. Hər sorğu/cavabdan sonra əlaqə bağlanırdı. - HTTP/1.1: Əhəmiyyətli təkmilləşdirmələr:
- Davam edən əlaqələr (Persistent Connections) - TCP əlaqəsini bir neçə sorğu üçün təkrar istifadə etmək.
- Boru xətti (Pipelining) - əvvəlki cavab gözləmədən bir neçə sorğu göndərmək (bunun pis həyata keçirilməsi və nadir hallarda istifadə olunur).
- Virtual hostlar (Host başlığı).
- Hissəvi GET sorğuları (Range başlığı).
- Keşləmə (Cache-Control, ETag, Last-Modified).
- PUT və DELETE metodları.
- HTTP/2: Google-ın SPDY protokolü əsasında. Əsas fərqlər:
- İkili protokol - daha effektiv parse üçün.
- Multiplexing - bir TCP əlaqəsi üzərində çox sayda sorğu/cavabın paralel ötürülməsi. HTTP/1.1 pipelining-dəki "head-of-line blocking" problemini aradan qaldırır.
- Başlıqların sıxılması (HPACK) - ötürülən məlumatların ölçüsünü azaldır.
- Prioritetləşdirmə (Server Push) - server, müştəriyə lazım ola biləcək resursları soruşmadan göndərə bilər.
- HTTP/3: UDP protokolü (QUIC - Quick UDP Internet Connections istifadə edir) üzərində qurulub və TCP yerinə istifadə olunur. Performansı artırmaq üçün nəzərdə tutulub, xüsusən qeyri-stabil şəbəkələrdə:
- TCP-dəki "head-of-line blocking"-i aradan qaldırır. TCP-də bir paket itirilsə, bütün ardıcıl paketlər bloklanır. QUIC və HTTP/3-də isə yalnız itirilmiş paketə aid axın bloklanır.
- Daha sürətli əlaqə qurma (0-RTT və ya 1-RTT).
- QUIC öz axın və etibarlılıq idarəetmə mexanizmlərinə malikdir.
Əsas fərqlər cədvəldə:
| Xüsusiyyət | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|
| Protokol | TCP | TCP | TCP | UDP (QUIC) |
| Format | Mətnli | Mətnli | İkili | İkili |
| Əsas əlaqə növü | Qısa müddətli | Davam edən | Davam edən (multiplexing) | Davam edən (QUIC axınları) |
| Multiplexing | Yox | Təsviri (Pipelining) | Bəli | Bəli |
| Başlıqların sıxılması | Yox | Yox | HPACK | QPACK (QUIC-də) |
| Server Push | Yox | Yox | Bəli | Bəli |
| TCP-də HOL Blocking | Bəli (sorğu səviyyəsində) | Bəli (sorğu səviyyəsində) | Bəli (əlaqə səviyyəsində) | Yox (axın səviyyəsində) |
HTTP/1.1-də sorğu nümunəsi:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: curl/7.64.1
Accept: */*
HTTP/2-də (konseptual, ikili formatda) sorğu nümunəsi:
// Sorğu 1: /index.html alın
// :method = GET
// :path = /index.html
// :authority = www.example.com
// Sorğu 2: /style.css alın
// :method = GET
// :path = /style.css
// :authority = www.example.com
// ...bir əlaqə üzərində paralel ötürülür