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 фреймдеринде өткөрүлөт.