HTTP alapok Flashcards
A http és https URI-séma
- A HTTP definiálja a http és https URI sémákat.
- Egy http vagy https URI eredet szerverét a hoszt azonosító és az
opcionális portszám határozza meg. - Az útvonal komponens és az opcionális lekérdezés komponens egy
lehetséges cél erőforrást azonosít az eredet szerver névterében.
- Egy http vagy https URI eredet szerverét a hoszt azonosító és az
- Egy http vagy https URI előfordulása nem jelenti azt, hogy mindig
egy HTTP szerver figyel az URI által meghatározott eredet szerveren. - A https sémán keresztül elérhető erőforrásoknak nincs közös
identitása a http sémával.
http URI séma
Célja, hogy lehetővé tegye erőforrások azonosítását egy olyan
potenciális eredet szerveren, mely egy adott porton vár TCP
kapcsolatokra.
- 80-as port
https URI séma
Célja, hogy lehetővé tegye erőforrások azonosítását egy olyan
potenciális eredet szerveren, mely egy adott porton vár TCP
kapcsolatokra és mely képes HTTP kommunikációhoz biztonságossá tett TLS kapcsolat létrehozására.
- 443-mas port
Üzenet keretezés
A HTTP minden egyes főverziója saját szintaxist határoz meg az
üzenetváltáshoz, melyet keretezési mechanizmusnak (framing
mechanism) is neveznek.
Üzenet absztrakció
- Ez az üzenet absztrakció egy több HTTP verziót átfogó általánosítás, melynek vannak olyan lehetőségei, melyek bizonyos verziókban nem találhatók meg.
- Az üzeneteket önleírónak szánják, azaz minden, amit egy fogadónak tudnia kell az üzenetről, megállapítható a (dekódolt) üzenet vizsgálatával.
Üzenet absztrakció: vezérlő adatok
Az üzenetek az elsődleges céljukat leíró vezérlő adatokkal kezdődnek.
Üzenet absztrakció: fejléc szakasz
- A tartalom előtt küldött vagy fogadott mezőket fejlécmezőknek (vagy informálisan egyszerűen fejléceknek) nevezzük.
- Egy üzenet fejléc szakasza fejléc mezősorok egy sorozatából áll.
Üzenet absztrakció: tartalom
- A HTTP üzenetek egy teljes vagy részleges reprezentációt
hordozhatnak az üzenet tartalmaként. - bytefolyamkent mukodik
- a tartalom celjat egy keresben a metodus hatarozza meg, pl post
- egy allapotkod is jon a valaszban
Üzenet absztrakció: lezáró szakasz
- A tartalom után küldött vagy fogadott mezőket lezáró mezőknek
(vagy informálisan egyszerűen lezáróknak) nevezzük. - ellenorzo osszeg, digitalis alairas, kezbesitesi metrika vagy utofeldolgozas allapot infomacio lehet benne
Mezők
- A HTTP mezőket használ adatok név/értek párok formájában történő szolgáltatásához.
- A mezők küldése és fogadása az üzenetek fejléc és lezáró szakaszaiban történik.
miket tovabbitanak a mezok?
- magát az üzenetet leíró metaadatok kérésekben és válaszokban (például Date),
- reprezentáció metaadatok kérésekben és válaszokban (például Content-Type),
- információk a kliensről kérésekben (például User-Agent),
- információk a szerverről válaszokban (például Server),
- erőforrás metaadatok válaszokban (például Last-Modified).
Mezőnevek
- Egy mezőnév egy vagy több karakterből álló olyan sorozat, melyben az US-ASCII karakterkészlet egy részhalmaza használható csak.
- A mezőnevek kisbetű-nagybetű érzéketlenek.
Mezőértékek
- Egy mezőérték egy olyan karaktersorozat, mely egy vagy több nyomtatható US-ASCII karakterből, szóközből és vizszintes tabulátorból áll.
- A vezető és záró whitespace karaktereket a felhasználás előtt el kell távolítani.
- A mezőkhöz előírható, hogy egyetlen tagot vagy pedig egy vesszővel elválasztott taglistát hordozzanak.
- Minden egyes mező korlátozhatja a megengedett értékek halmazát.
Mezőszakaszok
- Tetszőleges számú olyan mezősorból állnak, melyek mindegyike egy mezőnevet és egy hozzá tartozó mezősor értéket tartalmaz.
- Amikor egy mezőnév megismétlődik egy szakaszban, az értéke egy olyan lista, melyben a mező a szakaszbeli mezősor értékei az előfordulásuk sorrendjében kerülnek összefűzésre elválasztóként egy vessző karakterrel.
A User-Agent fejlécmező
- A felhasználói ágensről tartalmaz információkat, ahonnan a kérés származik.
- Felhasználható a válasz testreszabásához vagy pedig böngésző vagy operációs rendszer használatra vonatkozó elemzésekre.
- A felhasználói ágens számára ajánlott minden egyes kérésben elküldeni a fejlécmezőt.
- A mezőérték egy vagy több termékazonosítóból áll, melyek mindegyikét nulla vagy több megjegyzés követi.
- A termékazonosítók felsorolása a fontosságuk szerinti csökkenő sorrendben történik.
- Minden egyes termékazonosító egy névből és egy opcionális verziószámból áll.
- A megjegyzéseket zárójelek határolják.
Melyik metodusokat kell tamogatnia minden szervernek?
Minden általános célú szervernek támogatnia kell a GET és a HEAD metódusokat, az összes többi metódus opcionális.
GET metódus
- A cél erőforrás egy aktuális kiválasztott reprezentációjának átvitelét kérelmezi.
- Az információ-visszakeresés elsődleges mechanizmusa.
- Egy kliens úgy módosíthatja a GET jelentését a kérésben a Range fejlécmező küldésével, hogy az csak a kiválasztott reprezentáció bizonyos részeinek átvitelét kérelmezi.
HEAD metódus
- Azonos a GET metódussal, azzal a különbséggel, hogy a szerver nem küldhet tartalmat a válaszban.
- Úgy használható metaadatok szerzésére a kiválasztott reprezentációról, hogy reprezentáció adatok nem kerülnek átvitelre.
POST metódus
- Azt kérelmezi, hogy a cél erőforrás dolgozza fel a kérésben mellékelt reprezentációt a saját szemantikájának megfelelően.
- Tipikus felhasználások:
- Adatok (például űrlap adatok) küldése egy adatfeldolgozó folyamat számára.
- Egy üzenet postázása egy hírcsoportba, levelezési listára vagy blogba.
- Egy új erőforrás létrehozása.
- Adatok hozzáfűzése egy erőforrás létező reprezentációjához.
PUT metódus
- Azt kérelmezi, hogy a kerüljön létrehozásra vagy helyettesítésre a cél erőforrás állapota a kérésben mellékelt reprezentáció által meghatározott állapottal.
- Egy adott reprezentációt tartalmazó sikeres PUT kérés arra enged következtetni, hogy egy következő GET kérés ugyanarra a cél erőforrásra egy 200 (OK) állapotkódú válaszban elküldött ekvivalens reprezentációt eredményez.
DELETE metódus
- Azt kérelmezi, hogy az eredet szerver törölje a cél erőforrás és aktuális funkcionalitása közötti kapcsolatot.
- Ha a cél erőforrásnak egy vagy több aktuális reprezentációja van, akkor ezeket az eredet szerver vagy megsemmisíti, vagy nem, a kapcsolódó tárterület vagy felszabadításra kerül, vagy nem, teljes egészében az erőforrás természetétől és az eredet szerver általi implementációjól függően.
- Viszonylag kevés erőforrás engedi meg a DELETE metódust.
Állapotkódok, állapotkódok fajtái
- 1xx (informáló): a kapcsolat állapotát vagy a kérés előrelhaladását
közlő köztes választ jelez egy végső válasz küldése előtt. - 2xx (siker): azt jelzi, hogy a kérés sikeresen fogadásra, értelmezésre és
elfogadásra került. - 3xx (átirányítás): azt jelzi, hogy a felhasználói ágens további
műveletet kell, hogy végrehajtson a kérés teljesítéséhez, melyet
automatikusan elvégezhet. - 4xx (kliens hiba): azt jelzi, hogy a kérés rossz szintaxisú vagy nem
teljesíthető. - 5xx (szerver hiba): azt jelzi, hogy a szerver nem teljesített egy
nyilvánvalóan érvényes kérést.
100
- Continue
- A szerver megkapta a kérés bevezető részét és még nem utasította el. A szerver azután kíván egy végső
választ küldeni, ha a teljes kérést megkapta és megfelelően járt el.
101
- Switching Protocols
- A szerver készen áll a kapcsolaton használt alkalmazási
protokoll lecserélésére.
200
- OK
- A kérés sikeres volt. A válaszban küldött tartalom a metódustól függ. Például egy GET kérésre adott válasz tartalma a cél erőforrás egy
reprezentációja.
201
- Created
- A kérés teljesítésre került, eredményül egy vagy több új erőforrás került létrehozásra
202
- Accepted
- A kérés elfogadásra került, de a feldolgozása nem fejeződött be.
204
- No Content
- A szerver sikeresen teljesítette a kérést, de a válaszban nem kerül küldésre további tartalom.
206
- Partial Content
- A szerver sikeresen teljesített egy tartományra vonatkozó kérést a kiválasztott reprezentáció
egy vagy több részének átvitelével.
300
- Multiple Choices
- A cél erőforrásnak egynél több reprezentációja van. HEAD kérés kivételével ajánlott a válaszban
tartalomként egy reprezentáció metaadatokból és URI hivatkozásokból álló lista elhelyezése, melyből a felhasználói ágens kiválaszthatja a számára
legmegfelelőbbet.
301
- Moved Permanently
- A cél erőforrás URI-ja véglegesen megváltozott, a rá való további hivatkozásokhoz a mellékelt URI-k egyikét kellene használni.
302
- Found
- A cél erőforrás ideiglenesen egy másik URI alatt található.
303
- See Other
- A szerver a felhasználói ágenst egy másik erőforrásra irányítja át, melynek célja, hogy egy közvetett választ
adjon az eredeti kérésre.
304
- Not Modified
- A szerver egy feltételes GET vagy HEAD kérést kapott. Nincs szükség arra, hogy elküldje a cél erőforrás
reprezentációját, mivel a kérés azt jelzi, hogy a kliens érvényes reprezentációval rendelkezik.
400
- Bad Request
- A szerver nem tudja vagy nem fogja feldolgozni a kérést valamilyen kliens hiba miatt (például a kérés
szintaktikailag hibás).
401
- Unauthorized
- A kérés nem tartalmaz érvényes hitelesítő adatokat a cél erőforráshoz.
403
- Forbidden
- A szerver ugyan megértette a kérést, de megtagadja a teljesítését. Ha a kérésben hitelesítő adatok vannak,
akkor azokat nem megfelelőnek tekinti a szerver a hozzáféréshez.
404
- Not Found
- Az eredet szervernek nincs a cél erőforráshoz aktuális reprezentációja vagy nem kívánja azt nyilvánosságra
hozni.
405
- Method Not Allowed
- Az eredet szerver ismeri ugyan a metódust, de a cél erőforrás nem támogatja azt
500
- Internal Server Error
- Olyan váratlan körülmény lépett fel a szerveren, mely megakadályozza a kérés teljesítését.
501
- Not Implemented
- A szerver nem támogatja a kérés teljesítéséhez szükséges funkcionalitást (például metódust).
503
- Service Unavailable
A szerver jelenleg nem képes a kérés kezelésére például ideiglenes túlterhelés vagy menetrend szerinti karbantartás miatt.
Átirányítás, a Location fejlécmező
- Amikor pl egy http oldalt akarunk meglatogatni, de az atkerult https-re, es atiranyit minket.
- Ez a 301-es kod lesz, es a location fejlec mezoben van az uj url
Tartalomegyeztetés
- Amikor a válaszok (akár sikert, akár hibát jelző) tartalmat hordoznak, az eredet szerver gyakran többféle módon is ábrázolhatja a tartalmat, például különböző formátumokban, nyelveken vagy kódolásokkal.
- A különböző felhasználóknak vagy felhasználói ágenseknek ugyancsak eltérő képességei, jellemzői vagy preferenciái lehetnek, melyek befolyásolhatják, hogy a rendelkezésre álló reprezentációk közül melyik lenne számukra a legjobb.
- Ezért biztosít a HTTP a tartalomegyeztetéshez mechanizmusokat.
proaktív egyeztetés
- Az előnyben részesített reprezentációt egy algoritmussal választja ki
az eredet szerver a felhasználói ágens preferenciái alapján. - A választás a válaszhoz rendelkezésre álló reprezentációk és a
kérésben szolgáltatott különféle információk – beleértve az explicit
tartalomegyeztetési fejlécmezőket, a - User-Agent mező részeit és az
olyan implicit jellemzőket, mint például a kliens hálózati címe –
összehasonlítása alapján történik. - Proaktív egyeztetésnek alávetett válaszban gyakran kerül küldésre a
Vary fejlécmező annak jelzésére, hogy a kérés mely részei kerültek
felhasználásra a kiválasztási algoritmusban.
proaktiv egyeztetes elonyok
- Amikor nehéz egy felhasználói ágens számára leírni a rendelkezésre
álló reprezentációk közüli választás algoritmusát, vagy - amikor a szerver az első válaszban el kívánja küldeni a felhasználói
ágensnek az általa legjobbnak becsült reprezentációt, elkerülendő egy
további kérést.
proaktiv egyeztetes hatranyok
- Lehetetlen a szerver számára annak pontos meghatározása, hogy mi
lenne a legjobb egy tetszőleges felhasználónak, mivel ehhez kimerítő
ismeretek lennének szükségesek a felhasználói ágens képességeiről és a
válasz tervezett felhasználási módjáról. - Nagyon nem hatékony a felhasználói ágens képességeit minden
kérésben leírni, ez egyben a felhasználó magánszférájára is egy
lehetséges kockázatot jelenthet. - Bonyolítja az eredet szerver megvalósítását és a kérésekre válaszokat előállító algoritmusokat.
- Korlátozza a válaszok újrafelhasználhatóságát megosztott
gyorsítótárazáshoz.
Az Accept fejlécmező
- Értéke média tartományok egy vesszővel elválasztott listája, melyben
minden egyes média tartományt 0 vagy több médiatípus paraméter
(például charset) valamint egy opcionális relatív súly (azaz q
paraméter) követhet. - Média tartomány:
- /: az összes médiatípust jelenti
- type/: az adott típus összes altípusát jelenti (például text/)
- type/subtype: az adott médiatípust jelenti (például text/html)
HTTP/1.1 üzenetformátum
- Az üzenetek egy kezdősorral (start-line) kezdődnek, melyet CRLF
követ. - A kezdősort nulla vagy több fejlécsor követi, melyeket együttesen
fejléceknek vagy fejléc szakasznak neveznek. - Egy üres sor jelzi a fejléc szakasz végét.
- Opcionálisan szerepelhet az üzenet végén egy üzenettörzs (message
body).