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
pipeliningmechanizmust, 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.