Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:http

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

oktatas:web:http [2019/08/22 20:43] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[oktatas:​web|<​ Web]]
  
 +====== HTTP ======
 +
 +
 +  * **Szerző:​** Sallai András
 +  * Copyright (c) Sallai András, 2015
 +  * Licenc: GNU Free Documentation License 1.3
 +  * Web: http://​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.
 +
 +{{:​oktatas:​web:​http_tortenet.png|}}
 +
 +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.
 +
 +
 +{{:​oktatas:​web:​web_kliens_szerver.png|}}
 +===== 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 [[http://​www.iana.org/​assignments/​media-types/​media-types.xhtml|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. ​
 +
 +{{:​oktatas:​web:​web_uzenet_inbound_outbound.png|}}
 +
 +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.
 +
 +{{:​oktatas:​web:​web_folyamok.png|}}
 +
 +==== 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>
 +
 +
 +{{:​oktatas:​web:​web_http_uzenet_reszei.png|}}
 +
 +
 +
 +==== A HTTP alaptulajdonságai ====
 +
 +  * állapotmentes - a kapcsolat állapota nincs tárolva
 +  * kapcsolatmentes - egy kérés után várjuk a választ de utána megszakad a kapcsolat
 +  * 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 ====
 +
 +{{:​oktatas:​web:​http_metodusok.png|}}
 +
 +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.
 +
 +{{:​oktatas:​web:​bongeszo_kapcsolata_szerverrel.png|}}
 +
 +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 egy titkosító réteget ​
 +jelent a HTTP és a TCP között.
 +
 +
 +{{:​oktatas:​web:​http_es_https.png|}}
 +
 +
 +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écinformá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)
 +  * Adatokrészek (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 a integritást ellenőrző számokat.
 +
 +
 +
 +{{:​oktatas:​web:​tcp_ip_csomag.png|}}
 +
 +^  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 |
 +
 +
 +
 +
 +{{:​oktatas:​web:​tcp_kapcsolatok.png|}}
 +===== 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
oktatas/web/http.txt · Utolsó módosítás: 2019/08/22 20:43 szerkesztette: admin