Middle
HTTP/1 va HTTP/2 o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Asosiy farqlar:
- Multiplexing (Ko‘p oqimli). HTTP/2 bitta TCP ulanishi orqali bir vaqtning o‘zida bir nechta so‘rov va javoblarni yuborish va olish imkonini beradi. HTTP/1.1 har bir so‘rov/javob uchun alohida ulanish talab qilardi (
pipeliningmexanizmi ishlatilgan hollarda bundan mustasno, ammo cheklovlar bilan). - Sarlavhalarni siqish. HTTP/2 HPACK algoritmi yordamida sarlavhalarni siqib, ularning hajmini va uzatiladigan ma'lumotlar miqdorini kamaytiradi. HTTP/1.1 da sarlavhalar matn shaklida yuboriladi.
- Oqimlar ustuvorligini belgilash. HTTP/2 da mijoz turli oqimlar uchun (so‘rovlar/javoblar) ustuvorliklarni belgilashi mumkin, bu esa serverga ma'lumotlarni yetkazib berish tartibini optimallashtirishga imkon beradi. HTTP/1.1 bunday mexanizmga ega emas.
- Serverning oldindan yuborishi (Server Push). HTTP/2 serverga mijoz so‘ramasdan oldin resurslarni yuborishga imkon beradi, bu ularning sahifa ko‘rsatish uchun zarur ekanligiga asoslangan. HTTP/1.1 da har bir resursni aniq so‘rash kerak.
- Ramka formatlari. HTTP/2 ma'lumotlarni ikkilamchi formatda (ramkalar) uzatadi, bu esa tahlil qilishni osonlashtiradi va HTTP/1.1 ga nisbatan samaradorlikni oshiradi.
Jadvalda taqqoslash:
| Xususiyat | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Ulanish | Bir so‘rov uchun alohida ulanish (pipeliningsiz) | Bir ulanishda bir nechta oqimlar |
| Ko‘p oqimliklik | Yo‘q (yoki pipelining bilan cheklangan) |
Ha |
| Sarlavhalarni siqish | Yo‘q | HPACK (ikili siqish) |
| Oqimlar ustuvorligi | Yo‘q | Ha |
| Serverning oldindan yuborishi | Yo‘q | Ha |
| Ma'lumotlar formati | Matn | Ikili (ramkalar) |
| Head-of-Line blokirovka | Mavjud | Qisman ko‘p oqimlik bilan hal qilinadi |
HTTP/1.1 da so‘rov misoli:
// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*
HTTP/2 da ma'lumotlarning qisman ko‘rinishi (ramkalar almashinuvi murakkabroq bo‘lib, shunchaki ko‘rsatilmaydi):
// HTTP/2 da muloqot ramkalar (HEADERS, DATA va boshqalar) darajasida amalga oshiriladi,
// ular ikkilamchi va dastur darajasida foydalanuvchidan yashirilgan.
// Ularni oddiy matn shaklida tasvirlash qiyin, faqat ko‘rsatish uchun.
// Sarlavhalar siqilgan va HEADERS ramkada uzatiladi.
// Javob matni DATA ramkalarida uzatiladi.