Sobes.tech
Middle

HTTP/1 жана HTTP/2 ортосунда кандай айырма бар?

sobes.tech AI

AIден жооп

Негизги айырмачылыктар:

  • Мультиплексирлөө (Multiplexing). HTTP/2 бир TCP байланышы аркылуу бир нече суроо жана жоопту бир убакта жиберүүгө жана алууга мүмкүндүк берет. HTTP/1.1 ар бир суроо/жооп үчүн өзүнчө байланышты талап кылчу (pipelining механизми менен чектелген учурларды эске албаганда).
  • Башталыштардын кысуусу (Header Compression). HTTP/2 башталыштарды HPACK алгоритми менен кысуусун колдонуп, алардын өлчөмүн жана өткөрүлүүчү маалыматтын санын азайтат. HTTP/1.1де башталыштар текст түрүндө жөнөтүлөт.
  • Токтордун приоритети (Stream Prioritization). HTTP/2де кардар ар кандай токторго (суроолор/жооптор) приоритет коюп, серверге маалыматтарды жеткирүүнүн тартибин оптималдаштырууга мүмкүндүк берет. HTTP/1.1 мындай механизмге ээ эмес.
  • Сервердин жүктөөсү (Server Push). HTTP/2 серверге ресурстарды кардарга суроо бербестен жүктөөгө мүмкүндүк берет, алардын баракчаны көрсөтүү үчүн зарыл экенине ишенүү негизинде. HTTP/1.1де кардар ар бир ресурсты так сурашы керек.
  • Фреймдердин форматы (Binary Framing). HTTP/2 маалыматтарды бинардык форматта (фреймдерде) өткөрөт, бул парсингди жеңилдетет жана HTTP/1.1дин тексттик форматына салыштырмалуу натыйжалуулугун жогорулатат.

Таблицада салыштыруу:

Белги HTTP/1.1 HTTP/2
Байланыш Бир байланыш ар бир суроо үчүн (pipelining жок) Бир байланыш бир нече токко арналган
Мультиплексирлөө Жок (же чектелген pipelining) Ооба
Башталыштардын кысуусу Жок HPACK (бинардык кысуу)
Токтордун приоритети Жок Ооба
Сервердин жүктөөсү Жок Ооба
Маалыматтын форматы Текст Бинардык (фреймдер)
Head-of-Line блокировкасы Бар (мультиплексирлөө менен чечилет) Чечүү жолдору бар, бөлүштүрүү менен чечилет

HTTP/1.1 суроо мисалы:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

HTTP/2 маалыматтын бөлүктөрү боюнча мисал (алмашуу фреймдери татаал жана так көрсөтүлбөйт):

// HTTP/2дө өз ара аракеттешүү фреймдер деңгээлинде өтөт (HEADERS, DATA жана башка),
// алар бинардык жана колдонучунун деңгээлинде жашырынган.
// Алардын жөнөкөй текст түрүндө көрсөтүлүшү кыйын:
// Башталыштар кысылып, HEADERS фреймдеринде өткөрүлөт.
// Жооптун денеси DATA фреймдеринде өткөрүлөт.