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:01] – [HTTP/1.1 (1997)] 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 179: | Sor 172: | ||
| Előny: | Előny: | ||
| - | Kevesebb TCP kapcsolat | + | * Kevesebb TCP kapcsolat |
| - | + | | |
| - | Jobb teljesítmény | + | |
| 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: | ||
| - | Bináris protokoll | + | * Bináris protokoll |
| - | + | | |
| - | Multiplexing (több stream egy TCP kapcsolaton) | + | |
| - | + | | |
| - | Header compression (HPACK) | + | |
| - | + | ||
| - | Server Push | + | |
| Előny: | Előny: | ||
| - | Megszűnik az alkalmazás-szintű head-of-line blocking | + | * Megszűnik az alkalmazás-szintű head-of-line blocking |
| - | + | | |
| - | Jelentősen jobb teljesítmény | + | |
| Hátrány: | Hátrány: | ||
| - | TCP head-of-line blocking továbbra is fennáll csomagszinten | + | * TCP head-of-line blocking továbbra is fennáll csomagszinten |
| - | ===== HTTP/3 (2022) ===== | + | Példa: |
| - | Alapja: QUIC (UDP felett) | + | < |
| + | $ curl -v -s -o /dev/null --http2 https:// | ||
| + | * Host server:443 was resolved. | ||
| + | * IPv6: (none) | ||
| + | * IPv4: N.N.N.N | ||
| + | * | ||
| + | * ALPN: curl offers h2, | ||
| + | } [5 bytes data] | ||
| + | * TLSv1.3 (OUT), TLS handshake, Client hello (1): | ||
| + | } [1565 bytes data] | ||
| + | * CAfile: / | ||
| + | * CApath: none | ||
| + | { [5 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Server hello (2): | ||
| + | { [122 bytes data] | ||
| + | * TLSv1.3 (IN), TLS change cipher, Change cipher spec (1): | ||
| + | { [1 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): | ||
| + | { [25 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Certificate (11): | ||
| + | { [2577 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, CERT verify (15): | ||
| + | { [264 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Finished (20): | ||
| + | { [52 bytes data] | ||
| + | * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): | ||
| + | } [1 bytes data] | ||
| + | * TLSv1.3 (OUT), TLS handshake, Finished (20): | ||
| + | } [52 bytes data] | ||
| + | * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / x25519 / RSASSA-PSS | ||
| + | * ALPN: server accepted http/1.1 | ||
| + | * Server certificate: | ||
| + | * subject: CN=server | ||
| + | * start date: Jan 20 03:10:26 2026 GMT | ||
| + | * expire date: Apr 20 03:10:25 2026 GMT | ||
| + | * subjectAltName: | ||
| + | * issuer: C=US; O=Let' | ||
| + | * SSL certificate verify ok. | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * Connected to r-l.hu (N.N.N.N) port 443 | ||
| + | * using HTTP/1.x | ||
| + | } [5 bytes data] | ||
| + | > GET / HTTP/1.1 | ||
| + | > Host: r-l.hu | ||
| + | > User-Agent: curl/ | ||
| + | > Accept: */* | ||
| + | > | ||
| + | * Request completely sent off | ||
| + | { [5 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): | ||
| + | { [281 bytes data] | ||
| + | * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): | ||
| + | { [281 bytes data] | ||
| + | < HTTP/1.1 200 OK | ||
| + | < Date: Sun, 15 Feb 2026 04:10:24 GMT | ||
| + | < Server: Apache/ | ||
| + | < Last-Modified: | ||
| + | < ETag: " | ||
| + | < Accept-Ranges: | ||
| + | < Content-Length: | ||
| + | < Content-Type: | ||
| + | < | ||
| + | * Connection #0 to host r-l.hu left intact | ||
| + | </ | ||
| - | Jellemzők: | + | Több tartalom lekérése: |
| - | TCP helyett UDP | + | < |
| + | $ curl --http2 -s -o /dev/null https:// | ||
| + | </ | ||
| - | TLS 1.3 integrált | + | ==== HTTP/3 (2022) ==== |
| - | Nincs TCP head-of-line blocking | + | Alapja: A QUIC (Quick UDP Internet Connections) egy modern, titkosított, |
| - | Gyorsabb kapcsolatfelépítés (0-RTT) | + | A QUIC célja a TCP + TLS + HTTP/2 kombináció leváltása egy egyetlen, hatékonyabb protokollal, |
| - | Előny: | + | Jellemzők: |
| - | Jelentősen alacsonyabb latency | + | * 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 | ||
| - | Mobil hálózatokon stabilabb | + | Előny: |
| + | |||
| + | * Jelentősen alacsonyabb késleltetés | ||
| + | * Mobil hálózatokon stabilabb | ||
| ===== HTTP verziók összehasonlítása ===== | ===== HTTP verziók összehasonlítása ===== | ||
| Sor 239: | 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.1771128099.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan
