Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

1. diel - Sieť v Jave - Úvod

Vitajte v ďalšom Java tutoriále, tentoraz zameranom na spôsoby práce so sieťou. V úvodnej lekcii si vysvetlíme, čo to sieťová komunikácia je, aké máme k dispozícii techniky a zoznámime sa so základnou terminológiou.

Sieťová komunikácia v Jave

Pod pojmom sieťová komunikácia si možno predstaviť koncept prepojenia dvoch alebo viacerých počítačových zariadení, aby bolo možné medzi nimi zdieľať informácie a dáta. Pričom tieto zariadenia nemusia byť iba stolné počítače, notebooky, smartfóny či tablety, ale môžu to byť aj audio/vizuálne systémy, kamery, chladničky, senzory atď.

Sieťovú komunikáciu v Jave označujeme tiež termínom sieťové programovanie, čo sa spája s písaním programov, ktoré je možné spúšťať naprieč rôznymi zariadeniami prepojených dohromady pomocou siete za účelom zdieľania zdrojov. Všetka komunikácia Java programu cez sieť prebieha na aplikačnej vrstve. Java API obsahuje rôzne triedy a rozhrania, ktoré vykonávajú nízkoúrovňové komunikačné funkcie a umožňujú nám formulovať programy, ktoré sa zameriavajú na riešenie problému.

Techniky sieťového programovania

Uveďme si teraz dve základné techniky:
  • Programovanie zásuviek (socketov) – Táto metóda využíva tzv. sockety (slovensky zásuvky, niekedy tiež sokety) a protokol TCP (viď nižšie) na komunikáciu medzi dvoma počítačmi cez spoločnú sieť. Keď je aplikácia zdieľaná cez sieť tak sa klient pokúsi vytvoriť socket na jej konci a pripojiť ju k serveru. Po vytvorení pripojenia server vytvorí objekt socketu. Teraz sa tento objekt stáva primárnym spôsobom komunikácie medzi klientom a serverom.
  • URL (Uniform Resource Locator) – URL odkaz či adresa je ukazovateľ na konkrétny zdroj v sieti. Java kód komunikujúci po sieti môže používať triedu java.net.URL na reprezentáciu adries zdrojov. Mechanizmus získavania obsahu z jednotlivých typov URL je užívateľsky modifikovateľný, je možné doprogramovať ovládače pre prístup k ľubovoľnej službe a pre spracovanie ľubovoľného typu obsahu.

Aplikačná vrstva

Keď píšete Java programy, ktoré komunikujú po sieti, programujete na aplikačnej vrstve:
Sieť v Jave

Aplikačná vrstva je najvyššia vrstva sieťovej architektúry internetu, jej protokoly definujú a špecifikujú pravidlá komunikácie a formáty dátových štruktúr pre jednotlivé sieťové služby. Aplikačné protokoly používajú vždy jednu z dvoch základných služieb transportnej vrstvy: TCP alebo UDP. Pre rozlíšenie aplikačných protokolov sa používajú tzv. porty, čo sú dohodnuté číselné označenia aplikácií. Každé sieťové spojenie aplikácie je jednoznačne určené číslom portu a transportným protokolom (a samozrejme IP adresou).

Delenie sieťovej komunikácie

V Jave sa obvykle nemusíme starať o vrstvy TCP a UDP. Systémovo nezávislú sieťovú komunikáciu nám tu totiž poskytujú triedy z java.net balíčka. Ak sa však chceme rozhodnúť, ktoré triedy by mali naše programy používať, musíme pochopiť, ako sa líšia TCP a UDP:
  • TCP (Transmission Control Protocol) je protokol založený na spojení, ktorý zaisťuje spoľahlivý tok dát medzi dvoma počítačmi. Použije sa pri aplikáciách, ktoré vyžadujú spoľahlivý komunikačný kanál. Dáta musia byť prijaté v poradí v akom boli odoslané. TCP teda poskytuje point-to-point kanál pre aplikácie, ktoré vyžadujú spoľahlivú komunikáciu. Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP) a Telnet sú príklady aplikácií, ktoré vyžadujú spoľahlivý komunikačný kanál.
  • UDP (User Datagram Protocol) je protokol, ktorý odosiela nezávislé dátové pakety, nazývané datagramy, z jedného počítača do druhého bez akýchkoľvek záruk na ich príchod. UDP nie je založený na pripojení ako TCP.

