Sobes.tech
Middle

Mi a különbség az HTTP/1 és az HTTP/2 között?

sobes.tech MI

Válasz az MI-től

Főbb különbségek:

  • Multiplexálás (Multiplexing). Az HTTP/2 lehetővé teszi több kérés és válasz egyidejű küldését és fogadását egy TCP-kapcsolaton keresztül. Az HTTP/1.1 külön kapcsolatot igényelt minden kérés/válasz esetén (kivéve a pipelining mechanizmust, amelynek korlátai voltak).
  • Fejlécek tömörítése (Header Compression). Az HTTP/2 az HPACK algoritmust használja a fejlécek tömörítésére, hogy csökkentse azok méretét és az átvitt adatok mennyiségét. Az HTTP/1.1-ben a fejlécek szöveges formátumban kerülnek küldésre.
  • Áramlatszintű prioritás (Stream Prioritization). Az HTTP/2-ben a kliens prioritást adhat különböző áramlásoknak (kérések/válaszoknak), ami lehetővé teszi a szerver számára az adatok szállítási sorrendjének optimalizálását. Az HTTP/1.1 nem rendelkezik ilyen mechanizmussal.
  • Szerveroldali push (Server Push). Az HTTP/2 lehetővé teszi a szerver számára, hogy erőforrásokat küldjön a kliensnek mielőtt a kliens kérné azokat, feltételezve azok szükségességét az oldal megjelenítéséhez. Az HTTP/1.1-ben a kliensnek kifejezetten kérnie kell minden erőforrást.
  • Frame formátum (Binary Framing). Az HTTP/2 bináris formátumban (frame-ekben) továbbítja az adatokat, ami megkönnyíti a parsingot és növeli a hatékonyságot az HTTP/1.1 szöveges formátumához képest.

Összehasonlítás táblázatban:

Jellemző HTTP/1.1 HTTP/2
Kapcsolat Egy kapcsolat minden kéréshez (pipelining nélkül) Egy kapcsolat több áramlathoz
Multiplexálás Nincs (vagy korlátozott pipelining) Igen
Fejlécek tömörítése Nincs HPACK (bináris tömörítés)
Áramlatszintű prioritás Nincs Igen
Szerveroldali push Nincs Igen
Adatformátum Szöveg Bináris (frame-ek)
Head-of-Line blokkolás Jelen van Részben megoldott multiplexálással

Példa kérés HTTP/1.1-ben:

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

Részleges adatmegjelenítés HTTP/2-ben (a frame-ek közötti kommunikáció összetettebb és nem ilyen egyszerűen ábrázolható):

// HTTP/2-ben az interakció frame-ek szintjén történik (HEADERS, DATA stb.),
// amelyek binárisak és el vannak rejtve a felhasználó elől az alkalmazási szinten.
// Egyszerű szöveges formában való bemutatásuk nehéz.
// A fejlécek tömörítve vannak és a HEADERS frame-ben kerülnek továbbításra.
// A válasz testje a DATA frame-ekben kerül átadásra.