Gyakorlati alapok III.
Hálózati alapfogalmak
Az alábbiakban egyszerű magyarázatokkal csakis azon fogalmakat dolgozzuk ki, amelyek megértése feltétlenül szükséges a Java hálózati algoritmusainak megértéséhez.
A régi időkben a vonalas telefonösszeköttetés azt jelentette, hogy 2 telefon
között fizikailag kapcsoltak össze vonalakat, azokon pedig váltakozó
jelszintek (feszültségértékek) száguldoztak egyik készüléktől a másikig. A
telefon voltaképpen nem tett mást, mint ezen különböző feszültségértékeket
alakította át beszéddé, hasonlóan a hangszóróhoz és a mikrofonhoz. A
vonalbontás pedig pontosan az ellenkezőjét jelentette: a vonalak fizikailag
kerültek szétkapcsolásra. Vegyük észre azt is, hogy a hívás a 2 telefon
közötti kapcsolatot alapjában véve teljesen lefoglalta.
A mai modern időkben a hálózatban lévő számítógépek már folyamatos fizikai
kapcsolatban állnak egymással. Az első kérdés, hogy be vannak-e kapcsolva. Ha
igen, akkor végeredményben indulhat a kommunikáció. A modern hálózati
vezetékekben is feszültség van, ám ennek értéke viszonylag állandó: az
információ átviteli jellege nem analóg, hanem rendkívül gyors, digitális
(bináris) jelsorozatok formájában történik.
A hálózaton ezek a jelsorozatok úgynevezett csomagokat (packets) alkotnak. A csomagok rengeteg fontos és intelligens információt hordoznak magukban, például a kötelezően szállított információn felül a küldő és a vevő címét.
Forrás - Source: dummies.com
Emiatt és más tényezők miatt a csomagokat irányítani lehet, azaz akár többféle útvonalon is képesek elérni a vevőt. Az irányítást a célirányosan erre a feladatra tervezett számítógépek, útválasztók, a router-ek végzik:
(Tartalmilag-formailag nézve sokféle router létezik, a fenti kép egy kis teljesítményű, polgári használatra tervezett gépet mutat.)
A vonal egy szegmense csakis addig foglalt, amíg a csomag átszáguld rajta (elméletileg közelítő fénysebességgel), sőt, ha szakadt, akkor a router képes azt egy másik útvonalra is átirányítani.
Érzékelhetjük tehát behozhatatlan előnyeit:
-
állandó feszültségértékkel dolgozik, amely kevésbé érzékeny a külső behatásokra,
-
kapcsolatkor nem “állandó” foglaltságú,
-
útvonalválasztási lehetőség (azaz végeredményekben algoritmikus logika építhető be a hálózati architektúrába),
-
mindezek miatt jobb skálázhatóság és terhelhetőség,
-
bővíthetőség.
Hálózatba kötött számítógépek jól meghatározott, szabványos lépésekben
kommunikálnak egymással. A kommunikációs szándék sokféle lehet, például az
egyik számítógép csak adatokat akar letölteni a másikról, de lehet, hogy fel
is szeretne valamit tölteni. Meglehet, még ennél is egyszerűbb kérdése van,
például milyen IP-címen érhető el az informatika-programozas.hu weboldal?
Ebből következően, feladattól függően sokféle protokoll létezik.
A protokollt, mint előre jól meghatározott (szabványos) kommunikációs sorozatot leginkább úgy tudjuk elképzelni, amint a főnök úr kiadja titkárnőjének, hogy rendeljen hétvégére 2 bécsi koncertjegyet. Egyenesen a szándéktól kezdve a rendelési lépéssorozat kis eltérések kivételével viszonylag determinált, azaz jól meghatározott és pontosan nyomon követhető, egyúttal reprodukálható.
Vegyük észre, hogy az is a protokoll része: maga a Főnök nagy valószínűséggel sohasem fog saját maga koncertjegyrendeléssel foglalkozni, hanem mindig ki fogja adni a feladatot a titkárnőjének. Valójában a kérés végig fog futni egy fentről lefelé induló hierarchián, amelynek éppúgy része a felhasználó, mint a számítógép szoftver-, és hardverrétegei, egészen le a hardver szintjéig, ahol digitális jelek formájában átvágtat a másik oldalra, majd mindez lentről felfelé folytatódik. Ha mindezt megértettük, valójában megértettük a következő címszó jelentését is:
Forrás - Source: hu.wikipedia.org/wiki/OSI-modell
Az Open Systems Interconnection Reference Model, azaz a Nyílt Rendszerek Összekapcsolásának Referenciamodellje reprezentálja elvi szinten a fenti hierarchikus protokollfolyamatot. Belőle a végfelhasználó természetesen ki van hagyva, hiszen jelenléte nem lényeges a protokollfolyamat elvi felépítéséhez, azonban a protokollért felelős összes szoftver-, és hardverkomponenst tartalmazza.
Mit jelent ez a gyakorlatban?
Amikor a felhasználó ráklikkel a programban egy olyan gombra, amelynek
működése valamilyen formában hálózatot igényel (például a CSATLAKOZOM
feliratúra), akkor a felhasználó kiad egy parancsot az alkalmazásnak (a
legfelső szinten lévő programnak - alkalmazási réteg).
Az alkalmazásnak ekkor csak egy feladata van: a parancsot értelmezhető
formátumban továbbadni a hierarchiában alatta lévőnek. (Vegyük észre, az
alkalmazás alatt lévő réteg nem tudja értelmezni a klikkelés által kiadott
parancsot, ám az alkalmazási rétegnek sem feladata a hálózati kommunikáció
kiépítése.) A lánc így fog lefutni a küldő oldalon egészen a hardverig (fizikai
réteg), ahol csomagok formájában végigrohan a hálózaton (miközben
routerek irányítják őket), majd megérkezvén a vevőhöz, a lánc felfut egészen a
vevő alkalmazási rétegéig.
Vegyünk egy másik példát: szeretnénk tervezni egy hálózati kártyát.
Egy ilyen eszköznek egyetlen funkciója van: számítógépek közötti biztonságos hálózati kapcsolat létrehozása. Azonban ezen funkcióért nem a felső rétegek felelősek, hanem csakis az adatkapcsolati réteg. Ezt és sok mást a szabvány specifikációjában olvashatjuk el, amelynek szempontjait, szabványos követelményeit a tervezés során -jól felfogott érdekünkben-, lépésről-lépésre kell követnünk, másként nem fog megfelelően működni hálózati kártyánk.
Forrás - Source: searchnetworking.techtarget.com
A Transmission Controll Protocol a fenti, elméleti OSI-modell konkrét
megvalósítása, egy olyan megbízható kommunikációs protokoll, amely garantálja,
hogy a küldőtől a csomagok helyes sorrendben érkezzenek a vevőhöz. Ennek
meghiúsulása esetén hibajelzést ad. Jónéhány alkalmazás igényli ezt a fajta
kapcsolatot, például:
-
Hyper Text Transfer Protokoll (HTTP)
-
File Transfer Protokoll (FTP)
A User Datagram Protocol nem biztosít megbízható kapcsolatot az
alkalmazások között, csupán egymástól független csomagokat képes küldeni. A
csomagok szállítása tehát nem garantált, sorrendjük sem fontos, valamint
mindegyik üzenet különbözik a másiktól. Következésképpen a rövid, inkább
tájékoztató jellegű információk szállítási módja, például:
-
időszerverek
-
DNS, DDNS-szolgáltatás
Felvetődik a kérdés: ha egyidőben rengetegféle kommunikációs (hálózati)
alkalmazás működik, akkor a számítógép miképpen tudja azonosítani a beérkezett
csomagok vevőit?
A rendszertervezők természetesen erre is gondoltak: a 32 bites IP-cím mellé még egy 16 bites szám is hozzá lett rendelve, amely a minden programnak egyedi azonosítási lehetőséget biztosít. Ezek az úgynevezett portok, számuk 0 és 65536 között lehetséges. Mivel vannak standard, folyamatosan használt, ezért tartalmilag szinte szabványos hálózati alkalmazások, szolgáltatások (böngésző, FTP-kliens, video-, és chat-alkalmazások, stb.), a legismertebbek fix lekötésű portszámot kaptak. Nézzünk meg néhányat közülük:
-
20 - File Transfer Protocol (FTP) - Data Transfer
-
21 - File Transfer Protocol (FTP) - Command Control
-
22 - Secure Shell (SSH) - Secure Login
-
23 - Telnet remote login service, unencrypted text messages
-
25 - Simple Mail Transfer Protocol (SMTP) - E-mail routing
-
53 - Domain Name System (DNS) service
-
80 - Hypertext Transfer Protocol (HTTP) used in the World Wide Web
-
110 - Post Office Protocol (POP3)
-
119 - Network News Transfer Protocol (NNTP)
-
123 - Network Time Protocol (NTP)
-
143 - Internet Message Access Protocol (IMAP) - Management of digital mail
-
161 - Simple Network Management Protocol (SNMP)
-
194 - Internet Relay Chat (IRC)
-
443 - HTTP Secure (HTTPS) HTTP over TLS/SSL
-
stb.
Általánosságban kijelenthetjük, hogy az első 1000 port foglalt, vagy
tekintsük mindegyiket annak, a többivel gazdálkodhatunk tetszésünk szerint (ám
előtte azért ellenőrizzük le foglaltsági státuszukat).
A Hyper Text Markup Language egy olyan szabványba gyömöszölt
leírónyelv, amely szöveg és sok más vizuális tartalom (viszonylag) egységes
megjelenítésére képes.
Alapelgondolása az volt, hogy a szöveg-, és vizuális tartalom minden számítógépen ugyanúgy nézzen ki, amely jogos elvárás a rengetegféle számítógéptípus és operációs rendszer esetén.
Ezen követelménynek a szabvány alapértelmezésben megfelel, azonban gyakran felmerülő probléma, hogy főként a böngészőket készítő programozó cégek a szabványt a maguk elképzelései szerint alakítják, formálják, implementálják és a szabványtól való egyedi eltérés előbb-utóbb bonyodalmakhoz, valamint veszekedésekhez vezet. Nézzünk meg egy egyszerű HTML-oldalkódot:
<!DOCTYPE html>
<html>
<head>
<title>Az
oldal címe</title>
<!--esetleges
további fejléc-információk-->
</head>
<body>
<p>első bekezdés</p>
<p>második bekezdés</p>
</body>
</html>
Jegyezzük még meg, hogy a tartalommegjelenítés manapság már olyan bonyolult
folyamategyüttessé vált, hogy már egyszerű tartalom megjelenítéséhez is
egyszerre több platform és programozási nyelv összehangolt munkája szükséges.
A World Wide Web Consortium (W3C) egy konzorcium (ebben az esetben egyfajta szabadalmi és felügyeleti társulást jelent), amely az Internetet működtető alaptechnológiákat felügyeli, szabványosítja, valamint új szabványokra tesz ajánlásokat. Vezetője az a Tim Berners Lee, aki még CERN-tudósként a világ első honlapját alkotta meg.
Forrás - Source: www.businessinsider.com