webszerver
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
| webszerver [2026/02/15 04:13] – [HTTP/2 (2015)] riba.zoltan | webszerver [2026/02/16 06:05] (aktuális) – riba.zoltan | ||
|---|---|---|---|
| Sor 17: | Sor 17: | ||
| A kommunikáció menete: | A kommunikáció menete: | ||
| - | Kliens kapcsolatot nyit a szerverhez | + | - Kliens kapcsolatot nyit a szerverhez |
| - | + | | |
| - | Kliens HTTP kérést küld | + | |
| - | + | | |
| - | Szerver HTTP választ küld | + | |
| - | + | ||
| - | Szerver lezárja a kapcsolatot (HTTP 0.9, HTTP 1.0) vagy nyitva marad ha szükséges (HTTP 1.1, HTTP 2) | + | |
| ===== HTTP protokol verziók ===== | ===== HTTP protokol verziók ===== | ||
| Sor 34: | Sor 31: | ||
| Jellemzői: | Jellemzői: | ||
| - | Rendkívül egyszerű | + | * Rendkívül egyszerű |
| - | + | | |
| - | Csak egyetlen metódus létezett: GET | + | |
| - | + | | |
| - | Nem léteztek HTTP headerek | + | |
| - | + | ||
| - | Nem volt státuszkód | + | |
| - | + | ||
| - | Nem volt verziószám a kérésben | + | |
| - | A válasz kizárólag HTML tartalom | + | A válasz kizárólag HTML tartalom |
| === Kérés === | === Kérés === | ||
| Sor 63: | Sor 56: | ||
| </ | </ | ||
| - | Nincs: | + | A válaszban nincs: |
| - | státuszsor | + | * állapot sor |
| - | header | + | * fejléc |
| - | Content-Type | + | |
| - | Content-Length | + | |
| === Korlátok === | === Korlátok === | ||
| - | Nem támogatta a képeket, CSS-t, külön erőforrásokat | + | * Nem támogatta a képeket, CSS-t, külön erőforrásokat |
| - | Nem volt hibakezelési mechanizmus | + | |
| - | Nem alkalmas komplex webalkalmazásokhoz | + | |
| === Összegzés === | === Összegzés === | ||
| - | A HTTP/0.9 egy rendkívül egyszerű, csak GET-et támogató, | + | A HTTP/0.9 egy rendkívül egyszerű, csak GET-et támogató, |
| ==== HTTP/1.0 (1996) ==== | ==== HTTP/1.0 (1996) ==== | ||
| Sor 84: | Sor 77: | ||
| === Jellemzők: === | === Jellemzők: === | ||
| - | Minden kérés külön TCP kapcsolat | + | * Minden kérés külön TCP kapcsolat |
| - | Nincs alapértelmezett persistent connection | + | |
| - | Egyszerű szöveges protokoll | + | |
| - | Nincs Host header | + | |
| === Problémák: | === Problémák: | ||
| - | Sok TCP handshake | + | * Sok TCP handshake |
| - | Magas latency | + | * Hosszú késleltetés |
| - | Nem hatékony párhuzamos erőforrás-letöltés | + | |
| Példa kommunikáció: | Példa kommunikáció: | ||
| Sor 184: | Sor 177: | ||
| Probléma: | Probléma: | ||
| - | Head-of-line | + | HOL (Head-of-line) blokkolás (több kérés esetén). Mivel a kérések sorrendjében válaszol a szerver, ezért egy lassú feldolgozási művelet blokkolja a többi kérés kiszolgálását. |
| - | ===== HTTP/2 (2015) | + | ==== HTTP/2 (2015) ==== |
| - | Alapja: SPDY protokoll | + | Alapja: |
| Fő jellemzők: | Fő jellemzők: | ||
| Sor 275: | Sor 268: | ||
| </ | </ | ||
| - | ===== HTTP/3 (2022) ===== | + | Több tartalom lekérése: |
| - | Alapja: QUIC (UDP felett) | + | < |
| + | $ curl --http2 -s -o /dev/null https:// | ||
| + | </ | ||
| - | Jellemzők: | + | ==== HTTP/3 (2022) ==== |
| - | TCP helyett | + | Alapja: A QUIC (Quick |
| - | TLS 1.3 integrált | + | A QUIC célja a TCP + TLS + HTTP/2 kombináció leváltása egy egyetlen, hatékonyabb protokollal, |
| - | Nincs TCP head-of-line blocking | + | Jellemzők: |
| - | Gyorsabb kapcsolatfelépítés | + | * TCP helyett UDP |
| + | * TLS 1.3 integrált | ||
| + | * Nincs TCP head-of-line blokkolódás | ||
| + | * Gyorsabb kapcsolatfelépítés 0-RTT (Round-Trip Time) | ||
| + | * Connection ID-t használ a TCP IP + port azonosítás helyett | ||
| Előny: | Előny: | ||
| - | Jelentősen alacsonyabb | + | * Jelentősen alacsonyabb |
| - | + | | |
| - | Mobil hálózatokon stabilabb | + | |
| ===== HTTP verziók összehasonlítása ===== | ===== HTTP verziók összehasonlítása ===== | ||
| Sor 303: | Sor 301: | ||
| | HTTP/3 | QUIC (UDP) | Bináris | Igen | Nem | | | HTTP/3 | QUIC (UDP) | Bináris | Igen | Nem | | ||
| - | ===== Telnet-es | + | ===== HTTP kérés metódusok |
| - | Kapcsolódás: | + | === HTTP metódusok összefoglaló táblázat === |
| - | < | + | A metódus biztonságos (safe), ha nem változtatja meg a szerver állapotát. Ilyen metódusok |
| - | Kérés kézi begépelése: | + | Egy metódus idempotens, ha ugyanazt a kérést többször elküldve a szerver állapota az első végrehajtás után már nem változik tovább. |
| - | < | + | ^ Metódus ^ Safe ^ Idempotens ^ Van body? ^ Tipikus használat ^ |
| + | | GET | Igen | Igen | Nem | Erőforrás lekérdezése | | ||
| + | | HEAD | Igen | Igen | Nem | Csak header lekérdezése | | ||
| + | | POST | Nem | Nem | Igen | Adatküldés, | ||
| + | | PUT | Nem | Igen | Igen | Erőforrás létrehozása/felülírása | | ||
| + | | DELETE | Nem | Igen | Nem | Erőforrás törlése | | ||
| + | | OPTIONS | Igen | Igen | Nem | Támogatott metódusok lekérdezése | | ||
| + | | PATCH | Nem | Nem | Igen | Részleges módosítás | | ||
| + | | TRACE | Igen | Igen | Nem | Diagnosztika | | ||
| - | (Fontos: az üres sor zárja a header részt.) | + | Példák: |
| - | ===== Telnet-es HTTP/1.1 példa ===== | + | Kapcsolódás minden esetben: |
| + | < | ||
| + | telnet server 80 | ||
| + | </code> | ||
| - | < | + | Fontos: |
| - | Megfigyelhető: | + | * HTTP/1.1 esetén kötelező a '' |
| + | * A header részt üres sor zárja le | ||
| + | * Body esetén kötelező a '' | ||
| - | Kötelező Host header | + | === GET === |
| - | Válasz státuszkód | + | < |
| + | GET / HTTP/1.1 | ||
| + | Host: server | ||
| + | Connection: close | ||
| + | </ | ||
| - | Header mezők | + | === HEAD === |
| - | Üres sor | + | < |
| + | HEAD / HTTP/1.1 | ||
| + | Host: server | ||
| + | Connection: close | ||
| + | </ | ||
| - | Body | + | === POST === |
| - | ===== HTTP státuszkódok ===== | + | < |
| + | POST / | ||
| + | Host: server | ||
| + | Content-Type: | ||
| + | Content-Length: | ||
| + | Connection: close | ||
| - | ^ Tartomány ^ Jelentés ^ | + | username=test& |
| - | | 1xx | Információ | | + | </ |
| - | | 2xx | Siker | | + | |
| - | | 3xx | Átirányítás | | + | |
| - | | 4xx | Kliens hiba | | + | |
| - | | 5xx | Szerver hiba | | + | |
| - | Példák: | + | === PUT === |
| - | 200 OK | + | < |
| + | PUT /file.txt HTTP/1.1 | ||
| + | Host: server | ||
| + | Content-Type: | ||
| + | Content-Length: | ||
| + | Connection: close | ||
| - | 301 Moved Permanently | + | Hello World |
| + | </ | ||
| - | 400 Bad Request | + | === DELETE === |
| - | 404 Not Found | + | < |
| + | DELETE /file.txt HTTP/1.1 | ||
| + | Host: server | ||
| + | Connection: close | ||
| + | </ | ||
| - | 500 Internal Server Error | + | === OPTIONS === |
| - | ===== HTTPS ===== | + | < |
| + | OPTIONS / HTTP/1.1 | ||
| + | Host: server | ||
| + | Connection: close | ||
| + | </ | ||
| - | A HTTPS nem külön protokoll, hanem: | + | Ez utóbbi kérésre a válasz: |
| - | HTTP + TLS titkosítás | + | < |
| + | ... | ||
| + | Allow: GET, POST, HEAD | ||
| + | ... | ||
| + | </ | ||
| - | Alapértelmezett port: | + | === PATCH === |
| - | 80 → HTTP | + | < |
| + | Host: server | ||
| + | Content-Type: | ||
| + | Content-Length: | ||
| + | Connection: close | ||
| - | 443 → HTTPS | + | {" |
| + | </ | ||
| - | Telnet helyett HTTPS teszteléshez: | + | === TRACE === |
| - | < | + | < |
| + | Host: server | ||
| + | Connection: close | ||
| + | </ | ||
| - | ===== Összegzés ===== | + | Fontos a sorrend! |
| - | HTTP/1.x: egyszerű, szöveges, | + | * A metódus az első szó a kérésben |
| + | * A státuszkód a válasz első sorában jelenik meg | ||
| + | * A header és a body között üres sor található | ||
| + | * A kapcsolat lezárását a '' | ||
| - | HTTP/2: bináris, multiplexelt, | ||
| - | HTTP/3: QUIC-alapú, modern, alacsony latency | + | ===== HTTP válasz (állapot) kódok ===== |
| + | |||
| + | ^ Tartomány ^ Jelentés ^ | ||
| + | | 1xx | Információ | | ||
| + | | 2xx | Siker | | ||
| + | | 3xx | Átirányítás | | ||
| + | | 4xx | Kliens hiba | | ||
| + | | 5xx | Szerver hiba | | ||
| + | |||
| + | ^ Kód ^ Megnevezés ^ Jelentés ^ | ||
| + | | 100 | Continue | A kliens folytathatja a kérést | | ||
| + | | 101 | Switching Protocols | Protokollváltás (pl. WebSocket) | | ||
| + | | 102 | Processing | A kérés feldolgozás alatt | | ||
| + | | 200 | OK | Sikeres kérés | | ||
| + | | 201 | Created | Erőforrás létrejött | | ||
| + | | 202 | Accepted | Feldolgozás elfogadva | | ||
| + | | 203 | Non-Authoritative Information | Nem hiteles forrásból származó válasz | | ||
| + | | 204 | No Content | Sikeres, de nincs válasz body | | ||
| + | | 205 | Reset Content | Kliens nézetének visszaállítása | | ||
| + | | 206 | Partial Content | Részleges tartalom (Range kérés) | | ||
| + | | 300 | Multiple Choices | Több válaszlehetőség | | ||
| + | | 301 | Moved Permanently | Végleges átirányítás | | ||
| + | | 302 | Found | Ideiglenes átirányítás | | ||
| + | | 303 | See Other | Más erőforrás GET-tel | | ||
| + | | 304 | Not Modified | Nem változott (cache) | | ||
| + | | 307 | Temporary Redirect | Ideiglenes, metódust megőrzi | | ||
| + | | 308 | Permanent Redirect | Végleges, metódust megőrzi | | ||
| + | | 400 | Bad Request | Hibás kérés | | ||
| + | | 401 | Unauthorized | Hitelesítés szükséges | | ||
| + | | 402 | Payment Required | Fizetés szükséges (fenntartott) | | ||
| + | | 403 | Forbidden | Tiltott hozzáférés | | ||
| + | | 404 | Not Found | Nem található | | ||
| + | | 405 | Method Not Allowed | Metódus nem engedélyezett | | ||
| + | | 406 | Not Acceptable | Nem elfogadható formátum | | ||
| + | | 407 | Proxy Authentication Required | Proxy hitelesítés szükséges | | ||
| + | | 408 | Request Timeout | Kérés időtúllépés | | ||
| + | | 409 | Conflict | Ütközés | | ||
| + | | 410 | Gone | Végleg eltűnt | | ||
| + | | 411 | Length Required | Content-Length hiányzik | | ||
| + | | 412 | Precondition Failed | Előfeltétel nem teljesült | | ||
| + | | 413 | Payload Too Large | Túl nagy kérés | | ||
| + | | 414 | URI Too Long | Túl hosszú URI | | ||
| + | | 415 | Unsupported Media Type | Nem támogatott médiatípus | | ||
| + | | 416 | Range Not Satisfiable | Érvénytelen tartomány | | ||
| + | | 417 | Expectation Failed | Expect header hiba | | ||
| + | | 418 | I'm a teapot | RFC humoros státuszkód | | ||
| + | | 429 | Too Many Requests | Túl sok kérés (rate limit) | | ||
| + | | 500 | Internal Server Error | Belső szerverhiba | | ||
| + | | 501 | Not Implemented | Nem implementált | | ||
| + | | 502 | Bad Gateway | Hibás gateway válasz | | ||
| + | | 503 | Service Unavailable | Szolgáltatás nem elérhető | | ||
| + | | 504 | Gateway Timeout | Gateway időtúllépés | | ||
| + | | 505 | HTTP Version Not Supported | HTTP verzió nem támogatott | | ||
| - | Telnet kiváló eszköz a HTTP/1.x működés szemléltetésére | ||
webszerver.1771128820.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan
