Felhasználói eszközök

Eszközök a webhelyen


webszerver

Ez a dokumentum egy előző változata!


HTTP szolgáltatások

A HTTP alapjai

A HTTP (HyperText Transfer Protocol) egy alkalmazás réteg protokoll, amely kliens–szerver modellben működik. Elsősorban webes erőforrások (HTML, CSS, JS, képek, API válaszok stb.) továbbítására használják.

Alapvető jellemzők:

  • Állapotmentes (stateless)
  • Kérés-válasz alapú (request–response)
  • 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)

HTTP működési modell

A kommunikáció menete:

Kliens kapcsolatot nyit a szerverhez

Kliens HTTP kérést küld

Szerver HTTP választ küld

Szerver lezárja a kapcsolatot (HTTP ⇐ 1.0) vagy nyitva marad ha szükséges (HTTP >= 1.1)

Egyszerű HTTP 1.0 kérés (https://datatracker.ietf.org/doc/html/rfc1945):



Egyszerű kérés felépítése:

# telnet szerver 80
GET /index.html HTTP/1.1
Host: example.com
User-Agent: curl/8.0 Accept: */*

Szerver válasza:

 HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1234 <html>...</html> 

HTTP/0.9 (1991)

A 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.

Jellemzői:

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 volt

Kérés formátuma

 GET /index.html 

Fontos:

Nincs HTTP/1.0 vagy HTTP/1.1 jelölés

Nincs Host header

Üres sor sem szükséges

Válasz

A szerver egyszerűen visszaküldi a HTML dokumentumot:

 <html> <body>Hello World</body> </html> 

Nincs:

státuszsor

header mező

Content-Type

Content-Length

Korlátok

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

A HTTP/0.9 egy rendkívül egyszerű, csak GET-et támogató, header 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.

HTTP/1.0 (1996)

Jellemzők:

Minden kérés külön TCP kapcsolat

Nincs alapértelmezett persistent connection

Egyszerű szöveges protokoll

Nincs Host header kötelezően

Problémák:

Sok TCP handshake

Magas latency

Nem hatékony párhuzamos erőforrás-letöltés

HTTP/1.1 (1997)

Fejlesztések:

Persistent connection (Keep-Alive)

Host header kötelező

Chunked transfer encoding

Pipeline támogatás

Példa persistent kapcsolatra:

 Connection: keep-alive 

Előny:

Kevesebb TCP kapcsolat

Jobb teljesítmény

Probléma:

Head-of-line blocking (pipeline esetén)

HTTP/2 (2015)

Alapja: SPDY protokoll

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:

TCP head-of-line blocking továbbra is fennáll csomagszinten

HTTP/3 (2022)

Alapja: QUIC (UDP felett)

Jellemzők:

TCP helyett UDP

TLS 1.3 integrált

Nincs TCP head-of-line blocking

Gyorsabb kapcsolatfelépítés (0-RTT)

Előny:

Jelentősen alacsonyabb latency

Mobil hálózatokon stabilabb

HTTP verziók összehasonlítása

Verzió Szállítási réteg Formátum Multiplexing Head-of-line blocking
HTTP/1.0 TCP Szöveges Nem Igen
HTTP/1.1 TCP Szöveges Korlátozott (pipeline) Igen
HTTP/2 TCP Bináris Igen TCP szinten igen
HTTP/3 QUIC (UDP) Bináris Igen Nem

Telnet-es HTTP példa (HTTP/1.0)

Kapcsolódás:

 telnet example.com 80 

Kérés kézi begépelése:

 GET / HTTP/1.0 

(Fontos: az üres sor zárja a header részt.)

Telnet-es HTTP/1.1 példa

 telnet example.com 80 
 GET / HTTP/1.1 Host: example.com Connection: close 

Megfigyelhető:

Kötelező Host header

Válasz státuszkód

Header mezők

Üres sor

Body

HTTP státuszkódok

Tartomány Jelentés
1xx Információ
2xx Siker
3xx Átirányítás
4xx Kliens hiba
5xx Szerver hiba

Példák:

200 OK

301 Moved Permanently

400 Bad Request

404 Not Found

500 Internal Server Error

HTTPS

A HTTPS nem külön protokoll, hanem:

HTTP + TLS titkosítás

Alapértelmezett port:

80 → HTTP

443 → HTTPS

Telnet helyett HTTPS teszteléshez:

 openssl s_client -connect example.com:443 

Összegzés

HTTP/1.x: egyszerű, szöveges, TCP-alapú

HTTP/2: bináris, multiplexelt, gyorsabb

HTTP/3: QUIC-alapú, modern, alacsony latency

Telnet kiváló eszköz a HTTP/1.x működés szemléltetésére

webszerver.1771125791.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan