Osnove mreznog programiranja u Javi: racunarske mreze
Pre nego što pocnemo da ucimo mrezno programiranje u Javi, prvo da razjasnimo šta su racunarske mreze.
Racunarska mreza je skup dva ili vise racunara povezanih u mrezu; unutar iste mreze bilo koja dva racunara mogu komunicirati neposredno, jer svi racunari moraju postovati isti mrezni protokol.
Ispod je pojednostavljen prikaz mrezne topologije.

- Korisnicki uredjaj: Laptop, za pristup mreznim resursima.
- Mrezni svice (Switch): povezuje uredjaje u lokalnoj mrezi, npr. Laptop i Router.
- Ruter (Router): povezuje razlicite mreze, spaja lokalnu mrezu sa Internetom.
- Fajervol (Firewall): stiti interne mrezne resurse i blokira neautorizovane pristupe.
- Internet: pruza pristup drugim mrezama i globalnim izvorima informacija.
- Server: sluzi za hostovanje mreznih aplikacija i podataka.
Šta je onda Internet? Internet je „mreza mreza“ (Internet) — mnoge racunarske mreze međusobno povezane u jedinstvenu globalnu mrezu.
Za neku specificnu racunarsku mrezu može se reci da koristi protokole ABC, dok druga racunarska mreza mozda koristi protokole XYZ. Ako komunikacioni protokoli razlicitih mreza nisu usaglaseni, nemoguce je povezati ih u jedinstveni Internet. Zato, da bi se racunarska mreza prikljucila na Internet, mora koristiti TCP/IP protokol.
TCP/IP protokol je opsti naziv za interne protokole, od kojih su najvaznija dva TCP i IP. Samo racunari koji koriste TCP/IP mogu se prikljuciti na Internet; drugi mrezni protokoli (npr. NetBIOS, AppleTalk) ne mogu se prikljuciti na Internet.
IP adresa
Na Internetu, IP adresa jedinstveno identifikuje jedan mrezni interfejs (Network Interface). Racunar prikljucen na Internet sigurno ima jednu IP adresu, ali ih moze imati i vise.
IP adrese se dele na IPv4 i IPv6. IPv4 koristi 32-bitne adrese, poput 101.202.99.12, dok IPv6 koristi 128-bitne adrese, poput 2001:0DA8:100A:0000:0000:1020:F2F3:1428. Ukupno ima 2^32 (oko 4,2 milijarde) IPv4 adresa, dok IPv6 adresa ima ukupno 2^128 (oko 340 undeciliona) — IPv4 adrese su vec istrosene, dok IPv6 adresa nece nikada ponestati.
IP adrese se dele na javne (public) i privatne (private). Javne IP adrese mogu se direktno pristupiti, dok su privatne IP adrese dostupne samo unutar lokalne mreze. Privatne IP adrese licu na:
- 192.168.x.x
- 10.x.x.x
Postoji jedna specificna IP adresa koja se naziva lokalna adresa (localhost); ona je uvek 127.0.0.1.
IPv4 adresa je zapravo 32-bitni ceo broj. Na primer:
1707762444 = 0x65ca630c
= 65 ca 63 0c
= 101.202.99.12Ako racunar ima samo jednu mreznu karticu i prikljucen je na mrezu, onda ima lokalnu adresu 127.0.0.1 i jednu IP adresu, recimo 101.202.99.12, preko koje mu se pristupa na mrezi.
Ako racunar ima dve mrezne kartice, onda pored lokalne adrese moze imati dve IP adrese i povezivati se na dve mreze. Uobicajeno je da uredjaji koji povezuju dve mreze — ruteri ili svicevi — imaju barem dve IP adrese, po jednu za svaku mrezu, kako bi povezivali mreze.
Ako se dva racunara nalaze u istoj mrezi, mogu komunicirati neposredno, jer im je prvi deo IP adrese isti — odnosno mrezni broj (network number) im je isti. Mrezni broj se dobija filtriranjem IP adrese kroz subnet masku. Na primer:
Ako je IP adresa nekog racunara 101.202.99.2, a subnet maska 255.255.255.0, onda se njegov mrezni broj racuna kao:
IP = 101.202.99.2
Mask = 255.255.255.0
Network = IP & Mask = 101.202.99.0Svaki racunar mora ispravno podesiti IP adresu i subnet masku; na osnovu te dve vrednosti izracunava se mrezni broj. Ako dva racunara imaju isti mrezni broj, nalaze se u istoj mrezi i mogu komunicirati neposredno. Ako su im mrezni brojevi razliciti, nalaze se u razlicitim mrezama i ne mogu komunicirati neposredno — izmedju njih komunikacija mora ici preko uredjaja poput rutera ili sviceva. Takav uredjaj nazivamo gejtvej (gateway).
Uloga gejtveja je da povezuje vise mreza i prosledjuje pakete koji dolaze iz jedne mreze u drugu; taj proces se naziva ruting (routing).
Dakle, jedna mrezna kartica na racunaru ima 3 kljucna podesavanja:
- IP adresa, npr.:
10.0.2.15 - Subnet maska, npr.:
255.255.255.0 - IP adresa gejtveja, npr.:
10.0.2.2
Domen (Domain Name)
Buduci da je pamcenje IP adresa veoma tesko, za pristup specificnom servisu obicno koristimo domen. DNS server (Domain Name System) prevodi domen u odgovarajucu IP adresu, a klijent zatim pristupa serveru preko te IP adrese.
Komandom nslookup mozes videti IP adresu koja odgovara nekom domenu:
$ nslookup www.tobebetterjavaer.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer:
Name: www.tobebetterjavaer.com
Address: 47.98.33.223Postoji specifican lokalni domen localhost, cija je IP adresa uvek lokalna adresa 127.0.0.1.
Mrezni model
Buduci da je racunarska mreza — od fizickog prenosa na najnizem sloju do dizajna softvera na najvisem — izuzetno slozena, razuman model mreze mora biti hijerarhijski (slojeviti); svaki sloj je odgovoran za svoj deo posla. OSI (Open System Interconnect) model je standardni model za medjusobno povezivanje racunara koji je definisala ISO organizacija. On je samo definicija, sa ciljem da pojednostavi operacije na pojedinim slojevima i obezbedi standardne interfejse lake za implementaciju i odrzavanje. Model odozgo nadole obuhvata:
- Aplikativni sloj (Application Layer): obezbedjuje komunikaciju izmedju aplikacija.
- Prezentacioni sloj (Presentation Layer): obradjuje format podataka, sifrovanje/dešifrovanje i sl.
- Sloj sesije (Session Layer): uspostavlja i odrzava sesije.
- Transportni sloj (Transport Layer): obezbedjuje pouzdan prenos sa kraja na kraj.
- Mrezni sloj (Network Layer): bira rutu za prenos podataka na osnovu adrese odredista.
- Sloj veze (Link Layer) i fizicki sloj (Physical Layer) fragmentisu podatke i fizički ih prenose kroz mrezu — npr. preko beicnog interfejsa ili optickih vlakana.
TCP/IP model koji se zapravo koristi na Internetu ne mapira se na svih 7 OSI slojeva, vec grubo odgovara 5-slojnom OSI modelu:

