Sobes.tech
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 (pipelining mexanizmi 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.