Webfejlesztő és Junior Frontend
Hálózatok
A hálózatok jellemzői, működésük
Hálózatok
• Az infokommunikációs hálózatok már nagyon régóta
dinamikusan fejlődő ágazatot jelentenek az elektronika és
informatika terén.
• Kezdetben a hálózatok elsődleges célja az emberi
kapcsolattartás (távíró, telefon) gyorsítása, könnyítése volt, ami
manapság is igaz, azonban ez kiegészült a különböző
rendszerek összekapcsolásával kiaknázható lehetőségekkel.
• A következőekben az informatikában is felhasznált hálózatok
tulajdonságaival fogunk megismerkedni.
3
Hálózatok
• Az informatikában hálózatnak nevezzük eszközök azon
csoportját, melyek egy megadott, előre definiált (tehát
minden eszköz által ismert) kommunikációs szabvány
alapján, információk megosztására képesek egymással.
• A hálózatba kapcsolt eszközök természetesen továbbra is
önálló feldolgozással rendelkez(het)nek.
4
Hálózatok III
• A mai informatikában használt hálózatok alapvető céljai:
• Kommunikáció
• Mind a mai napig elmondható, hogy a hálózatok globális kiépítése az emberi
kommunikáció és információszolgáltatás alappillére.
• Erőforrás-megosztás
• A hálózatba kapcsolt eszközök használhatják más, ugyancsak a hálózatra
kapcsolt gépek számítókapacitását, vagy adatállományát.
• Teljesítmény-elosztás
• A hálózatba kapcsolt eszközök egy-egy feladatot feloszthatnak egymás között,
így idő spórolható meg.
• Megbízhatóság
• Minél több eszköz dolgozik egy-egy problémán, annál kisebb gondot okoz
egy-egy eszköz kiesése.
5
Hálózatok IV
• A hálózatok természetesen nagyon sokrétűek lehetnek mind
kialakítás, mind kommunikáció alapján.
• A hálózatokat pontosan emiatt különböző szempontok szerint
lehet csoportosítani:
• Kiterjedés alapján
• A hálózatban résztvevő eszközök milyen távolságra vannak egymástól.
• Hálózati architektúra alapján
• Az adatok milyen formában közlekednek a csatornán.
• Topológia alapján
• Az egyes eszközök milyen módon vannak egymáshoz
csatlakoztatva.
6
Hálózatok kiterjedése I
b
• A hálózatok legelterjedtebb csoportosítási lehetősége a kiterjedés
alapján való csoportosítás.
• Ez alapján négy kategóriába sorolhatjuk a hálózatokat:
• PAN (Personal Area Network)
• Ide tartozik minden olyan hálózat, ami maximum 10 méteren belüli, 1-2 eszköz
közti kommunikációt tesz lehetővé.
• LAN (Local Area Network)
• Ide tartozik minden olyan hálózat, ami egy épületben, vagy pár kilométeren
belüli eszközök közti kommunikációt tesz lehetővé.
• MAN (Metropolitan Area Network)
• Ide tartozik minden olyan hálózat, ami egy városban, vagy pár száz kilométeren
belüli eszközök közti kommunikációt tesz lehetővé.
7
Hálózatok kiterjedése II
• WAN (Wide Area Network)
• Ide tartozik minden olyan hálózat, ami az előzőeknél nagyobb területen lévő eszközök közti
kommunikációt tesz lehetővé.
• Természetesen a legismertebb ilyen hálózat az internet, de nem egyenlő a két fogalom.
• Pl.: Az Észak-Koreában használt belső hálózat is WAN-nak minősül, mivel lényegesen nagyobb a
kiterjedése, mint a MAN által definiált méret.
8
Hálózati architektúra
• Ez a csoportosítási lehetőség alapvetően az alapján
csoportosítja a hálózatokat, hogy az adatok milyen
módon közlekednek a csatornákon.
• Alapvetően kétféle architektúrát használunk:
• Vonalkapcsolt architektúra
• Dedikált csatornán való küldés esetén.
• Csomagkapcsolt architektúra
• Közös csatornán való küldés esetén.
9
Vonalkapcsolt architektúra
• A vonalkapcsolt hálózatok működési elve, hogy az adó és
a vevő közti csatorna dedikáltan csak az adott kapcsolat
számára van fenntartva.
• A technika előnye, hogy nem lehetséges ütközés több
adó esetén, hiszen egyszerre csak két eszköz kommunikál
egymással, amikor az egyik ad, a másik vesz és fordítva.
• Hátránya, hogy a hálózat kiépítése nagyon bonyolult
lehet, főleg nagy kiterjedés és sok eszköz esetén.
10
Csomagkapcsolt architektúra
• A csomagkapcsolt hálózatok működési elve, hogy nincs
minden egyes, a hálózatban résztvevő eszköznek dedikált
csatornája a másik eszközhöz, azonban az adatokat
csomagokba szervezzük és ezeket küldjük a hálózaton.
• A csomagok mérete relatíve kicsi és minden csomagban benne
van, hogy kinek szól, adott esetben az is, hogy a teljes adatból
ez hányadik egység, stb.
• Így a csatornán egyszerre több adó is megjelenhet, hiszen a
csomagokban egyértelműen ki van töltve, hogy kinek szólnak.
11
Topológiák I.
• Egy hálózat topológiája megadja, hogy az adott hálózat egyes
eszközei milyen fizikai kialakítású rendszer segítségével
csatlakoznak egymáshoz.
• A topológia természetesen nem pontos térképet vázol fel, csak
egy elvi felépítést ábrázol.
• Az egyes topológiákat két külön csoportra bonthatjuk
kiépítésük, illetve az üzenetek továbbításának szempontja
szerint:
• Üzenetszórásos topológiák
• Pont-pont (PP) kapcsolatú topológiák
12
Topológiák II.
• Az üzenetszórásos topológiák alapelve, hogy az
információkat alapvetően mindenki megkapja, láthatja,
mivel csak egy központi kommunikációs csatorna van
kiépítve, amit mindenki használ.
• Ide tartozó topológiák:
• Sín / busz topológia
• Minden eszköz egy központi csatornára csatlakozik.
• Központi gyűrű
• Az egyes eszközök egymáshoz csatlakozva gyűrűben működnek.
13
Sín topológia
• A sín topológia régebben igen elterjedt hálózati
topológiának számított, mert működése biztosított volt
akkor is, ha egy-egy eszköz kiesett a hálózatból.
• Előnye, hogy olcsó.
• Hátránya, hogy a gerincvezeték
kialakítása nem egyszerű minden
esetben.
14
Központi gyűrű topológia
• Ugyancsak régebben aktívan használt, manapság már
kevésbé felhasznált topológia.
• Működési elvének alapja az, hogy a két végén
összekapcsolt sín topológiát hozunk létre.
• Ugyanazok az előnyei és hátrányai,
mint a sín topológiának.
• Megvalósítása:
15
Topológiák III.
• Az üzenetszórásos topológiák mellett a pont-pont topológiák,
mint a manapság legelterjedtebb topológiák szerepelnek még.
• A pont-pont topológiák arra törekednek, hogy a hálózati eszközök
között direkt kapcsolat kiépítésével jöjjön létre a hálózat.
• Ide tartozó topológiák:
• Csillag topológia
• Az eszközök egy központi eszközhöz csatlakoznak.
• Gyűrű topológia
• Az eszközök egymáshoz csatlakozva gyűrűt alkotnak.
• Teljes topológia
• Minden eszközhöz minden eszköz csatlakozik.
16
Csillag topológia
• A csillag topológia alapja, hogy az eszközök pont-pont
kapcsolatban állnak egy központi eszközzel, ami
továbbítja az üzeneteket a megadott céleszköz felé.
• Előnye, hogy a rendszer könnyen kialakítható,
bővíthető és biztonságos.
• Hátránya, hogy drága, illetve a központi
eszköz meghibásodása a teljes hálózat
leállásához vezet.
17
Gyűrű topológia
• A központi gyűrűvel szemben, a gyűrű topológiában
habár gyűrűt alkotnak a gépek, mégsem egy
gerincvezetékre csatlakoznak, hanem egymáshoz.
• Előnye, hogy könnyen kialakítható, bővíthető
• Hátránya, hogy csak egy eszköz kiesését
tűri el, több eszköz kiesése esetén egy
egész szegmens elérése is megszűnhet.
18
Teljes topológia
• A teljes topológia a lehető legbiztonságosabb topológia,
amelyben minden eszköz minden, a hálózatban található
többi eszközzel pont-pont kapcsolatban van.
• Előnye, hogy ez a hálózat akárhány
eszköz kiesését kibírja.
• Hátránya, hogy nagyon drága, és a
kialakítása is bonyolult.
19
Topológiák IV.
• Az üzenetszórásos és a pont-pont topológiák esetén
nagyon fontos az üzenetek küldésének logikája, mivel az
üzenetek nem csúszhatnak egymásra.
• Az üzenetszórásos megoldásnál a központi gerincvezeték a
kritikus pont.
• A pont-pont kapcsolat esetén a két vevő közti csatorna
telítése lehet a probléma.
• A sín és központi gyűrű topológiákon alkalmazott közeg-
hozzáférési módszerekkel azonban ez kiküszöbölhető.
20
Közeg-hozzáférési módszerek I.
• A közeg-hozzáférési módszerek azt szabályozzák, hogy egy központi
gerincvezetéken kommunikáló eszközök milyen módon, elosztásban
küldjék az üzeneteket, elkerülve a káoszt.
• A közeg-hozzáférési módszerek csoportjai:
• Véletlen
• Az eszközök üzenetküldése nincs szabályozva, tehát bárki bármikor küldhet üzenetet.
• Osztott
• Az eszközök csak egy bizonyos feltétel teljesülése esetén küldhetnek
(és fogadhatnak) üzeneteket.
• Központosított
• Az eszközök egy „felügyelő” eszköz döntése alapján küldhetnek
(és fogadhatnak) üzeneteket.
21
Közeg-hozzáférési módszerek II.
• A véletlen közeg-hozzáférési módszerek:
• ALOHA
• Valójában azt írja le, hogy nincs szabály, bárki bármikor küldhet és fogadhat
üzeneteket, azonban a sikertelenség észlelhető.
• Réselt ALOHA
• Egy szinkronizált ALOHA, melynek lényege, hogy minden adó egy bizonyos ütemezést
követ (réselés), és csak akkor kezdenek el adni, amikor egy időszeleten belül vagyunk
véletlenszerűen.
• CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
• Többszörös hozzáférés-érzékelő és ütközésdetektáló rendszer.
• Az adó az adás megkezdése előtt kihallgat a hálózatra, hogy ott éppen valaki ad-e, ha
igen, akkor vár egy kis időt, majd újra próbálkozik.
• Az Ethernet specifikáció ezt használja.
22
Közeg-hozzáférési módszerek III.
• Réselt gyűrű
• A technika a gyűrű topológiára lett kidolgozva, lényege, hogy a réselt
ALOHA-hoz hasonlóan réseket hozunk létre, melyek valójában
időkeretek, és ezekben a keretekben megadott hosszúságú üzenet
küldhető át.
• A rés maga tartalmaz egy foglaltságjelző bitet, melyből a többi adó tudja,
hogy már nem kezdhet ebben a résben adásba.
• Regiszter beszúrásos gyűrű
• Ez a technika is a gyűrű topológiára lett kidolgozva, lényege, hogy egy
host, amikor adatot kap a hálózaton, először egy tárolóban (regiszterben)
eltároljuk azt, majd az általa küldeni kívánt adatokat továbbítjuk.
• Ha éppen senki nem ad, bárki nekikezdhet az adásnak.
23
Közeg-hozzáférési módszerek IV.
• Osztott vezérlésű közeg-hozzáférési módszerek:
• Vezérjeles gyűrű (Token ring)
• A gyűrű topológiában adott egy speciális host, aki generál egy ún.
tokent. Ez a token elindul körben a hálózatban, és aki éppen
megkapja, azt arra hatalmazza fel, hogy küldjön a hálózaton.
• A token mögött található az adat, illetve oda helyezheti el a host,
amennyiben a token üres.
• Amennyiben a token elvész, a speciális host újragenerálja azt.
• Vezérjeles sín (Token bus)
• A vezérjeles gyűrű sín topológiára kialakítva.
24
Közeg-hozzáférési módszerek V.
• CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)
• A CSMA/CD-vel szemben amennyiben az adó nem talál adást a
csatornába a kezdeti belehallgatás során, akkor is vár egy kicsit, majd újra
belehallgat, és ha még mindig nem ad senki, csak akkor kezd neki az
adásnak.
• A központosított közeg-hozzáférési módszerek (PP):
• Lekérdezéses elvű
• Alapvetően csillag topológiás hálózatoknál használatos.
• Működési elve, hogy a központban található eszköz (mester) lekérdezi az
egyes másodlagos host-okat (szolga), hogy szeretnének-e küldeni,
amennyiben igen, az adatot átadják a mesternek, aki továbbadja a cél
szolgának.
25
Közeg-hozzáférési módszerek VI.
• TDMA (Time Division Multiple Access)
• Egy időosztásos rendszer, a lényege, hogy központi időosztáshoz
igazodva minden host kap egy időszeletet, amikor adhat,
amennyiben ekkor éppen nincs küldenivalója, az adott időszelet
kihasználatlan marad.
26
Az OSI és TCP/IP modell
A kommunikációs eszközök működése
Kis Balázs 27
Az OSI- és TCP/IP-modell
• Az előzőekben átnéztük a hálózatok csoportosítását és
felépítését.
• A következőekben azonban közelebbről fogjuk tanulmányozni,
hogy az egyes hálózati eszközök működése hogyan néz ki.
• A hálózati eszközöknek szabványos módon kell működniük
ahhoz, hogy a kommunikáció során a két vagy több
kommunikáló fél megértse egymást.
• Ez régebben gyártóspecifikus volt, mára azonban
szabványosították főként az internet hatására.
28
OSI-modell I.
• Az első szabványosítási kísérlet a hálózati kommunikációra az
OSI (Open System Interconnection) modell volt.
• A modell végül sosem lett szabványosítva, de mivel a ma
használt csomagalapú, hálózati és átviteli architektúrák
mindegyike erre épül, így ismerete elengedhetetlen.
• Az OSI-modell értelmében egy hálózati eszköznek hét,
egymásra épülő, de elkülönített réteg összehangolt
felhasználásával kell tudni használnia a hálózatot.
29
OSI-modell II.
• Az OSI-modell 7 rétege:
• Alkalmazási réteg (Application Layer)
• Prezentációs / megjelenítési réteg (Presentation Layer)
• Viszony réteg (Session Layer)
• Átviteli réteg (Transport Layer)
• Hálózati réteg (Network Layer)
• Adatkapcsolati réteg (Data Link Layer)
• Fizikai réteg (Physical Layer)
• Egy érkező adat esetén alulról felfele kell haladni, egy
küldendő adat esetén fentről lefele.
30
Fizikai réteg
• A fizikai réteg feladata, hogy érkező adatok esetén azt
dekódolni tudja, küldendő adatok esetén pedig az adatot az
adott hálózati környezetnek megfelelően tudja kiküldeni,
átkonvertálni.
• Tehát összességében a feladata, hogy biztosítsa a fizikai
kapcsolódást a hálózathoz.
• A fizikai réteg tehát a hálózaton kapott binárisan feldolgozható
adatokkal dolgozik.
• A fizikai közeg lehet optikai megoldás, réz- vagy fémkábeles
megoldás, de akár vezeték nélküli is.
31
Adatkapcsolati réteg I.
• Feladata, hogy az adatokat keretekre (frame) bontsa olyan
módon, hogy az adott hálózati környezetben azok
átküldhetők, továbbíthatók legyenek, illetve érkező adat
esetén ezeket a kereteket rakja össze.
• A keretek mérete hálózatonként eltérő lehet, de egy adott
csomagkapcsolt hálózati architektúrában minden esetben
korlátozott.
• További nagyon fontos tényező, hogy az adatkapcsolati réteg
feladata, hogy a fizikai címzést megvalósítsa, azaz hogy egy
eszköz egyedi azonosítását a hálózaton megoldja.
32
Adatkapcsolati réteg II.
• A csomagkapcsolt hálózatok esetén nagyon fontos tényező az
MTU (Maximum Transmission Unit), ami megadja, hogy az
adott hálózaton egy csomagnak mekkora lehet a maximális
mérete.
• A küldendő adatot tehát az MTU-nak megfelelő méretben
lehet elküldeni.
• Tipikus MTU méretek:
• Ethernet hálózatok: 1492 byte
• Token ring: 17800 byte
33
Adatkapcsolati réteg III.
• A MAC (Media Access Control) cím, egy fizikai cím,
melynek feladata, hogy az adott hálózati eszközt
egyedileg lehessen azonosítani a hálózaton.
• A MAC-cím formája minden esetben azonos (12 db
hexadecimális számból áll), azonban két egyforma MAC-
cím elvileg „nem létezhet” a világon.
• A MAC-cím első része a gyártó azonosítója, amelyből így
meghatározható, hogy egy adott eszközt ki gyártott.
34
Hálózati réteg I.
• Feladata, hogy az adatokat csomagokra (packet) bontsa, vagy az
érkező kereteket (az adatkapcsolati réteg felől) csomaggá alakítsa.
• A hálózati réteg valósítja meg a logikai címzést, ami azt jelenti,
hogy a hálózaton mindenkinek lehet egy logikai, egyedi
azonosítója amin keresztül elérhető a hálózaton.
• Ezt manapság az IP-cím teszi lehetővé.
• A hálózati réteg ezzel együtt tudja biztosítani a csomag
továbbítását a következő hálózati eszközig.
• Az első olyan réteg, aminek működését nem befolyásolja a hálózati
architektúra.
35
Hálózati réteg II.
• Az adatok továbbküldésének biztosítása nagyon fontos része a
hálózati eszközöknek, mivel így érhető el a csomagkapcsolt
hálózati architektúra.
• Mivel a hálózati réteg az első, ami a logikai címzést fel tudja
dolgozni, így amikor egy eszköz információt küld egy másik
eszköznek egy harmadikon keresztül, eddig a rétegig kell
eljusson a továbbítandó információ.
• Amikor egy eszköz a kommunikációban csak azért szerepel, hogy
átfussanak rajta a csomagok, azt az eszközt hopnak hívjuk.
36
Hálózati réteg III.
• A hopok megjelenése a hálózatban:
37
Feladat V.
• Nézzük meg, hogy a gépünk jelenleg milyen fizikai és
logikai hálózati azonosítóval bír.
• Derítsük ki az alábbi oldal alapján, hogy milyen hálózati
eszköz van a gépünkben.
• https://macvendors.com
• Telepítsük a WireShark programot, és nézzük meg, milyen
hálózati kommunikációt folytat a gépünk.
38
Átviteli réteg I.
• Feladata, hogy biztosítsa az átvitelt a két kommunikáló fél között a teljes
útvonalon, függetlenül minden alatta elhelyezkedő réteg munkájától.
• Ez több dolgot is jelent:
• az egyes kommunikáló alkalmazások elől el kell rejtse az alatta található
rétegeket,
• mivel a hálózaton nem biztos, hogy a csomagok sorban érkeznek meg, így
ezeket is sorba kell rendeznie,
• kiegyenlíti a kommunikáló felek közti hálózati sávszélességből adódó
különbségeket,
• a megbízhatóságot növeli a folyamatosan alkalmazott ellenőrzőösszegekkel.
39
Átviteli réteg II.
• Az átviteli réteg további fontos feladata, hogy az
adatokat szegmensekre bontsa, vagy szegmensekbe
konvertálja.
• Az egyes szegmensek egy-egy alkalmazásnak szánt adatok
lesznek.
40
Viszony réteg
• Feladata, hogy egyfajta munkameneti azonosítást tegyen
lehetővé a kommunikáló eszközök között.
• Magyar nevét is a „valamihez fűződő viszony” alapján
kapta.
• A munkameneti azonosítás fontos tényező hálózaton,
mert segítségével lehet beazonosítani egy-egy
kommunikáló eszközt a hálózaton anélkül, hogy az
minden egyes alkalommal azonosítaná magát.
41
Megjelenítési réteg
• Feladatát tekintve egy konverziós réteg, mely arról gondoskodik,
hogy egy érkező adatot az adatnak megfelelően tudjuk
megjeleníteni, illetve arról is, hogy a küldendő adatot átkonvertálja
bináris formára.
• Továbbá fontos feladata, hogy ha lehetőség van az adatok
tömörítésére, azt is végezze el.
• Természetesen minden adatnak különböző lehet a megjelenése:
• szöveges adatok – karakterkódolás,
• bináris adatok – az adatnak megfelelő feldolgozás (kép, hang, fájl, stb.)
42
Alkalmazási réteg
• Ezen a rétegen futnak az alkalmazások, amelyek kihasználják
más eszközök szolgáltatásait, vagy szolgáltatást nyújtanak más
eszközöknek a hálózaton keresztül.
• Példák alkalmazás rétegbeli protokollokra:
• HTTP
• FTP
• POP
• IMAP
43
OSI-modell III.
• Mivel az OSI-modell sosem szabványosodott, így
természetesen jelenleg nem ezt használjuk a különböző
hálózati eszközökben.
• Az OSI-modell egy egyszerűsített, és ily módon a
gyártóknak lényegesen nagyobb szabadságot nyújtó
változatát alkalmazzuk jelenleg, a TCP/IP (Transmission
Control Protocol / Internet Protocol) protokollt.
• A következőekben ennek a működését fogjuk átnézni.
44
TCP/IP
• A TCP/IP-protokoll 4 rétegből áll:
• Alkalmazás réteg (Application Layer)
• Átviteli / TCP réteg (Transport Layer)
• Hálózati / IP réteg (Network Layer)
• Interfész réteg (Network Interface Layer)
• A rétegek működése hasonlóképpen működik, mint az OSI-
modell esetén, tehát minden réteg a felette álló réteget
szolgálja ki, vagy az attól érkező információt konvertálva adja
tovább az alatta lévő rétegnek.
45
Interfész réteg
• Az interfész réteg az OSI-modell fizikai és adatkapcsolati rétegét
olvasztja össze.
• Feladata, hogy biztosítsa a hálózati kapcsolódást, a hálózati
kompatibilitást és azonosíthatóságot.
• Néhány, a TCP/IP-szabvánnyal kompatibilis átviteli szabvány:
• Ethernet (IEEE 802.3 u, z)
• Token Ring (IEEE 802.5)
• Modem
• ISDN
• ADSL
• WiFi / WLAN (IEEE 802.11 a, b, g, n, ac)
46
Ethernet I.
• Az Ethernet átviteli szabvány a manapság LAN-kiterjedésű
kábeles hálózatokban a legelterjedtebb.
• Az Ethernet a CSMA/CD közeg-hozzáférési technikát használja.
• Az 1970-es években dolgozták ki, de csak az 1980-as években
szabványosították.
• Nevét az éter-ről (ether) kapta, az 1900-as években azt hitték,
hogy ez az anyag tölti ki a világűrt.
• Az Ethernet esetén a kábel, amely összeköti a gépeket,
jelképezi az étert.
47
Ethernet II.
• Az Ethernet fejlődése során igen sok kábel- és sebességszabványt
támogatott:
• 10Base…
• 5 – vastag koaxiális kábelek
• 2 – vékony koaxiális kábelek
• T – csavart érpárú kábelek
• F – optikai kábel
• 100Base… (802.3u)
• T4 / TX – csavart érpárú kábel
• FX – optikai kábel
• 1000Base… (802.3z)
• T / CX – csavart érpárú kábel
• SX / LX – optikai kábel
48
Modem
• A modem átviteli technika egy rövidítésből kapta a nevét:
• MOdulátor – DEModulátor
• Ez le is írja a működését, hiszen a technika lényege, hogy a
telefonhálózaton alapvetően analóg jelátvitelre van lehetőség, így
a digitális hálózati jelátvitelre a kliens oldalon digitális → analóg
átalakítással moduláljuk a jelet, majd a telefonközpontban egy
analóg → digitális átalakítással demodulálják azt.
• Maximum 56 Kbit/s-os átviteli sebesség érhető el vele.
• További fontos jellemzője, hogy egyszerre nem lehet a
telefonvonalat is és a hálózatot is elérni.
49
ISDN
• Az ISDN (Integrated Services Digital Network) az első
olyan megoldás volt a hálózat kiépítésére, melyen
keresztül digitális jelátvitel lehetséges.
• Az ISDN megjelenésével lehetőség nyílt a telefon és a
hálózati elérés egyidejű kihasználására.
• Mára szinte teljesen kihalt technika, mivel 64 kbit/s-os,
illetve két vonalon 128 kbit/s-os átviteli sebessége nem
mondható elegendőnek.
50
ADSL
• Az ADSL (Asymmetric Digital Subscriber Line) a manapság legelterjedtebb
hálózatterjesztési technika telefonvonalon keresztül.
• Az ADSL működési elve, hogy a telefonkábelen nem csak 8000 Hz-ig lehet
jelet átvinni, így ha elég magas átviteli frekvencián küldjük az információt,
akkor az ember számára az érzékelhetetlen lesz telefonálás közben,
ráadásul igen nagy sávszélesség érhető el a magasabb
frekvenciatartományokban.
• Az ADSL-nek több szabványa is létezik:
• ADSL maximum 8 Mbit/s letöltés
• ADSL2 maximum 12 Mbit/s letöltés
• ADSL2+ maximum 24 Mbit/s letöltés
51
Wi-Fi / WLAN
• A Wi-Fi / WLAN átviteli technika a legelterjedtebb a LAN kiterjedésű hálózatokban.
• A Wi-Fi egy frekvenciaszórásos hálózat, melyben az egyes hostok a szóró egység
(router, AP) jelzésére ugrálnak a frekvenciákon a megadott logika szerint.
• Okai:
• biztonság,
• Zavarmentesség.
• A Wi-Fi elterjedtebb szabványai:
• 802.11 a – 5 GHz-es katonai hálózat (54 Mbit/s)
• 802.11 b – 2.4 GHz-es hálózat (11 Mbit/s)
• 802.11 g – 2.4 GHz-es hálózat (54 Mbit/s)
• 802.11 n – 2.4 / 5 GHz-es hálózat (600 Mbit/s)
• 802.11 ac – 5 GHz-es hálózat (1300 Mbit/s)
52
Hálózati réteg
• A hálózati, vagy IP réteg a TCP/IP szabványban a logikai
címzést lehetővé tévő réteg.
• Egy az egyben megfeleltethető az OSI-modell hálózati
rétegével.
• A TCP/IP szabványban a hálózati réteget azért is nevezzük IP
rétegnek, mert az Internet Protocol által leírt logikai címzési
szabványt használja.
• IPv4
• IPv6
53
IPv4 I.
• Az IPv4 az Internet Protocol 4. verziójú, egyben legelterjedtebb
címzési technikája.
• Felépítését tekintve egy cím 32 biten, 4 bájton ábrázolható, az
egyes bájtokat decimális felírásban ponttal választjuk el benne.
• 0.0.0.0 – 255.255.255.255
• Az IPv4 manapság még elterjedt logikai címzési lehetőség,
azonban technikai korlátai miatt, mára lecserélés alatt van.
54
IPv4 II.
• Az IPv4 címek minden esetben 2 részre bonthatók:
• NetID
• HostID
• A NetID az alhálózat azonosítója, ami megadja, hogy az adott
gép melyik alhálózatba tartozik.
• A HostID az eszköz azonosítója, ami megadja, hogy az adott
alhálózatban az adott gépnek mi az egyedi azonosítója.
• Régebben az egyes IP címeket osztályokba is sorolták.
55
IPv4 III.
• Annak megadására, hogy az adott IP címben melyik bitek jelzik
az alhálózatot és melyik bitek jelzik az eszköz azonosítóját egy
speciális felírású, ugyancsak 32 bites maszkot alkalmazunk.
• Ez az alhálózati maszk.
• Az alhálózati maszk amennyiben egy adott biten 1-est vesz fel,
az azt jelenti, hogy a hozzá tartozó IP címben az adott bit
alhálózatot jelöl, míg ha 0-t akkor az eszköz azonosítót jelöl.
• Pl.: 255.255.255.0 – 11111111.11111111.11111111.00000000 azt
jelenti, hogy az első 24 bit az alhálózatot jelöli, míg az utolsó 8 bit
az eszközt az adott alhálózaton belül.
56
IPv4 IV.
• További nagyon fontos jellemzője az egyes alhálózatoknak,
hogy minden alhálózat 2 speciális címmel rendelkezik.
• Minden alhálózat első címe az alhálózati azonosító, mely az
alhálózatot azonosítja.
• Minden alhálózat utolsó címe a broadcast cím, melyet
megcímezve az alhálózat összes gépe megkapja az üzenetet.
• Tehát ha adott egy IP cím pl.: 10.0.0.50, aminek az alhálózati
maszkja 255.0.0.0, akkor a 10.0.0.0 lesz az alhálózati azonosító,
és 10.255.255.255 lesz a broadcast cím.
• Ez a két speciális cím nem osztható ki.
57
IPv4 V.
• Az IP cím osztályok:
• A osztály
• 1.0.0.0 – 127.255.255.255-ig
• Alhálózati maszkja: 255.0.0.0
• Speciális címtartományok:
• 10.0.0.0 – 10.255.255.255 – A osztályú lokális hálózat
címzésére
• 127.0.0.1 – Egy számítógép önmagának visszacímzésére
használt cím (loopback)
• B osztály
• 128.0.0.0 – 191.255.255.255-ig
• Alhálózati maszkja: 255.255.0.0
• Speciális címtartományok:
• 172.16.0.0 – 172.31.255.255 – B osztályú lokális hálózat címzésére
58
IPv4 VI.
• C osztály
• 192.0.0.0 – 223.255.255.255
• Alhálózati maszk: 255.255.255.0
• Speciális címtartományok:
• 192.168.0.0 – 192.168.255.255 – C osztály lokális hálózat címzésére
• D osztály (speciális)
• 224.0.0.0 - 239.255.255.255
• Multicasting-ra fenntartva
• E osztály (speciális)
• 240.0.0.0 - 255.255.255.255
• Speciális címek az internet és speciális épületek címzésére (pl. atomerőművek)
59
IPv4 VII.
• Manapság már nem jellemző az IP címek osztályokba sorolása,
habár elég sok helyen érzékelhető mind a mai napig ennek a
besorolásnak a hatása.
• Mivel így az alhálózati maszkok megadása is szükséges, hiszen
előfordulhat, hogy a 40.234.21.123-as címnek az alhálózati maszkja
255.255.0.0, így megjelenik a CIDR.
• A CIDR (Classless Inter-Domain Routing) segítségével nem kell
osztályokba sorolni a címeket, mely egyszerűsíti a címfelhasználást.
• Notációja az IP cím után egy per jellel megadható, hogy az adott IP
címben hány biten szerepel a netID.
• Az előző esetben: 40.234.21.123/16
60
Feladat VI.
• Határozzuk meg az alábbi IP címekhez tartozó alhálózati
azonosítót, a broadcast címet és a kiosztható címek
tartományát az adott hálózatban:
• 50.0.0.70
• A osztályú cím
• 192.168.20.150
• C osztályú cím
• 60.32.0.52/16
• 200.91.68.42/7
61
Hálózati réteg és IPv4
• További nagyon fontos része a TCP/IP szabványnak, hogy
a hálózati réteg milyen protokollokat támogat IPv4-et
alkalmazva:
• ARP / RARP
• ICMP
• IGMP
• Ezek a protokollok különböző célokból a TCP/IP hálózati
rétegében elérhetőek IPv4 esetén.
62
ARP / RARP
• Az ARP (Address Resolution Protocol) és a RARP (Reverse
Address Resolution Protocol) protokollok címforgatás
céljából szükségesek.
• Az ARP protokoll segítségével egy meglévő IP címhez
tartozó MAC címet tudunk lekérdezni.
• A RARP protokoll segítségével egy meglévő MAC címhez
tartozó IP címet tudunk lekérdezni.
• Ezek a protokollok csak lokális hálózaton használhatók.
63
ICMP
• Az ICMP (Internet Control Message Protocol) egy
diagnosztikai protokoll, melynek segítségével a hálózati
eszközök működése ellenőrizhető.
• Az ICMP által specifikált speciális csomagok közül a két
legismertebb:
• Traceroot (tracert)
• Felderíti, hogy a csomag milyen hop-okon megy keresztül.
• Ping
• Felderíti, hogy a célállomás elérhető-e
64
IGMP
• Az IGMP (Internet Group Messaging Protocol) egy
csoport összefogását segítő protokoll, melynek
segítségével különböző hálózati programok tudnak
csoportokat létrehozni.
• A multicasting kihasználáshoz szükséges protokoll.
• Jellemző felhasználása: VoIP, Video stream, Multiplayer
gaming.
65
Feladat VII.
• Ping-eljük meg a www.ruander.hu szervert, illetve
traceroot segítségével ellenőrizzük az útvonalat is.
• Nézzük meg, hogy milyen IP címekhez milyen MAC címek
tartoznak az alhálózatunkban.
66
IPv6 I.
• Az IPv6 az új generációs IP címek verziója.
• Az IPv6-os címek 128 bitesek, melynek köszönhetően
79228162514264337593543950336-szor annyi címet lehet
kiosztani vele, mint az IPv4-el, azaz ~3,4*1038 címet.
• Bevezetése azért egyre sürgetőbb, mert a legnagyobb WAN
hálózaton, az interneten egyszerre kommunikáló, működő
gépek száma már meghaladja a 4 milliárdot, így nem lehet
mindenkinek IP címet osztani kizárólag IPv4 címtartományban.
67
IPv6 II.
• Az IPv6 címek felépítése 8 tagból áll, minden tagot kettőspont
választ el, és minden tag egyenként egy 4 karakter hosszú
hexadecimális számot tartalmaz.
• pl.: Facebook IPv6-os címe: 2a03:2880:f10c:83:face:b00c::25de
• Az IPv6-os címek esetén további egyszerűsítési lehetőség,
hogy a tagok csupa 0 részét el lehet hagyni amennyiben nem
előzi meg azt bármilyen 0-nál nagyobb helyi érték.
• Pl.:
• …xxxx::xxxx… = …xxxx:0000:xxxx…
• …xxxx:x:xxxx… = …xxxx:000x:xxxx…
68
IPv6 III.
• Az IPv6 további jellemzője az egyszerűsítés is.
• Míg az IPv4 esetén több különböző diagnosztikai, felismerő
protokoll volt jelen. (A fejlődése során kialakultak)
• Addig az IPv6-nál az ARP, RARP, ICMP protokollokat egy közös
protokollba, az ND-be (Neighbor Discovery) tömörítették.
• Az így létrejött protokoll összességében jobban összeszedett
és nem kell különböző protokollokat betartsanak a gyártók.
69
DHCP I.
• A DHCP (Dynamic Host Configuration Protocol) egy protokoll,
melynek segítségével elérhető, hogy ne kelljen minden egyes
hálózaton lévő eszközt külön konfigurálni, hogy milyen IP
címmel kommunikáljanak, a DHCP automatikus IP cím
kiosztást tud megvalósítani.
• A hálózaton lévő DHCP szerver (ami általában az
útvonalválasztó / router is egyben) tudja szolgáltatni a címeket,
ezzel gyors konfigurálási lehetőséget nyújtva az eszközöknek
és biztonságos is, mivel nem lehetséges IP cím ütközés a
hálózaton.
70
DHCP II.
• A DHCP cím kérési mechanizmusa 5 lépésből áll (DORA[A]):
• Discover
• A hálózatra csatolt eszköz broadcast üzentben elküldi a hálózatra, hogy
szeretne IP címet kapni.
• Ekkor a host IP címe még 0.0.0.0
• Offer
• A DHCP szerver amelyik megkapja ezt a kérést, küld egy ajánlatot az
eszköznek, hogy melyik IP-t tudná neki szolgáltatni.
• A szerver unicast üzenetben küldi az ajánlatot, de a válaszban az eszköz
MAC címe benne van, hogy esetleges több egyidejű kérés esetén se
legyen ütközés az eszközök között.
71
DHCP III.
• Request
• Az eszköz, amelyik megkapja az ajánlatot igényt formál az ajánlatban lévő IP
címre.
• Erre azért van szükség, mert előfordulhat, hogy egy hálózaton egy időben több
DHCP szerver is fut, de mivel a Discover üzenetet mindegyik megkapta, így
mindegyik küld egy Offer-t is, azonban az eszköznek csak az egyik IP fog
kelleni, méghozzá a leggyorsabban megérkezett Offer-t küldő szerveré.
• Acknowledge
• A szerver visszaküldi, hogy elfogadja a kérést és bejegyzi magának, hogy
kiosztotta a címet.
• Acknowledge (az eszköz felől, nem kötelező)
• Az eszköz is válaszolhat, hogy rendben van a cím amit kapott.
72
DHCP IV.
73
DHCP V.
• A DHCP-n kiosztott címeken felül további információk is kerülhetnek
kiosztásra:
• Kötelezően kiosztott plusz információ:
• Lease time
• Megadja, hogy az eszköz mennyi időre kapta meg a címet.
• Alhálózati maszk
• Opcionálisan kiosztott plusz információk:
• Alapértelmezett átjáró
• Megadja, hogy melyik eszközön keresztül éri el a külső hálózatot az eszköz.
• Domain szerverek
• Megadja, hogy az eszköz mely domain szervereket használja.
• Tartomány
• Megadja, hogy milyen tartományba került az eszköz.
74
Átviteli réteg
• A TCP/IP protokoll 3. rétege az átviteli réteg, mely az OSI-
modell 4. rétegének feleltethető meg.
• Feladatát tekintve is azonos a réteg feladata.
• Az átviteli réteget TCP rétegnek is nevezzük, mivel az
elsődleges protokoll amit alkalmaz a TCP.
• Természetesen több protokoll is fut ezen a rétegen, a másik
legismertebb és legfontosabb az UDP (User Datagram Protocol)
• Ezekkel a protokollokkal fogunk a következőekben
megismerkedni.
75
TCP I.
• A TCP (Transmission Control Protocol) felelős azért, hogy az
egyes alkalmazások egymás mellett tudjanak kommunikálni a
hálózaton anélkül, hogy egymást zavarnák.
• A TCP egy biztonságos protokoll, mivel az átvitelt olyan módon
szabályozza, hogy minden egyes kiküldött szegmensre választ
vár, és csak akkor küldi a következőt, ha az előzőre
megérkezett a visszaigazolás.
• A TCP 65535 úgynevezett portot szolgáltat, melyeken keresztül
a programok kommunikálhatnak.
76
TCP II.
• Természetesen az egyes eszközök tudnak egymással kommunikálni, de a
legfontosabb lépés a kommunikáció előtt a kapcsolat felépítése.
• TCP/IP hálózatokon ezt egy „három lépéses kézfogás” segítségével lehet
megoldani:
• Szegmensek sorrendje: SYN, SYN/ACK, ACK
• Ezzel a technikával a csatlakozni kívánó eszköz elküld egy szinkronizációs üzenetet
a másik eszköznek, aki ennek hatására ugyancsak visszaküld egy szinkronizációs
üzenetet és egyben elfogadja a kapott üzenetet, melyet a kezdeményező eszköz
elfogad.
• A három lépéses kézfogás nagyon fontos lépés, mivel ezzel tudják szinkronizálni a
küldés sebességét, és az útvonal felépítését az eszközök egymással.
77
TCP III.
• A TCP portjai szabadon felhasználhatók, azonban vannak ún. dedikált
portok, melyek fent vannak tartva bizonyos szolgáltatások használatához.
• Általánosan elmondható, hogy az első 3000 port valamilyen szolgáltatás
dedikált portja.
• Ismertebb portok:
• HTTP – 80
• FTP – 20/21
• POP – 110
• IMAP – 143
• SMTP - 25
• Telnet – 23
• SSH - 22
78
UDP
• A TCP párja az UDP (User Datagram Protocol), melynek
szegmens felépítése szinte teljesen egyforma a TCP
szegmensével.
• A protokoll működése ugyancsak 65535 porton keresztül
működik, melyek különállóak a TCP portjaitól.
• Az UDP abban különbözik a TCP-től, hogy míg a TCP szigorúan
sorrendi küldést valósít meg, addig az UDP nem. Nem vár
visszaigazolást minden egyes szegmens megérkezéséről.
• Ezáltal kevésé biztonságos, ugyanakkor jóval gyorsabb.
79
TCP vs. UDP
80
Alkalmazás réteg
• A TCP/IP alkalmazás rétege olvasztja egybe az OSI-modell viszony,
megjelenítési és alkalmazási rétegét.
• Az alkalmazás réteg ad helyet olyan protokolloknak melyeket az
egyes hálózaton kommunikáló alkalmazások kihasználhatnak.
• Ismertebb protokollok:
• DNS
• HTTP / HTTPS
• FTP / SFTP
• SMTP
• IMAP
• SSH
81
DNS I.
• A DNS (Domain Name System) protokoll egyike a felhasználók
által felhasznált, azonban nem igazán ismert protokollnak.
• A domain nevek, avagy tartományi nevek olyan azonosítók,
melyek segítségével elkerülhető, hogy publikusan elérhető
szerverek IP címeit kelljen megjegyezni, ehelyett sokkal
könnyebben neveket használunk.
www.ruander.hu
Szerver / aldomain Domain TLD
82
DNS II.
• A DNS megjelenésével természetesen nem változik a TCP/IP
alapelve, azaz, hogy minden egyes hálózati eszköz a logikai címe
alapján érhető el.
• A tartományi neveket DNS szervereken keresztül „fel kell oldani”, azaz
meg kell határozni, hogy egy adott domain-hoz milyen IP cím tartozik.
• A DNS feloldási kísérlet sorrendje:
• DNS cache
• HOSTS fájl
• DNS szerver
• DNS szerverek…
83
HTTP / HTTPS I.
• A HTTP (Hyper Text Transfer Protocol) az egyik legszélesebb körben ismert hálózati,
alkalmazás rétegbeli protokoll.
• Felhasználása a különböző WEB-en található tartalmak letöltésére, feltöltésére szokott
történni.
• Egyes elosztott rendszer technikák is erre a protokollra épülnek.
• A HTTP-n 4 féle akció metodika elérhető:
• GET
• Lekérdezés akció.
• POST
• Küldés akció.
• PUT
• Fájl feltöltés akció.
• DELETE
• Törlés akció.
84
HTTP / HTTPS II.
• A HTTP általában a 80-as TCP porton keresztül elérhető.
• Teszteléshez jellemző még a 8080-as port alkalmazása is.
• A HTTPS (Hyper Text Transfer Protocol Secure) a normál HTTP
egy titkosított változata.
• A HTTPS-en kommunikáló felek csatorna titkosítják digitális
aláírással a kommunikációt, így amennyiben lehallgatják a
kommunikációt „sem lehet visszafejteni azt”.
• Manapság egyre inkább a HTTPS kezd alapértelmezett
protokollá válni a HTTP-vel szemben.
• A HTTPS a 443-as TCP porton keresztül elérhető.
85
FTP / SFTP I.
• Az FTP (File Transfer Protocol), illetve annak titkosított váétozata az
SFTP (Secure File Transfer Protocol) egy kifejezetten fájl fel és
letöltésre kifejlesztett TCP átvitel alapú protokoll.
• A TCP átvitel miatt sebessége korlátozott.
• Elsődleges protokoll szervereken való fájlok elhelyezésénél, illetve
letöltésénél.
• Főként fejlesztők, adminisztrátorok részére.
• Használata azért is jellemző, mert könnyen konfigurálható és
rendszer szintű jogosultságokkal és megkötésekkel lehet
kontrollálni a hozzáféréseket.
86
FTP / SFTP II.
• Az FTP és SFTP-n alapvetően két kapcsolódásra képes egy szerver-
kliens páros:
• Aktív
• Ebben az esetben a kliens és a szerver egy kiépített kapcsolaton keresztül
duplex kommunikációt folytat.
• Passzív
• Ebben az esetben a kliens és a szerver egy előre ki nem épített csatornán
kommunikál.
• Ilyenkor a kliens kéréseire reagál a szerver.
• A két működési mód azért szükséges, mert nem minden eszköz lát
ki egyenesen a hálózatra.
• Az útvonalválasztók miatt.
87
SSH
• Az SSH (Secure SHell) egy távoli konzol elérési technika.
• Jelenleg az egyik legelterjedtebb távoli szerver konzol
alapú elérési lehetősége.
• Előnye elődjéhez a TELNET-hez képest, hogy a kapcsolat
titkosított, így a terminál átvétele nem lehetséges a
kommunikáció lehallgatásával.
• Általánosan UNIX / LINUX rendszerek eléréséhez
használjuk.
88
URL
• Az URL (Uniform Resource Locator) az alkalmazás rétegen
található protokollokat futtató szerverek könnyű elérése
érdekében jött létre.
• Segítségével egy egységes cím megadásával a kliens alkalmazás
teljesen pontos leírást kap arról, hogy az adott erőforrás a
hálózaton milyen módon érhető el.
http://www.ruander.hu:80/index.php
Protokoll Szerver elérése (domain / IP) Port (opcionális) Útvonal
JavaScript nyelvi alapjai VI.
• createElement(”Tag”);
• Segítségével létrehozható egy megadott nevű tag.
• Pl.:
• var tag = document.createElement(”p”);
• createTextNode(”Szöveg”);
• Létrehoz egy element szintű szöveget.
• Pl.:
• var szoveg = document.createTextNode(”Helló Világ!”);
• Természetesen a document objektumnak számos további
függvénylehetősége is van még, amikkel mi nem fogunk
foglalkozni.
• További függvények:
• http://www.w3schools.com/jsref/dom_obj_document.asp 21
JavaScript nyelvi alapjai VII.
• A visszakapott, kinyert szerkezeti elemek (Tag-ek) tulajdonságai:
• A JavaScript eléri az összes a HTML-ben használt attribútumot, illetve
tartalmat a következőképpen:
• element.InnerHTML;
• Az aktuális elem belső szerkezeti részét (a kezdő és záró tag közti részt) lehet vele
kiolvasni, vagy módosítani.
• element.attributes;
• A megadott elem összes tulajdonságát lehet vele lekérdezni.
• element.setAttribute(”attribute”,”value”);
• A megadott elem, megadott attribútumának lehet vele értéket adni.
• element.getAttribute(”attribute”);
• A megadott elem, megadott attribútum értékének kiolvasása. 22
JavaScript nyelvi alapjai VIII.
• element.appendChild(tag);
• Belefűz egy létrehozott tag-et egy már létező, meglévő tag-be.
• Pl.:
var pelem = document.createElement(”p”);
var pszoveg = document.createTextNode(”Szöveg”);
pelem.appendChild(pszoveg);
• element.removeChild(tag);
• Kitöröl egy megadott elemet a megadott tag alól.
• element.replaceChild(mire, mit);
• Kicseréli az adott elemet, egy másikra, a megadott elemen belül.
• Természetesen az egyes elemeknek is további beállításai lehetségesek.
• További függvények:
JavaScript nyelvi alapjai IX.
• Metódusok, funkciók:
• Mivel a JavaScript gyengén típusos nyelv, így a funkciók, metódusok
létrehozása és működése eltér az eddig megszokottaktól:
• Akár metódust, akár funkciót szeretnénk létrehozni a function kulcsszó
segítségével tudjuk megoldani:
• function ()
{ …
}
• A funkció és metódus közti különbséget nem kell kód szinten jelölni, csak az
dönti el, hogy van-e visszatérés az adott ágon, vagy nincs.
• Lehetséges olyan funkció írása, aminek bizonyos esetben van visszatérése, és bizonyos
esetben nincs, illetve a visszatérés típusdefiníciója nélkül bármilyen típussal visszatérhet
egy-egy függvény.
JavaScript nyelvi alapjai X.
• Események:
• Mivel a JavaScript eseményvezérlet, így a felhasználói
műveleteket események segítségével tudjuk elérni, azokra azokon
keresztül tudunk reagálni.
• Új események definiálására is van lehetőség (mint ahogy C# alatt
is) azonban ezzel nem fogunk foglalkozni.
• Az eseményekre való feliratkozás a HTML-ben történik a megadott
komponens, megadott eseményén.
• Általában funkciót írunk az eseményekhez.
JavaScript nyelvi alapjai XI.
• Általános HTML-ben kiváltható események:
• A feliratkozás általános formája:
•
onchange Az elem megváltozott.
onclick A felhasználó az elemre kattintott.
onmouseover A felhasználó az elem felé navigált (egérrel).
onmouseout A felhasználó elnavigált az elemről (egérrel).
onkeydown A felhasználó leütött egy billentyűt.
onload A böngésző befejezte az oldal betöltését.
A window objektum
• Segítségével a különböző ablakok megjelenését tudjuk
szabályozni.
• Fontosabb függvényei:
• open(”url”,[”név”], [”paraméterek”]);
• Új lapot nyit, a megadott url-el.
• Az ablaknak név is adható, melyen keresztül elérhetővé válik, így további
komponenseket rakhatunk bele, vagy módosíthatunk benne.
• close();
• Bezárja az adott lapot.
• Csak window objektumnál működik. 29
A window object időzítési lehetőségei:
• window.setInterval(”funkció”, milliszekundumok);
• Mint egy időzítő, az adott funkció x milliszekundumonként le lesz
futtatva.
• window.setTimeout(”funkció”, milliszekundumok);
• Egyszeri időzítés, az adott funkció, egyszer lesz lefuttatva x
milliszekundum után.
JavaScript nyelvi alapjai XV.
• A window object dialógusai:
• window.alert(”Szöveg”);
• Egy szimpla figyelemfelhívás dialógus ablak, egy oké gombbal ellátva.
• window.confirm(”Kérdés”);
• Egy döntési ablak, Ok és Mégsem gombokkal ellátva.
• window.prompt(”Kérdés”, [”Alapértelmezett válasz”]);
• Egy InputBox, adatot lehet vele bekérni.
Alprogramok tovább vezetése I.
• Az előzőekben már láthattuk, hogy a JS alapvetően is a
procedurális logikára épül.
• A procedurális logikában azonban vannak további
részegységek melyek elengedhetetlenek annak mélységi
felhasználásához:
• Névtelen funkciók
• Opcionális paraméterek
• Események kezelése programkódból
2
Névtelen funkciók I.
• A névtelen, vagy anonymous funkciók használata a
JavaScript-ben egy teljesen általános megoldás.
• A JS alapvetően a programkód hordozását nem teszi
lehetővé, így abban az esetben ha egy megadott helyen
dinamikus programkód átadásra van szükség, ott helyben
is definiálhatjuk az alprogramot ami a funkcionalitást
fogja adni.
3
Névtelen funkciók II.
• A névtelen funkciók, ahogy nevükben is benne van olyan
funkciók melyeket prompt definiálva használunk és
ezáltal nem szükséges elnevezni őket.
• A felépítése két féleképpen is lehetséges:
• Normál felírásban:
• function() {…}
• Lambda kifejezés logikával:
• () => {…}
4
Eseménykezelés programkódból I.
• A névtelen funkciók azért is fontosak, mert az eddigi HTML
alapú eseményekezelést fel tudjuk váltani jóval egyszerűbb,
programkód szintű megoldásra.
• Az eddigi megoldásunk keretében egy tetszőleges HTML DOM
elem on… attribútumán keresztül tudtunk feliratkozni egy
eseményre egy általunk előre megírt funkcióval.
• A kód szintű megoldás keretében a DOM elemet JS-ben
elkapjuk és úgy iratkozunk fel rá.
5
Eseménykezelés programkódból II.
• Az eseménykezelés kontrollálása programkódból
alapvetően két dolog miatt hasznos:
• Egyrészt nem vagyunk a HTML szerkezetre utalva, a
programkód elkülönülhet a HTML részektől.
• Másrészt a programkód szinten lehet vezérelni, hogy mikor
melyik esemény milyen formában legyen lekezelve.
• Az eseménykezelés alapvető működése természetesen
ettől nem változik és nem zárja ki ez a megoldás a HTML
alaú felhasználást sem.
6
Eseménykezelés programkódból III.
• A feliratkozás formája:
• A kifejtett újabb megoldás:
• var = document.GetElementById();
.addEventListener(””, function()
{
//esemény lekezelése
}, false); //Nem adunk meg extra paramétereket alapértelmezetten
• Az attribútum alapú megoldás:
• var = document.GetElementById();
.on = function() {/*esemény lekezelése*/};
7
Eseménykezelés programkódból IV.
• Az előző két példa technikailag megegyezik eredmény
szempontjából, az addEventListener alapú megoldás az
újabb és „szebb megoldás”.
• A második megoldás valójában abból adódóan működik,
hogy JS alól a DOM elem összes attribútuma elérhető,
így ha az onclick pl. bejegyezhető DOM szinten akkor JS
szinten is attribútumként.
Opcionális paraméterek I.
• Az alprogramok további fontos tényezője a
paraméterezés.
• Az alprogramok esetében a paraméterek megadása
fontos, hiszen ezen keresztül tudunk adatokat átadni a
futáshoz.
• Előfordul azonban, hogy bizonyos paraméterek nem
kötelezően kitöltendők, így időt is spórolhatunk és futást
is stabilizálhatunk - (helytelen funkció paraméterezések)
10
Opcionális paraméterek II.
• Az opcionális paraméterek alkalmazása JS-ben hasonlóan
a többi nyelvhez igen egyszerűen kivitelezhető,
mindössze értéket kell adni a paraméternek a listában:
• function ( = <érték>,…) {…}
• Természetesen a paraméterezésben továbbra is lehetnek
fix paraméterek az opcionálisok előtt, utánuk már fix
paraméternek nem lenne értelme, hiszen a sorrend
összekuszálódna.
11
Opcionális paraméterek III.
• Példa:
• function osszead(a, b = 42)
{
return a + b;
}
• A JS alapvetően megengedő, így ha egy paraméter nem
opcionális, de nem adjuk meg sem lesz belőle hiba!
• Mindössze undefined lesz az értéke.
Opcionális paraméterek IV.
• A funkción belül az arguments jelölővel lekérdezhetjük az
összes beérkező paramétert, így programozottan is tudjuk
kezelni a paramétereket.
• function osszead(a, b = 42)
{
a = (arguments.length == 0) ? 1 : a; //a értéke eddig
undefined, mivel nem érkezett paraméter, ha így van akkor 1-re
állítjuk.
return a + b;
}
A Prototípus-orientált programozás IV.
• A prototípus létrehozása egyszerű, egy speciális funkciót
hozunk létre:
• function ()
{
this. = ;…
}
• Ezzel létrehoztunk egy új prototípust, mellyel tudunk
létrehozni tetszőleges adatokat.
19
A Prototípus-orientált programozás V.
• Például:
• function Auto(rendszam, marka, tipus)
{
this.rendszam = rendszam;
this.marka = marka;
this.tipus = tipus;
}
• A létrehozás:
• var auto1 = new Auto(”ABC-123”, ”AUDI”, ”A4”);
var auto2 = new Auto(”ABC-321”, ”Suzuki”, ”Swift”);
20
A Prototípus-orientált programozás VI.
• Természetesen lehetnek fixen megadott elemek is a
prototípusban:
• function Auto(rendszam, tipus)
{ this.rendszam = rendszam;
this.marka = ”Suzuki”;
this.tipus = tipus;
}
• var auto1 = new Auto(”ABC-321”, ”Swift”);
var auto2 = new Auto(”ABC-132”, ”SX4”);
• Minden autó Suzuki tehát ebben az esetben.
21
A Prototípus-orientált programozás VII.
• A prototípusokhoz lehet funkciókkal is bővíteni:
• function Auto(rendszam, tipus)
{ this.rendszam = rendszam;
this.marka = ”Suzuki”;
this.tipus = tipus;
}
• Auto.prototype.teljesNev = function()
{ return this.marka + ” ” + this.tipus;
}
• A prototype segítségével férünk hozzá egy meglévő prototípus szerkezetéhez
A Prototípus-orientált programozás VIII.
• Prototípusokat természetesen létre lehet hozni prompt
megoldás keretében is, ilyenkor maga az objektum jön
közvetlenül létre, melyet azonnal fel is töltünk adattal:
• var auto1 =
{
rendszam : ”ABC-123”,
marka : ”AUDI”,
tipus: ”A4”
};
A Prototípus-orientált programozás IX.
• Ugyan ritka, de ilyenkor természetesen ugyan úgy lehet funkciókat
is társítani a rendszerhez:
• var auto1 =
{ rendszam : ”ABC-123”,
marka : ”AUDI”,
tipus: ”A4”,
teljesNev: function()
{ return this.marka + ” ” + this.tipus;
}
};
A Prototípus-orientált programozás X.
• Az utóbbi eset azért ritka, mert a prompt létrehozott
anonym prototípusok általában azért jönnek létre, hogy
adatokat strukturáltan hordozzunk bennük.
• A prototípusok anonym létrehozásának felépítése a JSON
leíró nyelv logikájának megfelelően működik.
• A JSON (JavaScript Object Notation) – JavaScript objektum
jelölő.
JavaScript adatszerkezetei I.
• A JavaScript ugyan gyengén típusos nyelv, ugyanakkor
működéséhez elengedhetetlen néhány komplexebb
adatszerkezet, melyek beépítetten rendelkezésre állnak
benne:
• Tömb
• Halmaz
• Szótár
• Ezeket fogjuk megnézni a következőkben.
JavaScript tömb I.
• A JS-ben a tömb adatszerkezet, mint a legtöbb
programozási környezetben egy indexelhető és bejárható
adatszerkezet.
• Természetesen gyengén típusos nyelv lévén a tömböknek
nincs konkrét mérete és típuskötése sem.
• A tömb létrehozása egyszerű, mindössze [] közé kell
felsoroljuk az adatokat, illetve implicit módon a rendszer
létre is hozza nekünk, ha indexelünk egy változót.
JavaScript tömb II.
• Példa – indexelt létrehozás:
• var tomb = [];
tomb[0] = <érték1>;
tomb[1] = <érték2>;
tomb[2] = <érték3>;
• Példa – előre feltöltött megoldás:
• var tomb = [<érték1>, <érték2>, <érték3>];
• A tömbök tehát tetszőleges típusúak lehetnek és szabadon
bővíthetők.
JavaScript tömb III.
• A tömbök-nek a hosszát a length tulajdonságon keresztül kérdezhetjük le.
• Bejárásuk pedig több formában is lehetséges:
• For ciklus:
• for(var i = 0; i < tomb.length; i++)
{ //tomb[i] felhasználása
}
• Illetve létezik beépített funkcionális forEach
• tomb.forEach(function(value)
{ //value feldolgozása
});
• Mindkettőt szabadon használhatjuk.
JavaScript tömb IV.
• Tömbből a delete parancs segítségével tudunk törölni.
• Fontos, hogy a delete törli az adott elemet a tömbben,
de a tömb nem változik meg indexelése szempontjából,
így az indexek megmaradnak, csak lyukacsos marad a
tömb.
• delete [];
34
JavaScript – Halmaz I.
• A halmaz, mint matematikában itt is egyedi elemek
tárolója.
• Nem lehet benne duplikált elem, melyet kifejezetten
akkor szoktunk alkalmazni, ha egy olyan adatszerkezetet
szeretnénk kialakítani, amiben az egyes elemek csak
akkor jelenhetnek meg, ha nem egyformák.
• Felhasználása ritka ugyanakkor hasznos lehet.
35
JavaScript – Halmaz II.
• Használata:
• var halmaz = new Set();
halmaz.add(); // Hozzáad egy elemet a halmazhoz
halmaz.delete(); //Törli az adott elemet a halmazból
halmaz.has(); //Megadja, hogy ilyen elem van-e már a
halmazban
halmaz.clear(); //Törli az összes elemet halmazból
halmaz.size megadja, hogy hány elem van a halmazban
JavaScript – Szótár I.
• A szótár egy másodlagos indexelési lehetőséget biztosító
adatszerkezet.
• A Szótár valójában kulcs-érték párosokat tárol, melyeket fel
tudunk használni.
• Segítségével egy bármilyen adat egy tetszőleges másik típusú
adattal jelölhető mint kulcs, ezáltal könnyebb később megtalálni.
• A kulcsok közti kereséssel pedig az adatokat visszakaphatjuk.
38
JavaScript – Szótár II.
• Használata:
• var szotar = new Map();
szotar.set(,<érték>); // Hozzáad egy kulcs-érték
párost a szótárhoz
szotar.delete(); //Törli az adott elemet a szótárból
szotar.has(); //Megadja, hogy ilyen kulcs van-e már a
szótárban
szotar.clear(); //Törli az összes elemet szótárból
szotar.size megadja, hogy hány elem van a szótárban
Reguláris kifejezések II.
• A reguláris kifejezéseket alapvetően 3 dologra használjuk:
• Szöveg mintaillesztése
• Meg tudjuk állapítani, hogy egy szöveg megfelel-e egy adott
mintának, vagy van-e benne olyan rész ami megfelel annak.
• Szöveg keresése
• Meg tudjuk keresni azt a szöveget, vagy azon részeket amik
megfelel egy mintának.
• Szöveg bontása
• Szöveg bontása a minta szerinti tördelőpontoknál.
Reguláris kifejezések III.
• A reguláris kifejezések általános formális leírást tesznek
lehetővé a legtöbb programozási környezetben, ennek
megfelelően szinten minden programnyelv rendelkezik
reguláris kifejezés értelmező részegységgel, így a
JavaScript is.
• Az egyes programnyelvek tekintetében a felírásban
lehetnek eltérések, de a főbb funkciók és leírások
azonosak.
Reguláris kifejezések IV.
• A reguláris kifejezések alap formátuma JS-ben:
• .search(minta);
• Megadja, hogy a minta hol található meg a szövegben, ha megtalálható
egyáltalán benne.
• .replace(minta, ””);
• Megadja a minta szerint, hogy mit kell ki cserélni a szövegben és mire.
• .test(””);
• Megadja, hogy az adott szöveg megfelel-e a mintának.
• A JavaScript a reguláris mintákat függvényként kezeli, így nem
szövegesen kell kezelni a mintákat.
Reguláris kifejezések V.
• A kifejezések megírása:
• A kifejezéseket minden esetben /…/ (per jelek között) kell megírni.
Pl.: /[abc]+/
• Kifejezés módosítói:
• i kis-nagy betűk figyelmen kívül hagyása (case insensitive)
• g globális találatok, ne álljon meg az első találat után
• m több soros keresés, keressen tovább az enter után is
(multiline)
• Felhasználási példa: /…/ig
Reguláris kifejezések VI.
• Reguláris opciók:
• [] / []
• A jelölt helyen a megadott karakterek szerepelhetnek
• Példa:
• [abc] a jelölt helyen a, b, vagy c lehet
• [a-z] a jelölt helyen a-z-ig bármi lehet
• ( | )
• A jelölt helyen az egyik, vagy a másik formula is lehet.
• Példa: /(a | b)/g a, vagy b karakterek keresése
Reguláris kifejezések VII.
• Jelölő karakterek:
• \d egy bármilyen szám karakter keresése
• \s egy szóköz keresése
• \b valaminek azzal kell kezdődnie, hogy (Begining with)
• \u megadott Unicode karakter keresése
• . a jelölt helyen egy bármilyen karakter lehet, kivéve
sortörés.
• Példa:
• /\d/g –y megadja milyen számok vannak a szövegben egyesével.
Reguláris kifejezések VIII.
• A formulákban mennyiségi megadások:
• + a jelölt helyen legalább 1, de azt követően több ugyan olyan
formátumnak megfelelő karakter is lehet
• * a jelölt helyen több ugyan olyan formátumnak megfelelő
karakter is lehet, akár 0 is.
• ? a jelölt helyen legfeljebb egy karakter fele meg a formulának.
• Példa:
• „1200 Ft.” | a formula: /\d/g 1,2,0,0
• „1200 Ft.” | a formula: /\d+/g 1200
Reguláris kifejezések VIII.
• Speciális jelölők:
• ^ a megadott formula csak a szöveg elejétől értelmezhető,
belsőleg nem.
• Példa: „Az összeg: 1200 Ft.” | a formula: /^\d+/ nem ad vissza semmit.
• $ a minta végén a szövegnek is véget kell érnie.
• Példa: „Az összeg: 1200 Ft.” | a formula: /\d+$/ nem ad vissza semmit.
• (?=) opciós csoport, az adott helyen lehet ilyen is, de
nem lesz elkapva, tehát olyan csoport ami kitöltheti a formulák
közti helyet.
• Példa: „a 12 EMBER” /[a-z]+(?=\d+)[A-Z]+/
XML feldolgozás I.
• JavaScript-ben is fontos, hogy egy távoli kommunikáció (AJAX
hívás) során visszatérő strukturált adatot megfelelően fel
tudjon dolgozni.
• Az XML a világ egyik legelterjedtebb adatleíró nyelve, melyen
keresztül a kommunikáció lehetséges két végpont között.
• Így egyértelmű, hogy a JS-nek a HTML alapjául is szolgáló
XML-hez kell rendelkezzen beépített feldolgozóval.
XML feldolgozás II.
• Az XML feldolgozása valójában nem is annyira nagy
kihívás a JS-nek, hiszen a HTML is egyfajta XML, így a
megoldás is annak megfelelően fog alakulni.
• A JS beépített XML feldolgozója a DOMParser, ami
lényegében teljese mértékben azonos funkcionalitással
rendelkezik mint a HTML feldolgozója (az is egyfajta
DOMParser)
XML feldolgozás III.
• Az XML feldolgozása igen
egyszerű tehát, ha adott egy
szöveges állomány amiben a
megkapott XML formátumú adat
szerepel.
• A feldolgozás után indulhat az
XML szétszedése.
• Példa:
var xml = "";
var feldolgozo = new DOMParser();
xmlDoc =
feldolgozo.parseFromString(xml,
"text/xml");
XML feldolgozás IV.
• A feldolgozás után kezdődhet az adatok
szétszedése.
• Alapvetően a logika szinte azonos a
document prototype használatával,
mindösszesen itt az id és class nem
alapértelmezett szűrők a felhasználás
során.
• A childNodes segítségével lekérdezhetjük
egy elem alá tartozó node-okat
• A nodeValue pedig az adott node belső,
szöveges értékét adja vissza.
JSON feldolgozás I.
• A JSON (JavaScript Object Notation) egy hasonló
feladatra kialakított leíró nyelv mint az XML.
• Szerkezetét tekintve az XML-el szemben terse
leírónyelvnek minősül, ami azt jelenti, hogy a tömörítő
nyelvek családjába tartozik (csak úgy mint programozási
nyelvek tekintetében a C alapú nyelvek)
• A JSON elterjedésének fő oka a szerkezeti egyszerűsége.
JSON feldolgozás II.
• A JSON alapvetően 3 szerkezeti elemre épül:
• Az object
• Jelölése: {…}
• Olyan komplex objektum mely más komplex és nem komplex adatokat
tartalmazhat.
• A tömb:
• Jelölése: […, …, …]
• Tömbösített adatok tárolására kialakított elem.
• Az attribútum:
• Jelölése: : <érték>
• Valójában maga a változó / adattároló megjelenítése a nyelvben.
JSON feldolgozás III.
• Minden JSON fájl kapcsoszárójelek közötti adatokat
fognak tárolni. ({…})
• Ennek oka, hogy a JSON legfelsőbb szintje egy objektum kell
legyen, ami akár egy hipotetikus objektum is lehet, de abba
kell beletartozzon minden – hasonlóan az XML root node-
jához.
• A JSON fájlt, ugyan úgy mint az XML fájlt, szimpla text-
ként értelmezzük.
JSON feldolgozás IV.
• A JSON felépítésében tehát a cél,
hogy a natív elemeket szimpla
értékként, a belső objektumokat
JSON object-ként és a belső
tömböket JSON array-ként
tároljuk.
• Így egy teljes objektum tárolható.
{
"type": "basket",
"beans": 47,
"apples": 7,
"oranges": 23,
"brand": "ConvertSimple",
"ratio": 33.9,
"fees": {
"cleaning": "$4.50",
"baking": "$27.30",
"commission": "$93.10"
},
"descriptors": ["clean", "fresh", "juicy",
"delicious"]
}
JSON feldolgozás V.
• JavaScript-ben a JSON felhasználása alapvetően egy igen
egyszerű folyamat, hiszen a nyelvhez készült kifejezetten.
• Mivel alapvetően objektumok szerializációjára használjuk,
így a nyelv automatikusan le tudja generálni az
objektumok belső szerkezeti felépítményét JSON-ben és
vissza is tudja építeni azt.
• A prototípusok szerkezete pedig így könnyen menthető,
továbbítható stb. szövegesen.
JSON feldolgozás VI.
• A JSON-t természetesen manuálisan is fel lehet dolgozni
ha szükséges, akár az XML-t habár beépített feldolgozó
alapvetően nincs rá – küldő megoldás viszont létezik és
létre is hozható.
• Azonban az esetek nagy részében erre nincs szükség,
hiszen a belső adatok előállítása és kimentése 1-1
függvénnyel megoldható a JSON segítségével.
JSON feldolgozás VII.
• A JavaScript JSON prototípusa:
• JSON.parse("JSON");
• Egy megadott JSON anyagot konvertál belső objektumokká
• JSON.stringify();
• Egy megadott objektumot alakít JSON formátumúvá.
• Ezzel a két függvénnyel lehet ide-oda konvertálni a JS
belső objektumait.
Aszinkron JavaScript II.
• Az aszinkron megoldásokhoz fontos megkötések:
• A végrehajtási sor alapvetően nem teljesen szekvenciális. Ezt már
eddig is tapasztalhattuk, hiszen az alprogramok megírási helye
nem befolyásolja azok lefutását, tehát a szekvenciális lefutás csak
a hívási sorban jelentkezik, nem a programkódban.
• A másik fontos megkötés, hogy a programkódnak hordozhatónak
kell lennie. A hordozhatóság legkisebb egységének pedig az
alprogramnak kell lennie.
• Ez sem újdonság az eddigiekhez képest, hiszen az eseményvezérlés és az
anonim függvények is Callback logika mentén működtek.
Aszinkron JavaScript III.
• A JavaScript-ben jelenleg két alapvető párhuzamosítási
általános megoldás található meg:
• Promise (ígéret)
• Async/Await – nyelvi szintre emelt Promise
• Ezzel a kettővel lehet párhuzamosan végrehajtatni
általános kódokat – tehát nem timeout, vagy hasonló
specifikus megoldások esetében szoktuk használni.
Aszinkron JavaScript IV.
• A Promise, avagy ígéret a nevét onnan kapta, hogy egy
olyan aszinkronos futtatóról van szó, mely Callback
függvények segítségével jelzi vissza, hogy valami sikeres,
avagy sem, így biztosan kapunk választ.
• Valójában egy köztes réteg, ami eltakarja az aszinkron
megoldás hátterét és összekapcsolja a szinkronos kódot az
aszinkronossal.
• Egy igen jól felhasználható eszköz párhuzamosításra.
Aszinkron JavaScript V.
• A Promise egy prototype, melyet létre
tudunk hozni és meg tudjuk adni
benne a párhuzamosan futtatandó
kódot.
• A Promise-nak létrehozáskor egy
speciális függvényre van szükséges,
ami két funkciót vár:
• Az egyik akkor fut le a végeredményt
hordozva, ha minden rendben volt
• A másik pedig ha hiba lépett fel.
• Példa:
var prom = new Promise(function(megoldva,
hiba)
{ megoldva(); //amikor sikerült
hiba(); //amikor nem sikerült
});
//…
prom.then(
function(eredmeny) { /*…*/ },
function(hibaEredmeny) { /*…*/ }
);
Aszinkron JavaScript VI.
• A promise-t használhatjuk
szekvenciális aszinkron
ütemezőnek is, mivel minden
then(…) alprogramnak is Promise a
visszatérése.
• Így többször is futtathatjuk akár
más visszajelzésekkel az aszinkron
programot.
• Példa:
var prom = new Promise(function(megoldva,
hiba)
{
megoldva(); //amikor sikerült
hiba(); //amikor nem sikerült
});
//…
prom
.then(megoldva1Func, hiba1Func)
.then(megoldva2Func, hiba2Func)
.then(megoldva3Func, hiba3Func)
.then(megoldva4Func, hiba4Func);
Aszinkron JavaScript VII.
• A Promise objektum a then-en
kívül még két másik alprogrammal
is rendelkezik:
• catch elkapja általánosan a
hibákat.
• finally lekezeli, hogy mi történjen
ha akár hiba, akár minden rendben
végbement.
• Példa:
var prom = new Promise(function(megoldva,
hiba)
{
megoldva(); //amikor sikerült
hiba(); //amikor nem sikerült
});
//…
prom
.then(megoldva1Func)
.then(megoldva2Func)
.then(megoldva3Func)
.then(megoldva4Func)
.catch(hibaGlobalFunc)
.finally(vegezetulGlobalFunc);
Aszinkron JavaScript VIII.
• A Promise-nak van egy pár „flow control” funkciója is:
• Promise.all() bevárja a tömbként átadott
Promise objektumokat és egy tömbként adja vissza azok
eredményét.
• Promise.any() bevárja az első lefutó Promise-t
a megadottak közül és annak eredményét adja vissza.
• Promise.race() bevárja az első lefutó, vagy
hibára futó Promise-t a megadottak közül és annak eredményét,
vagy hibáját adja vissza.
Aszinkron JavaScript IX.
• Természetesen az előző funkciókat is futtatni kell, a then-
el, hiszen egy keret Promise-ba rakjuk a többi Promise-t:
Aszinkron JavaScript X.
• A Promise-nak idő közben lett egy nyelvi szintű
alternatívája az async-await.
• Az async-await teljes mértékben ugyan úgy működik
mint a Promise (hiszen valójában az is), a különbség,
hogy nyelvi szinten került implementációra.
• Ennek megfelelően az async-await valójában nem új, csak
másabb megoldás az eddigiekhez képest.
Aszinkron JavaScript XI.
• A felhasználása igen egyszerű, egy
async függvény mindig Promise
objektummal tér vissza, amit
szekvenciális oldalon bevárhatunk.
• Ennek megfelelően ez inkább csak
egy egyszerűsítés, mint sem egy
önálló működésű párhuzamosítás.
• Példa:
async function funkcio()
{
return "Helló világ!";
}
//Ezt bevárhatjuk akár úgy is, mint egy
Promise‐t:
funkcio.then(…);
//De nyelvi szinten is:
var eredmeny = await funkcio();
A git felhasználása II.
• A git telepítése után, az első dolgunk, hogy meg kell
adni, hogy az adott user (aki használja a git-et) globálisan
kicsoda.
• Alapvetően a lépés kihagyható, de ebben az esetben
külön gondoskodni kellene róla minden egyes
alkalommal, hogy megadjuk, hogy ki hozta létre az adott
verziót, ami körülményes és nem is túl kifizetődő
hosszútávon.
A git felhasználása III.
• A git felhasználó megadása:
• git config --global user.name ”felhasználó”
• git config --global user.email ”email cím”
• Ezek után vissza is lehet nézni a konfigurációt:
• git config --global --list
• Itt látszódnia kell a felhasználónknak miután létrehoztuk.
• Ezek után már elkezdhetjük a felhazsnálást.
A git felhasználása IV.
• Amikor egy git-elt verziókezelést szeretnénk végrehajtani,
az első lépés, hogy létre kell hozni a verziókezelési alapot.
• Ez lesz a master repo, amely a kezdeti állapottól adja a
főszálat, mely a fő verziókezelési vonalat mutatja.
• A repo a repository-nk lesz, mely azt vezeti, hogy melyik
verzió mit változatott az előzőhöz képest. Természetesen az
első repo a legnagyobb, a többi ennek a módosulata lesz.
• A létrehozásnál az alap fájloknak már érdemes léteznie.
A git felhasználása V.
• A master létrehozása:
• Be kell navigáljunk a mappába a cd parancs segítségével.
• Pl.: cd ”útvonal”
• Majd inicializáljuk a repository-nkat
• git init
• Ez automatikusan létrehozza az adott szinten a git repository-nakt.
• A létrehozás után a mappában jelenleg található mappák
és fájlok automatikusan nem feltétlen kerülnek bele a
repo-ba.
A git felhasználása VI.
• Az, hogy jelenleg az adott repo pontosan mit tartalmaz
és hogy áll lekérdezhető:
• git status
• Ez megadja az adott repo-ra vetítve (az adott mappában
lévő repo-t figyelembe véve), hogy áll az adott repo.
• Itt azt is láthatjuk, hogy mely fájlok, hogy állnak
(kihagyva, friss, vagy láthatóan módosult)
A git felhasználása VII.
• Ha valami hiányzik a repo-ból és szeretnénk hozzáadni, akkor
azt manuálisan kell megtegyük:
• git add
• Ha mindent szeretnénk hozzáadni: git add -A
• Ezek után a git status már jelezni is fogja, hogy mit lát ezek
után a mappában.
• Természetesen előfordulhat, hogy valamire még sincs szükség
a repo-ban (pl. egy almappa, vagy egy fájl valahol)
A git felhasználása VIII.
• Ha valamit szeretnénk kivenni a repoból:
• git rm --cached
• git reset
• A git reset kiveszi az indexből, de nem távolítja el a repo-ból – tehát
innentől nem veszi figyelembe a rendszer, a git rm viszont kitörli a
repo-ból.
• Mindezek mellett megadható az is, hogy valamit eleve ne
vegyen figyelembe a git a jövőben.
A git felhasználása IX.
• A kivétel létrehozása:
• Az adott mappában, ahonnan
valamilyen szabályt szeretnénk
érvényesíteni (pl. az exe fájlok ne
kerüljenek a repo-ba innentől lefele)
létrehozunk egy .gitignore fájlt.
• A .gitignore fájlba megadható, hogy
mit és hol ne vegyen figyelme az adott
szinten és alatta a git.
• Ami elé „!” jelet teszünk az pont az
ellentétje, tehát azt ne zárja ki.
• Példa a fájl tartalmára:
*.exe
/debug
/config/*.log
!/config/main.log
A git felhasználása X.
• Ha már hozzáadtuk a „figyelési listához” a fjálokat amiket
most már szeretnénk kivenni, akkor az indexből először is
törölni kell őket:
• git rm --cached
• Többet nem is fogja feldobni a git, hogy ezek esetleg
hozzáadhatók lennének a repo-hoz.
• Amíg viszont nem töröljük a gitignore-t nem fogja a rendszer
érvényesíteni.
A git felhasználása XI.
• Miután összeállt a végleges fájl/mappa lista amit
szeretnénk a repo-ba elrakni akkor létre kell hozni a repo
(első) zárását.
• git commit –m ””
• Ezzel létrejön egy verzió (első esetben az alap verzió).
• Innentől természetesen monitorozni lehet, hogy mi lett a
végeredmény a status lekérdezésével.
Git visszavonás I.
• Természetesen a verziókezelés mit sem érne, ha nem tudnánk
egy előző verzióra visszaállni, vagy kivenni az előzményekből.
• A kivételhez, ahol csak valamit ki akarunk hagyni,
természetesen a git commit id-ját tudni kell.
• Ehhez tudnunk kell a git commit-okat amik eddig megtörténtek:
• git log –oneline
• Itt látnunk kell az eddigi commit-okat és minden commit az
első része maga az ID.
Git visszavonás II.
• A kihagyandó elemet ezek után egyszerűen ki lehet venni:
• git revert
• git revert --no-edit
• Így nem kérdez rá a git, hogy egy újabb commit szöveget adj meg.
• Ez tehát azt a commit-ot, ami abban a commit-ban történt,
eltűntettük, de minden utána lévő commit megmarad.
• Természetesen teljesen visszatérhetünk előző változatokhoz,
ebben az esetben vagy elemenként visszalépdelünk, vagy
eleve visszalépünk valahova.
Git visszavonás III.
• Az commit-onként való lépdelés logikája, ha valamilyen
megoldást keresünk, valami egy ideje nem működött pl. és mi
azt keressük, hogy ez mióta áll fent.
• Amennyiben viszont, csak vissza akarunk lépni egy előző
változatra úgy, hogy az összes előző változatot ki akarjuk
hagyni, mert pontosan tudjuk, hogy az utolsó N commit-ot
kell elhagyjuk:
• git reset --soft HEAD~
• Ahol a helyére kell egy számot megadni, hogy az utolsó hány
commit legyen visszavonva.
Git visszavonás IV.
• Minden esetre a visszavonással minden esetben vigyázzunk,
mert a visszavonás az esetek nagy részében már nem
visszavonható!
• A legjobb megoldás, hogy egy repo másolatban állunk vissza
egy előző változatra és amennyiben úgy találjuk, hogy minden
jó a visszaállás után utána törölhetjük a rossz irányba elszaladt
repo-nkat.
• Illetve fontos, hogy a visszavonás előtt ne legyen módosítás az
indexben (git status legyen üres a várakozások tekintetében).
Git mellékágai I.
• A verziókezelés további fontos része a próbálkozás.
• Most már oda-vissza tudunk lépdelni a verziókban, de
vannak esetek amikor csoportok együtt működése, vagy
próbálkozások során előfordulhat olyan, hogy egy
mellékágat kell kezeljünk.
• A mellékágakkal két feladatunk lehet alapvetően:
• Leválasztani
• Összefűzni
Git mellékágai II.
• A leválasztás (branching) egy elágazás, melynek
keretében egy adott pontról kiindulva tudunk új ágat
indítani.
• Ebben az ágban bármit csinálunk nem módosítja a
kiinduló ágat, így ebben szabadon próbálkozhatunk,
szabadon beemelhetünk csapatmunkában elvégzett
részeket mindenféle kockázat nélkül.
Git mellékágai III.
• Az ág elindítása egyszerű:
• git branch
• Ezzel létrejön egy új branch amelyikből megadjuk, amin
tudunk dolgozni attól a ponttól kiindulva.
• A létrehozás után természetesen át is kell állni az ágra.
• Az ágak között a git checkout segítségével mozoghatunk:
• git checkout
• Természetesen a „main” név használatával tudunk a főszálra visszaállni.
Git mellékágai IV.
• A git checkout –b opcióval akár átlépéssel egybekötött
átlépést is tudunk tenni:
• git checkout –b
• A checkout parancs az adott mappában lévő repo-t arra a
branch-re állítja be amit kiválasztunk, így ezzel vigyázni
kell mielőtt ide-oda lépdelünk.
• Természetesen branch-ből is indítható további branch,
tehát nem csak a főág ágaztatható le.
Git mellékágai V.
• Természetesen amikor egy ágban elérünk egy véglegesnek
mondható verziót, akkor összeolvaszthatjuk a nyitóággal:
• git merge
• A forrás ágon kell álljunk és abba fogja beolvasztani a másik
ágat.
• Pl.:
• git checkout main átállunk a főágra
• git merge mellekag behúzzuk a mellékágat
Git mellékágai V.
• Az összevonás során egyetlen probléma léphet fel, ha
conflict van a két ág között.
• A conflict akkor jöhet létre, ha a két ágon közben egymásnak
ellentmondó commit-ok mentek le egyező fájlokra
vonatkozóan.
• Ilyenkor a merge során fel fogja dobni, hogy ezeket látja
a két fájlban melyik maradjon meg.
A Git online eszközei V.
• Amikor szeretnénk egy Git commit-ot feltölteni a
szerverre azt a push parancs segítségével lehet
megoldani.
• git push
• A lokális ág megadása nem kötelező, ha a master-t szeretnénk
feltölteni.
• Amennyiben a célágra mindenképpen szeretnénk feltölteni a
commit-ot, akkor is ha bármilyen ütközés lenne:
• git push --force
A GitHub használata
Lehetőség és opciók a GitHub-on
Kis Balázs 14
A GitHub használata I.
• A GitHub a világ egyik legnépszerűbb Git alapú verziókezelő és
táv kód menedzsment eszköze.
• 2008-as indulását követően gyorsan terjedni kezdett, mivel a
nyílt forráskódú projekteknek nyújtott tárolási és verziókezelési
szolgáltatásokat.
• 2018-ban a Microsoft felvásárolta a GitHub-ot és még
népszerűbbé tette azáltal, hogy már zárt projekteket is
ingyenesen lehet rajta létrehozni.
• Mára több mint 84 millió fejlesztő, több mint 200 millió repo-ja
van rajta.
A GitHub használata II.
• A GitHub a szimpla online Git repo tároláson kívül
rengeteg opcióval rendelkezik.
• A népszerűbbek:
• Dokumentáció létrehozása
• Projekt fejlesztői oldalának létrehozásával
• Probléma kezelési megoldásokkal
• Analitikai elemzésekkel
A GitHub használata III.
• A GitHub-on Markdown leíró segítségével lehet
dokumentációt létrehozni.
• A Markdown egy dokumentum leíró nyelv (célja hasonló mint
a HTML-nek volt eredetileg), amely kifejezetten formázott
dokumentumok szövegesen jelölt változatát hozza létre.
• A projekt fejlesztői oldalát is létrehozhatjuk, ahol
alapvető dolgokat, telepítés, felépítés menetét, esetleg
tutorial-okat is publikálhatunk.
A GitHub használata IV.
• A probléma kezelés (Issue Handling) is egy fontos része a
GitHub-nak.
• Lehet felvenni hibajegyet, vagy módosítási igényt, melyről a
fejlesztő csapat értesítést kap, majd ezt egy fórum jelleggel át
lehet beszélni és lehet jelölni is végül, hogy valami
implementálásra, javításra került, vagy nem.
• És végül az analitikai elemzések, melyek a kódbázist, a kód
tisztaságát, a fejlesztés gördülékenységét és egyéb infókat
tudnak elemezni.
A GitHub használata V.
• A GitHub-on alapvetően ma már két fajta repo-t lehet
létrehozni:
• Privát színterű (Private repository)
• Ma már akármennyit létrehozhatunk ebből, de 1GB-nál nagyobb
méretű nem lehet ingyenes módban a repo.
• Publikus színterű (Public repository)
• Ennek nincs kifejezetten korlátja, ellenben ez mindenkinek elérhető,
hozzáférhető a teljes forráskód és verziók.