Sobes.tech
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
// ...бір байланыс арқылы параллель жіберіледі