< Web

HTTP

Szerző: Sallai András

Copyright © Sallai András, 2015, 2021

Licenc: GNU Free Documentation License 1.3

Web: https://szit.hu

Bevezetés

A HTTP a HyperText Transfer Protocol szavakból alkotott betűszó. Hipermédiás adatok átvitelének protokollja.

A World Wide Web Consortium és az Internet Engineering Task Force együtt fejlesztik.

Három verzióját tartjuk számon, amelyből kettő lett szabvány, vagyis kettő rendelkezik valamilyen RFC szabvánnyal.

Az utolsó 1.1 verzióhoz két RFC is tartozik, mivel egyszer írtak hozzá egy kiegészítést. A 2.0 verziót a httpbis munkacsoport fejleszti a IETF-en belül. Alapul a SPDY és a HTTP Speed+Mobility áll rendelkezésre.

Az új HTTP2.0 szabvány a SPDY-ra épül, egy részét egy az egyben átvette. 2015 az HTTP2.0-s szabvány már túl is lép a SPDY keretein. Ezért a Chorome fejlesztői, SPDY nevet dobják és továbbiakban a HTTP2.0 specifikációt valósítják meg a Chrome-ban.

A HTTP kliens-szerver alapon működik, TCP felett, attól persze függetlenül.

Erőforrások

Amikor beírom a böngészőbe, hogy szit.hu a böngésző megpróbálja értelmezni. A böngészők általában arra következtetnek ebből, hogy http protokollon keresztül szeretnék elérni egy weboldalt, vagyis lefordítja http://szit.hu kérésre. Megjegyzem néhány böngészőgyártónál vannak olyan törekvések, hogy ha nem írjuk be a protokollt, akkor minősüljön keresésnek az alapértelmezett keresőszolgáltatással.

Erőforrás-mutató

Amikor leírom http://szit.hu, ez egy URL. Angolosan uniform resource locator, egységes erőforrás-mutató. Tehát tudhatjuk, hogy valamilyen webszerveren lévő erőforrásról van szó. Az erőforrások lehetnek szövegek, képek, videók és egyéb fájlok.

Az Interneten minden egy URL segítségével érhető el.

Ha azt írom http://freepascal.org szintén elérhető számomra egy webhely. Ha azt írom http://lazarus.freepascal.org egy másik webhelyhez jutok. A két weboldal lehet egymástól teljesen független.

De ha azt írom http://szit.hu/swbin/, akkor ugyanazon webhely egy újabb oldalát érem el.

Vegyük szemügyre a http://szit.hu/swbin/ URL-t. Három részre osztható:

http://

szit.hu

/swbin/

A http után a :// csak szeparátor. Maga a http egy protokoll. Megmondjuk a böngészőnek, hogy http protokollt használjon. A böngészők általában más protokollt is ismernek. Ilyenek a https, vagy az ftp.

A szit.hu a tartománynév.

A /swbin/ egy útvonal a webhelyen belül.

Port

Az URL-ben megadható portszám is: http://szit.hu:80/swbin/ Megadható, hogy milyen porton várja a webszerver a http kéréseket. Az alapértelmezett port http esetén 80. Néhány böngésző ezt ki is törli. Mivel 80 az alapértelmezett port, ezért nem szoktuk beírni. A webmesterek néha más portot is használnak tesztelési, hibakövetési céllal.

Lekérő karaktersorozatok

Figyeljük meg a következő URL-t: http://szit.hu/doku.php?id=oktatas A kérdőjel után egy kérés van, angolosan query. A lekérő karaktersorozatok két név-érték párokból állnak, amelyet (&) jel karakterrel tagolunk:

név1=érték1&név2=érték2&névn=értékn

Töredékek

Vegyük a következő URL:

http://szit.hu/doku.php?id=oktatas:grafika:svg:alapok#svg_weblapon

A http://szit.hu/doku.php?id=oktatas:grafika:svg:alapok weblap egy hosszabb weboldal. A végén a #svg_weblaon az oldal egy részére (egy töredékére) mutat. Ha van egy több képernyőoldalas weblapunk a böngésző a lap tetejét fogja nekünk megnyitni, ha nem jelezzük a töredékkel, hogy melyik részt szeretnénk látni.

Ez természetesen csak akkor lehetséges, ha webmester megjelölte az adott weboldal, adott részét.

URL általánosan

URI = "http:" "//" gép [ ":" port ] [ absz_útvonal [ "?" kérés ]]

Média típusok

Az Interneten több ezer különböző adattípus érhető el. A sok különböző típus átvitelére a MIME típusokat használunk. A MIME a Multipurpose Internet Mail Extendsions szavakból alkotott rövidítés. Eredetileg elektronikus levelezéshez találták ki, a különböző levelező rendszerek átjárhatósága érdekében. A MIME olyan sikeres lett, hogy adaptálták a HTTP protokollra is.

A webszerver minden HTTP objektumhoz egy MIME típust határoz meg. A böngésző a MIME típus alapján tudja eldönteni, hogyan kell megjeleníteni az érkező adatokat. Például le kell játszani videóként, vagy csak meg kell jeleníteni képként, vagy HTML oldalként kell értelmezni, vagy be kell hozzá tölteni egy kiterjesztést (plugint).

kliens <-- Content-type: image/jpeg Content-length: 34500 --- szerver

A MIME típus egy elsődleges objektumtípusból és egy másodlagos típusból áll. A kettőt egymástól (/) karakterrel választjuk el.

Néhány MIME típus
Típus	Jelentés
text/plain	ASCII szöveg
text/html	HTML oldal
image/jpeg	JPEG kép
image/gif	GIF kép
image/png	PNG kép
application/x-7z-compressed	7-Zip fájl
application/pdf	PDF állomány
application/x-bittorrent	Torrent fájl (.torrent)
application/vnd.openxmlformats-officedocument.wordprocessingml.template	MS Word

Az IANA táblázat itt.

Üzenetek

A HTTP az Internet küldönce, a HTTP üzenetek csomagokban utaznak.

Az üzenetek folyama

A HTTP alkalmazások a üzeneteket blokkokra osztják. Ezek a blokkok metainformációkkal kezdődnek, amelyeket opcionálisan adatok követik. Ezek az üzenet folynak kliens és szerver között.

Az olyan szakszavak mint a inbound, outbound, upstream, downstream az üzenet folyásának irányát írják le. Az üzenetek inbound módon közlekednek a szerver fele, amikor a szerver válaszol outbound utaznak vissza.

Szokás még mondani, hogy a HTTP üzenetek lefolynak, azaz downstream, függetlenül attól, hogy kérés vagy válasz. Magát a küldőt nevezhetjük az alatta lévők upstream-jének.

Az üzenet szintaxisa

Az üzenetek kétfélék lehetnek. Kérés (request) és válasz (response).

A kérések mindig egy webszervernek szólnak. A webszerver mindig válaszol.

Egy kérés szintaktikailag így néz ki:

<metódus> <kérés URL> <verzió>
<fejrész>
<a törzs kezdete>

Egy válasz szintaktikailag így néz ki:

<verzió> <státusz> <indok>
<fejrészek>
<a törzs kezdete>

A HTTP alaptulajdonságai

állapotmentes - a kapcsolat állapota nincs tárolva - stateless

kapcsolatmentes - egy kérés után várjuk a választ de utána megszakad a kapcsolat - offline

médiafüggő - MIME típus használata

Kérés

GET /hello.htm HTTP/1.0 (A kliens küld egy kérést)
HTTP/1.1 200 OK (A szerver küld egy státuszsort)

Metódusok

A TRACE azért hasznos, mert a visszaküldött kérést ellenőrizni tudjuk, hogy a közbenső átjárók változtattak-e az elküldött adatokon.

Státuszkódok

A HTTP státuszkódjai öt kategóriába sorolhatók. A státuszkód segít megérteni a kliensoldali válaszokat.

100-199 Információs kódok

100	továbbfolytatom
101	protokollcsere

200-299 Sikert jelölő kódok

200	ok
201	kész
202	elfogadva
203	nem hiteles információ
204	üres tartalom
205	rejtett tartalom
206	részleges tartalom

300-399 Átirányítást jelölő kódok

300	több választási lehetőség
301	átmenetileg átmozgatva
302	megvan
303	lásd máshol
304	nem változott
305	használj proxyt
307	átmenetileg átirányítva

400-499 Klienshibákat jelölő kódok

400	rossz kérés
401	azonosítás, felhatalmazás hiánya
402	előfizetőknek
403	tiltott
404	a szerver elérhető, de kért tartalom nem elérhető; de lehet jövőben még elérhető lesz
405	a metódus nem engedélyezett
406	nem elfogadható
407	proxy azonosítás szükséges
408	időtúllépés
409	konfliktus
410	eltűnt, véglegesen megszűnt
411	hossz szükséges
412	előfeltétel nem teljesült
413	kérés túl nagy
414	az URL túl hosszú a kérésben
415	a média típusa nem támogatott
416	a keresett tartomány meghatározhatatlan
417	nem teljesített elvárás

500-599 Szerverhibákat jelölő kódok

500	hiba a szerveren belül
501	nincs megvalósítva
502	hibás átjáró
503	a szolgáltatás elérhetetlen
504	átjáró időtúllépés
505	a HTTP verzió nem támogatott

HTTP kapcsolatok

A HTTP kapcsolatok jellemzői TCP feletti kapcsolat, szerver kliens alapokon.

A TCP egy biztonságos csővezetéket biztosít a HTTP protokoll számára. A bájtok halmaza a TCP kapcsolaton keresztül megfelelő sorrendben megérkezik a másik oldalra.

A TCP folyamban az adatok több részre bontva utaznak IP csomagok formájában.

A HTTP titkosított variációja a HTTPS. A HTTP után az „S” betű, egy titkosító réteget jelent a HTTP és a TCP között.

Amikor a HTTP szeretne egy üzenet átvinni, az adatokból folyamot alkot, és megnyit egy TCP kapcsolatot. Az adatokat több részre osztjuk fel, majd átadjuk az IP verem számára. Az IP verem hozzáteszi a saját fejléc információit az egyes csomagokhoz. Egy IP csomag ezek után a következőket tartalmazza:

IP fejléc (rendszerint 20 bájt)

TCP fejléc (rendszerint 20 bájt)

Adatok rész (0 vagy több bájt)

Az IP fejléc tartalmazza a forrás és cél IP címet. A TCP fejléc tartalmazza a portszámokat, néhány TCP jelzőt és az integritást ellenőrző számokat.

TCP kapcsolatok
kapcsolat	forrás IP	forrásport	célcím	célport
A	210.190.5.45	1025	195.200.150.1	80
B	212.90.4.45	1027	195.200.15.1	80
C	195.160.80.25	3045	195.200.150.1	80
D	195.160.80.25	3046	95.111.112.5	80

Felhasznált források

Irodalom

David Gourley, Brian Totty, Marjorie Sayer, Sailu Reddy, Anshu Aggarwal

HTTP The Definitive Guide (O'REILLY)

Linkek

http://www.w3.org/Protocols/rfc2616/rfc2616.html (2015)

https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 (2023)

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview (2023)