Felhasználói eszközök

Eszközök a webhelyen


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.

Összehasonlító nézet linkje

Következő változat
Előző változat
webszerver [2026/02/15 03:06] – létrehozva riba.zoltanwebszerver [2026/02/16 06:05] (aktuális) riba.zoltan
Sor 8: Sor 8:
 Alapvető jellemzők: Alapvető jellemzők:
  
-* Állapotmentes (stateless) +  * Állapotmentes (stateless) 
-* Kérés-válasz alapú (request–response) +  * Kérés-válasz alapú (request–response) 
-* TCP (HTTP/1.x, HTTP/2) vagy QUIC/UDP (HTTP/3) felett működik +  * TCP (HTTP/1.x, HTTP/2) vagy QUIC/UDP (HTTP/3) felett működik 
-* Szöveges (HTTP/1.x) illetve bináris (HTTP/2, HTTP/3)+  * Szöveges (HTTP/1.x) illetve bináris (HTTP/2, HTTP/3)
  
 ===== HTTP működési modell ===== ===== HTTP működési modell =====
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)
  
-Kliens HTTP kérést küld+===== HTTP protokol verziók =====
  
-Szerver HTTP választ küld+==== HTTP/0.9 (1991) ====
  
-Szerver lezárja a kapcsolatot (HTTP <= 1.0) vagy nyitva marad ha szükséges (HTTP >= 1.1)+HTTP/0.9 volt a legelső, kísérleti változata a protokollnak, amelyet 
 +Tim Berners-Lee fejlesztett ki a CERN-ben a World Wide Web kezdeti időszakában.
  
-Egyszerű HTTP 1.0 kérés (https://datatracker.ietf.org/doc/html/rfc1945):+Jellemzői:
  
-<code>+  * Rendkívül egyszerű 
 +  * Csak egyetlen metódus létezett: GET 
 +  * Nem léteztek HTTP fejlécek 
 +  * Nem volt státuszkód 
 +  * Nem volt verziószám a kérésben
  
 +A válasz kizárólag HTML tartalom lehet.
 +
 +=== Kérés ===
 +
 +<code>
 +# telnet szervernév 80
 +GET /index.html
 </code> </code>
  
-Egyszerű kérés felépítése:+=== Válasz === 
 + 
 +A szerver egyszerűen visszaküldi a HTML dokumentumot:
  
 <code> <code>
-# telnet szerver 80 +<html> 
-GET /index.html HTTP/1.1 +<body>Hello World</body> 
-Host: example.com +</html>
-User-Agent: curl/8.0 Accept: */*+
 </code> </code>
  
-Szerver válasza:+A válaszban nincs:
  
-<code> HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1234 <html>...</html> </code>+  * állapot sor 
 +  * fejléc mező 
 +    * Content-Type 
 +    * Content-Length
  
-===== HTTP/1.0 (1996) =====+=== Korlátok ===
  
-Jellemzők:+  * Nem támogatta a képeket, CSS-t, külön erőforrásokat 
 +  * Nem volt hibakezelési mechanizmus 
 +  * Nem alkalmas komplex webalkalmazásokhoz
  
-Minden kérés külön TCP kapcsolat+=== Összegzés ===
  
-Nincs alapértelmezett persistent connection+A HTTP/0.9 egy rendkívül egyszerű, csak GET-et támogató, fejléc nélküli protokoll volt, amely kizárólag HTML dokumentum visszaküldésére szolgált. Ez tekinthető a modern webkommunikáció kiindulópontjának.
  
-Egyszerű szöveges protokoll+==== HTTP/1.0 (1996) ====
  
-Nincs Host header kötelezően+=== Jellemzők: ===
  
-Problémák:+  * Minden kérés külön TCP kapcsolat 
 +  * Nincs alapértelmezett persistent connection 
 +  * Egyszerű szöveges protokoll 
 +  * Nincs kötelező Host fejléc
  
-Sok TCP handshake+=== Problémák: ===
  
-Magas latency+  * Sok TCP handshake 
 +  * Hosszú késleltetés 
 +  * Nem hatékony párhuzamos erőforrás-letöltés
  
-Nem hatékony párhuzamos erőforrás-letöltés+Példa kommunikáció:
  
-===== HTTP/1.1 (1997) =====+Egyszerű kérés felépítése:
  
-Fejlesztések:+<code> 
 +$ telnet server 80 
 +Trying N.N.N.N... 
 +Connected to szerver. 
 +Escape character is '^]'
 +GET / HTTP/1.0
  
-Persistent connection (Keep-Alive)+HTTP/1.1 200 OK 
 +Date: Sun, 15 Feb 2026 03:32:17 GMT 
 +Server: Apache/2 
 +Last-Modified: Tue, 27 Feb 2024 06:32:03 GMT 
 +ETag: "0-612572f2e4ba2" 
 +Accept-Ranges: bytes 
 +Content-Length:
 +Connection: close 
 +Content-Type: text/html; charset=UTF-8
  
-Host header kötelező+Connection closed by foreign host. 
 +</code>
  
-Chunked transfer encoding+==== HTTP/1.1 (1997) ====
  
-Pipeline támogatás+=== Fejlesztések: ===
  
-Példa persistent kapcsolatra:+  * Persistent connection (Keep-Alive) 
 +  * Host header kötelező 
 +  * Chunked transfer encoding 
 +  * Pipeline támogatás
  
-<code> Connectionkeep-alive </code>+Példa a hagyományos kapcsolatra:
  
-Előny:+<code> 
 +$ telnet server 80 
 +Trying N.N.N.N... 
 +Connected to server. 
 +Escape character is '^]'
 +GET / HTTP/1.1 
 +Hostserver
  
-Kevesebb TCP kapcsolat+HTTP/1.1 403 Forbidden 
 +Date: Sun, 15 Feb 2026 03:47:36 GMT 
 +Server: Apache/2.4.62 (AlmaLinux) 
 +Last-Modified: Mon, 24 Mar 2025 16:15:24 GMT 
 +ETag: "1680-63118e9567f00" 
 +Accept-Ranges: bytes 
 +Content-Length: 130 
 +Content-Type: text/html; charset=UTF-8
  
-Jobb teljesítmény+<!DOCTYPE html> 
 +<html> 
 +<body> 
 +Hello world! 
 +</body> 
 +</html> 
 +Connection closed by foreign host. 
 +</code>
  
-Probléma:+Példa persistent kapcsolatra:
  
-Head-of-line blocking (pipeline esetén)+<code> 
 +$ telnet server 80 
 +Trying N.N.N.N... 
 +Connected to server. 
 +Escape character is '^]'
 +GET / HTTP/1.1 
 +Host: xxx 
 +Connection: keep-alive
  
-===== HTTP/2 (2015) =====+TARTALOM 
 +GET / HTTP/1.1 
 +Host: xxx 
 +Connection: close
  
-Alapja: SPDY protokoll+TARTALOM
  
-Fő jellemzők:+Connection closed by foreign host. 
 +</code>
  
-Bináris protokoll+Előny:
  
-Multiplexing (több stream egy TCP kapcsolaton)+  * Kevesebb TCP kapcsolat 
 +  * Jobb teljesítmény
  
-Header compression (HPACK)+Probléma:
  
-Server Push+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.
  
-Előny:+==== HTTP/2 (2015) ====
  
-Megszűnik az alkalmazás-szintű head-of-line blocking+Alapja: a Google 2009-ben fejlesztett SPDY (kiejtve: “speedy”) kísérleti alkalmazásrétegű protokoll a HTTP/1.1 teljesítmény korlátainak megszüntetésére.
  
-Jelentősen jobb teljesítmény+Fő jellemzők: 
 + 
 +  * Bináris protokoll 
 +  * Multiplexing (több stream egy TCP kapcsolaton) 
 +  * Header compression (HPACK) 
 +  * Server Push 
 + 
 +Előny: 
 + 
 +  * 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:
  
-AlapjaQUIC (UDP felett)+<code> 
 +$ curl -v -s -o /dev/null --http2 https://server 
 +* Host server:443 was resolved. 
 +* IPv6: (none) 
 +* IPv4: N.N.N.N 
 +*   Trying N.N.N.N:443... 
 +* ALPN: curl offers h2,http/1.1 
 +} [5 bytes data] 
 +* TLSv1.3 (OUT), TLS handshake, Client hello (1): 
 +} [1565 bytes data] 
 +*  CAfile: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem 
 +*  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: host "server" matched cert's "server" 
 +*  issuer: C=US; O=Let's Encrypt; CN=R12 
 +*  SSL certificate verify ok. 
 +*   Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption 
 +*   Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption 
 +*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption 
 +* 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/8.15.0 
 +> 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/2.4.62 (AlmaLinux) 
 +< Last-Modified: Sun, 15 Feb 2026 04:09:05 GMT 
 +< ETag: "0-64ad4ffd21f44" 
 +< Accept-Ranges: bytes 
 +< Content-Length:
 +< Content-Type: text/html; charset=UTF-8 
 +<  
 +* Connection #0 to host r-l.hu left intact 
 +</code>
  
-Jellemzők:+Több tartalom lekérése:
  
-TCP helyett UDP+<code> 
 +$ curl --http2 -s -o /dev/null https://server/index.html https://server/style.css https://server/app.js 
 +</code>
  
-TLS 1.integrált+==== HTTP/(2022) ====
  
-Nincs TCP head-of-line blocking+Alapja: A QUIC (Quick UDP Internet Connections) egy modern, titkosított, multiplexelt transzport protokoll, amely UDP felett működik, és amelyet eredetileg a Google fejlesztett ki. IETF szabvány (RFC 9000).
  
-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, amely csökkenti a késleltetést és javítja a kapcsolat stabilitását.
  
-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 
 + 
 +Előny:
  
-Mobil hálózatokon stabilabb+  * Jelentősen alacsonyabb késleltetés 
 +  * Mobil hálózatokon stabilabb
  
 ===== HTTP verziók összehasonlítása ===== ===== HTTP verziók összehasonlítása =====
Sor 142: Sor 301:
 | HTTP/3 | QUIC (UDP) | Bináris | Igen | Nem | | HTTP/3 | QUIC (UDP) | Bináris | Igen | Nem |
  
-===== Telnet-es HTTP példa (HTTP/1.0) =====+===== HTTP kérés metódusok =====
  
-Kapcsolódás:+=== HTTP metódusok összefoglaló táblázat ===
  
-<code> telnet example.com 80 </code>+A metódus biztonságos (safe), ha nem változtatja meg a szerver állapotátIlyen 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.
  
-<code> GET / HTTP/1.0 </code>+^ 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, űrlap, API | 
 +| 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 |
  
-(Fontosaz üres sor zárja a header részt.)+Példák:
  
-===== Telnet-es HTTP/1.1 példa =====+Kapcsolódás minden esetben: 
 +<code> 
 +telnet server 80 
 +</code>
  
-<code> telnet example.com 80 </code> <code> GET / HTTP/1.1 Hostexample.com Connection: close </code>+Fontos:
  
-Megfigyelhető:+  * HTTP/1.1 esetén kötelező a ''Host'' header 
 +  * A header részt üres sor zárja le 
 +  * Body esetén kötelező a ''Content-Length''
  
-Kötelező Host header+=== GET ===
  
-Válasz státuszkód+<code> 
 +GET / HTTP/1.1 
 +Host: server 
 +Connection: close 
 +</code>
  
-Header mezők+=== HEAD ===
  
-Üres sor+<code> 
 +HEAD / HTTP/1.1 
 +Host: server 
 +Connection: close 
 +</code>
  
-Body+=== POST ===
  
-===== HTTP státuszkódok =====+<code> 
 +POST /login HTTP/1.1 
 +Host: server 
 +Content-Type: application/x-www-form-urlencoded 
 +Content-Length: 27 
 +Connection: close
  
-^ Tartomány ^ Jelentés ^ +username=test&password=123 
-| 1xx | Információ | +</code>
-| 2xx | Siker | +
-| 3xx | Átirányítás | +
-| 4xx | Kliens hiba | +
-| 5xx | Szerver hiba |+
  
-Példák:+=== PUT ===
  
-200 OK+<code> 
 +PUT /file.txt HTTP/1.1 
 +Host: server 
 +Content-Type: text/plain 
 +Content-Length: 11 
 +Connection: close
  
-301 Moved Permanently+Hello World 
 +</code>
  
-400 Bad Request+=== DELETE ===
  
-404 Not Found+<code> 
 +DELETE /file.txt HTTP/1.1 
 +Host: server 
 +Connection: close 
 +</code>
  
-500 Internal Server Error+=== OPTIONS ===
  
-===== HTTPS =====+<code> 
 +OPTIONS / HTTP/1.1 
 +Host: server 
 +Connection: close 
 +</code>
  
-A HTTPS nem külön protokoll, hanem:+Ez utóbbi kérésre a válasz:
  
-HTTP + TLS titkosítás+<code> 
 +... 
 +Allow: GET, POST, HEAD 
 +... 
 +</code>
  
-Alapértelmezett port:+=== PATCH ===
  
-80 → HTTP+<code>PATCH /user/HTTP/1.1 
 +Host: server 
 +Content-Type: application/json 
 +Content-Length: 18 
 +Connection: close
  
-443 → HTTPS+{"name":"ujnev"
 +</code>
  
-Telnet helyett HTTPS teszteléshez:+=== TRACE ===
  
-<code> openssl s_client -connect example.com:443 </code>+<code>TRACE / HTTP/1.
 +Hostserver 
 +Connection: close 
 +</code>
  
-===== Összegzés =====+Fontos a sorrend!
  
-HTTP/1.xegyszerű, szöveges, TCP-alapú+  * 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 ''Connectionclose'' header vagy a szerver TCP bontása jelzi
  
-HTTP/2: bináris, multiplexelt, gyorsabb 
  
-HTTP/3: QUIC-alapúmodernalacsony 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 | Sikeresde 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 | Ideiglenesmetó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.1771124773.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan