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.
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 https://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.
Amikor leírom https://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 https://szit.hu/swbin/, akkor ugyanazon webhely egy újabb oldalát érem el.
Vegyük szemügyre a https://szit.hu/swbin/ URL-t. Három részre osztható:
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.
Az URL-ben megadható portszám is: https://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.
Figyeljük meg a következő URL-t: https://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
Vegyük a következő URL:
A https://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.
URI = "http:" "//" gép [ ":" port ] [ absz_útvonal [ "?" kérés ]]
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.
A HTTP az Internet küldönce, a HTTP üzenetek csomagokban utaznak.
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 ü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>
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)
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.
A HTTP státuszkódjai öt kategóriába sorolhatók. A státuszkód segít megérteni a szervertől érkező válaszokat.
100 | továbbfolytatom |
101 | protokollcsere |
200 | ok |
201 | kész |
202 | elfogadva |
203 | nem hiteles információ |
204 | üres tartalom |
205 | rejtett tartalom |
206 | részleges tartalom |
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 | 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 | 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 |
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:
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 |