Rozdiely v použití TCP a UDP protokolu

Pri mnohých aplikáciách je záruka spoľahlivosti rozhodujúca pre úspech. U iných foriem komunikácie môže spoľahlivé spojenie službu plne zneplatniť. Napríklad server s hodinami, ktorý na požiadanie odosiela aktuálny čas svojmu klientovi - Pokiaľ klient zmešká packet, nemá naozaj zmysel ho znovu posielať, pretože čas nebude správny, keď ho klient dostane až na druhý pokus. Spoľahlivosť TCP je v tomto prípade zbytočná, pretože spôsobuje zníženie výkonu a môže brániť užitočnosti služby.

Ďalším príkladom služby, ktorá nepotrebuje záruku spoľahlivého kanála, je príkaz ping. Účelom príkazu ping je otestovať komunikáciu medzi dvoma programami po sieti. V skutočnosti potrebuje ping vedieť o zahodených packetoch alebo tých mimo poradia, aby mohol určiť, aké dobré alebo zlé je pripojenie. Spoľahlivý kanál by túto službu opäť úplne zneplatnil.

Sieťovú komunikáciu môžeme teda rozdeliť na:

  • Datagramovú komunikáciu prostredníctvom protokolu UDP - Tá je nespoľahlivá a nezaručuje, že sa prenášaný packet nestratí alebo že sa nezmení poradie packetov, prípadne môže doručiť niektorý packet viackrát. Je vhodná pre služby, kde je dôležitejšia rýchlosť ako spoľahlivosť (prenosy zvuku a obrazu v reálnom čase), ale napr. aj služby DNS a DHCP.
  • Spojovaná komunikácia prostredníctvom protokolu TCP - Je spoľahlivá, jej implementácia je v Jave jednoduchšia, než implementácia packetovej komunikácie. Pracuje sa totiž so streamy – teda rovnako, ako pri práci so súbormi.

Veľa firewallov a smerovačov bolo nakonfigurovaných tak, aby neumožňovali packety UDP. Ak máte problémy s pripojením k službe mimo vašej brány firewall alebo ak majú klienti problémy s pripojením k vašej službe, opýtajte sa správcu systému, či je povolený protokol UDP.

Terminológia sieťovej komunikácie

Poďme si na záver zhrnúť a definovať použité termíny. Okrem už spomínaných TCP a UDP protokolov to sú:
  • IP adresa – Pomáha identifikovať konkrétny zdroj v sieti pomocou číselnej reprezentácie – ide o jedinečné číslo prideleného uzla siete. Väčšina sietí kombinuje IP s TCP.
  • Číslo portu – Používa sa na jednoznačnú identifikáciu rôznych aplikácií. Ide o komunikačný koncový bod medzi aplikáciami. Protokoly TCP a UDP používajú porty na mapovanie prichádzajúcich dát na konkrétny proces bežiaci na počítači.
  • Protokol – Je sada pravidiel, dodržiavaných pri komunikácii (napr. TCP, FTP, POP atď.)
  • MAC adresa – Ďalšie jedinečné číslo, ktoré sa používa na sledovanie zariadenia v sieti.
  • Socket – Už spomínaný socket je koncový bod obojsmerného komunikačného spojenia medzi dvoma aplikáciami bežiacimi v sieti. Mohli by sme povedať, že socket = číslo portu + IP adresa. Je to teda jasne vymedzený komunikačný bod siete (adresa počítača + port príslušnej aplikácie).

V budúcej lekcii, Sieť v Jave - Balíky pre sieťovú komunikáciu , si ukážeme základné balíky Javy pre sieťovú komunikáciu a ich základné triedy vrátane metód.


 

Všetky články v sekcii
Sieť v Jave
Preskočiť článok
(neodporúčame)
Sieť v Jave - Balíky pre sieťovú komunikáciu
Článok pre vás napísal Zdeněk Dvorský
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programováni zatím jen pro zábavu, ale rád by to změnil na profesionální dráhu.
Aktivity