Junior
HTTP нұсқалары және олардың айырмашылықтары туралы айтыңыз.
sobes.tech AI
AI-дан жауап
HTTP негізгі нұсқалары:
- HTTP/0.9: қарапайым HTML құжаттарды жіберу үшін негізгі нұсқа. Тек
GETәдісін қолдады, тақырыптар мен жауап статустары болмады. - HTTP/1.0: тақырыптарды (Content-Type, User-Agent),
POSTжәнеHEADәдістерін, жауап статустарын енгізді. Әр сұрау/жауаптан кейін байланыс жабылды. - HTTP/1.1: айтарлықтай жақсартулар:
- тұрақты байланыстар (Persistent Connections) - TCP байланысын бірнеше сұраулар үшін пайдалану.
- конвейерлеу (Pipelining) - бірнеше сұрауды жауап күтпестен жіберу (жақсы жүзеге асырылмаған және сирек пайдаланылады).
- виртуалды хосттар (Host тақырыбы).
- ішінара GET сұраулары (Range тақырыбы).
- кэштеу (Cache-Control, ETag, Last-Modified).
- PUT және DELETE әдістері.
- HTTP/2: Google-дың SPDY негізіндегі протокол. негізгі айырмашылықтар:
- Бинарлық протокол, мәтіндік емес - тиімдірек талдау.
- мультиплексинг - бір TCP байланысы арқылы бірнеше сұрау/жауапты параллель жіберу. HTTP/1.1 pipelining-дағы "head-of-line blocking" мәселесін жояды.
- тақырыптарды сығу (HPACK) - жіберілетін деректердің көлемін азайту.
- приоритизация (Server Push) - сервер клиентке сұрағанға дейін ресурстарды жібере алады.
- HTTP/3: UDP протоколына негізделген (QUIC - Quick UDP Internet Connections пайдаланады) және TCP орнына. өнімділікті жақсартуға бағытталған, әсіресе тұрақсыз желілерде:
- TCP деңгейіндегі "head-of-line blocking" жою. TCP-да бір пакет жоғалса, барлық кейінгі пакеттер блокталады. QUIC (және HTTP/3) тек жоғалған пакетке тиесілі ағынды блоктайды.
- тезірек байланыс орнату (0-RTT немесе 1-RTT).
- QUIC өз механизмдерін бақылау және сенімділікті қамтамасыз етеді.
Негізгі айырмашылықтар кестеде:
| Ерекшелік | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|
| Протокол | TCP | TCP | TCP | UDP (QUIC) |
| Формат | Мәтіндік | Мәтіндік | Бинарлық | Бинарлық |
| Әдепкі байланыс | Қысқа мерзімді | Тұрақты | Тұрақты (мультиплексинг) | Тұрақты (QUIC ағындары) |
| Мультиплексинг | Жоқ | Имитация (Pipelining) | Иә | Иә |
| Тақырыптарды сығу | Жоқ | Жоқ | HPACK | QPACK (QUIC-те) |
| Server Push | Жоқ | Жоқ | Иә | Иә |
| HOL блоктау (TCP) | Иә (сұрау деңгейінде) | Иә (сұрау деңгейінде) | Иә (байланыс деңгейінде) | Жоқ (ағын деңгейінде) |
HTTP/1.1-де сұрау мысалы:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: curl/7.64.1
Accept: */*
HTTP/2-де сұрау мысалы (бинарлық, концептуалды):
// Сұрау 1: /index.html алу
// :method = GET
// :path = /index.html
// :authority = www.example.com
// Сұрау 2: /style.css алу
// :method = GET
// :path = /style.css
// :authority = www.example.com
// ...бір байланыс арқылы параллель жіберіледі