Najcesce korisceni protokoli
IP protokol je protokol sa komutacijom paketa (packet switching) i ne garantuje pouzdan prenos. S druge strane, TCP protokol (Transmission Control Protocol) je orijentisan ka konekciji, podrzava pouzdan prenos i dvosmernu komunikaciju. TCP je izgradjen na vrhu IP-a — jednostavno receno, IP salje pakete i ne brine o redosledu i ispravnosti, dok TCP kontrolise prenos paketa: pre slanja podataka uspostavlja konekciju, zatim prenosi podatke, a nakon prenosa raskida konekciju. Pouzdanost TCP-a oslanja se na mehanizme potvrde prijema i retransmisije pri tajm-autu. TCP dozvoljava i dvosmernu komunikaciju — obe strane mogu istovremeno slati i primati podatke.
TCP je ujedno i najcesce korisceni protokol; mnogi protokoli viseg nivoa izgradjeni su na TCP-u — npr. HTTP, SMTP itd.
TCP (Transmission Control Protocol) i IP (Internet Protocol) obicno se koriste zajedno i poznati su kao TCP/IP protokol.
TCP/IP stek protokola podeljen je u cetiri sloja: aplikativni, transportni, mrezni i sloj veze. IP protokol se nalazi u mreznom sloju i zaduzen je za ruting paketa od izvornog do ciljnog hosta; TCP protokol se nalazi u transportnom sloju i uspostavlja pouzdanu konekciju izmedju izvornog i ciljnog hosta i obezbedjuje redosled podataka.

UDP protokol (User Datagram Protocol) je protokol zasnovan na datagramima; to je bezveze (connectionless) protokol koji ne garantuje pouzdan prenos. Posto ne zahteva uspostavljanje konekcije pre komunikacije, UDP je u pogledu efikasnosti prenosa brzi od TCP-a, a sam UDP protokol je znatno jednostavniji od TCP-a.

Pri izboru UDP-a, prenosni podaci obicno tolerisu gubitke — na primer, neke aplikacije za glasovnu i video komunikaciju biraju UDP.
Kratak pregled
Osnovni pojmovi racunarskih mreza obuhvataju:
- Racunarska mreza: mreza koju cine dva ili vise racunara.
- Internet: mreza koja povezuje mreze.
- IP adresa: jedinstveni identifikator mreznog interfejsa racunara (obicno mrezne kartice) unutar mreze.
- Gejtvej: racunar (obicno ruter ili svice) zaduzen za povezivanje vise mreza i prosledjivanje podataka izmedju njih.
- Mrezni protokol: Internet koristi TCP/IP — opsti naziv za familiju internih protokola.
- IP protokol: protokol prenosa zasnovan na komutaciji paketa.
- TCP protokol: orijentisan ka konekciji, pouzdan protokol prenosa.
- UDP protokol: bezveze, nepouzdan protokol prenosa.
Referenca: https://www.liaoxuefeng.com/wiki/1252599548343744/1305163149082658, autor: Liao Xuefeng, obrada: Chenmo Wang Er
