TCP i UDP Protokoli

U ovom postu pisati cemo o najbitnijim protokolima koje treba da znamo i njihovim port brojevima. Post ce biti iskljucivo zbog upoznavanja vrsta protokola i kako bi znali neke osnove sto se tice istih. Naravno, protokoli zasluzuju da se o njima dosta vise pise nego ovdje, ali kako kazem, ovaj post ce biti samo kao uvod u protokole koje cemo obradjivati na ovom blogu.

Na slici ispod, vidimo sa lijeve strane brojeve od jedan do sedam koji predstavljaju slojeve OSI modela. U najmanjim kockicama stoje imena protokola. U kocki File Transfer postoje dva protokola koja su zasluzena za prenos podataka (FTP i TFTP), za WWW poznati su HTTP, HTTPS, i tako dalje. Danas cemo samo pisati o aplikacijskim protokolima koji koriste TCP ili UDP sistem slanja podataka iz sloja 4 u Transportnom sloju.


Prvo cemo podijeliti sve protokole u dvije grupe. Oni mogu koristiti TCP ili UDP. Oba protokola, TCP i UDP, se nalaze u Transport sloju TCP/IP protokol grupe i paketi ovih protokola se nazivaju segmenti. Radi lakseg raspoznavanja problema, termini segment, paket, i frejm, napravljeni su radi lakšeg objašnjenja datog problema. Na primjer, kada se dogodi greška sa frejmom, znamo da trebamo traziti rješenje u data link sloju, sa paketom u network, a sa segmentom u transportnom sloju.

TCP  
...se podrazumijeva kao stabilni, sigurni, pouzdani protokol koji garantuje dobavljanje segmenata (aka. paketa) od klijenta A do klijenta B. Takozvani "three way handshake" je sistem koji prije slanja podataka, uspostavlja sigurnu vezu dva računara putem tri koraka. Prvi korak je taj da će računar A poslati SYN (synchronize) paket kojim pita racunar za povezivanje. Racunar B ce primiti i poslati SYN/ACK poruku kojom zeli reci, OK, primio sam tvoju poruku, primi ti moju poruku kojom ti potvrdjujem povezivanje s tobom, i na kraju racunar A salje ACK RECEIVED, gdje racunaru B govori da je primio njegovu poruku i salje potvrdu zajedno sa podacima (nadam se da cu u skorije vrijeme detaljno pisati o TCP protokolu).




Three way handshake koristi nasumicne brojeve (sequence numbers). Nasumican broj i SYN poruka se salje na racunar B. Kada racunar B primi poruku, pogleda ACK sequence number kojeg poveca za +1 te salje svoj SYN sa random brojem. Kada racunar A primi poruku SYN/ACK i sequence number od racunara B, tada salje ACK poruku, sequence number +1, i podatke koje treba poslati. Slika iznad objasnjava three way handshake.
Bitno je znati da ce TCP protokol ponovo poslati podatke ukoliko ne stignu na odredište jer je TCP protokol zasnovan na sigurnom dostavljanju podataka.

UDP  
...sa druge strane, je nepouzdani tip protokola za slanje podataka jer nije connection-oriented, tj. ne postoji siguran dokaz da ce se podaci koje saljemo poslati na racunar B. Ovaj protokol se koristi za streamanje video sadrzaja u kojem, ukoliko se paketi izgube tokom rutiranja do vaseg racunara, vama ne znaci sto izgubite jednu sekundu streama utakmice ili videoigre. UDP se takodjer koristi u VoIP komunikacijama, dok najpoznatiji servis za komunikaciju preko Interneta, Skype, i svi njemu slicni servisi, koriste UDP protokol jer nama kao end-userima, koji gledamo prijatelja na kemeri, par izgubljenih paketa nece pokvariti razgovor, cak sta vise, mozda i ne primjetimo da nedostaju. 

UDP Protokoli:

SNMP (broj portova:161, 162) - Simple Network Management Protocol
SNMP, jednostavno receno, je zasluzan za prikupljanje hardverskih podataka u mrezi. Prikuplja informacije o ruterima, racunarima, switchevima, printerima, i svim uredjajima koji cine mrezu. 

NTP (broj porta: 123) - Network Time Protocol
Protokol koji sluzi za sinkronizaciju vremena sa servera, racunara, i ostalih hardverskih uredjaja da bi mogli funkcionisati u jednakom vremenskom periodu.  

DHCP (broj porta: 67, 68) - Dynamic Host Configuration Protocol
DHCP je protokol koji automatizovanim algoritmima omogucava racunaru na kojem je odobren, novu IP adresu i subnet masku kako bi mogao komunicirati sa ostalim racunarima i uredjajima u mrezi. DHCP pomaze mreznim administratorima da automatski podese racunare i uredjaje umjesto manuelnog racunanja i postavljanja IP adresa. DHCP se postavlja unutar mreze, kako bi automatizovao proces kreiranja IP adresa. Takodjer, on se koristi u obicnim LAN mrezama pa sve do enterprise mreza sa vise stotina racunara, cak se koristi i unutar infrastrukture Internet Service Providera. 

TCP Protokoli:

FTP (broj portova: 20, 21) - File Transfer Protocol
Najjednostavnije receno, FTP je protokol za slanje podataka. Port 21 je port za omogucavanje konekcije preko TCP protokola. Kada uspostavi vezu sa dva racunara, ona se nalazi na portu 21, dok se port 20 rezervise za prenos podataka, fajlova, dokumenata, bilo cega sto se moze deklarisati kao fajl, i on je otvoren za slanje paketa izmedju dva racunara ili racunara i servera. Vazna stvar, jeste da se podaci koje saljemo mogu presresti jer FTP nije enkriptovan protokol, nije siguran i sve sto saljemo preko porta 20 moguce je presresti jer se salje u vidu teksta i alfabetskih oznaka. FTP se sve slabije koristi zbog sve popularnijeg protokola koji se zove SFTP.

SFTP (broj porta: 22) - Secure File Transfer Protocol 
SFTP je jako slican kao FTP s time sto za razliku od FTP koji nema enkripciju, SFTP garantuje da se podaci preko koga saljemo, ne mogu presretati. SFTP koristi port broj 22 jer koristi SSH protokol. SFTP je protokol koji radi zajedno sa jos jednim protokolom dok oba imaju razlicite funkcije, ali rade zajedno jer jedan od njih je zasluzan za slanje podataka, dok drugi ima zadatak da sigurnost tog slanja bude zagarantovana.

SSH (broj porta: 22) - Secure Shell 
SSH je protokol koji omogucava pristup racunarima, serverima, i ostalim uredjajima u mrezi, iako se ne nalazimo geografski na toj lokaciji. Omogucava nam pristup, recimo ruteru u Sarajevu, dok se mi iz svoje kancelarije u Tuzli mozemo logovati preko SSH na dati ruter i vrsiti konfiguraciju, izmjene, i slicno. Kao sto smo rekli, SSH je siguran i enkriptovan protokol ciji se podaci od polazista do odredista ne mogu pregledavati, oni su enkriptovani i onaj koji zeli uci u trag takvim podacima.

TELNET (broj porta: 23) - Telnet Protocol
Telnet je slican SSH protokolu s tim sto Telnet nema enkripciju i sve komande koje pisemo sa racunara A na ruter B, osobe koje ih prisluskuju, mogu doci do njih i prouzrokovati ozbiljnu stetu cijeloj mrezi jer ako neko dodje u dodir sa passwordom i usernameom kojim se logujete na ruter koji je vazan za firmu koja ima 200 radnika, moze doci do velikih problema, gasenja mreze, promjene konfiguracije u korist tih osoba (sniffera). Zbog losije sigurnosti, Telnet se skoro i ne koristi za pristup uredjaja remotely (sa daljine).

SMTP (broj porta: 25) - Simple Mail Transfer Protocol
SMTP je osnovni protokol za slanje mejlova od jednog servera do drugog. SMTP se ne moze koristiti za slanje od servera do korisnika vec samo od servera do servera, ili od korisnika do servera. Za primanje mejlova od servera na nas racunar ili neki drugi uredjaj, koristi se IMAP4 ili POP3 protokol. Ukoliko se koristi SMTP uz dodatnu enkripciju, tada ne koristi port 25 vec port broj 465 ili 587.


IMAP4 (broj porta: 143) - Internet Message Address Protocol
IMAP4 protokol je jedan od nacina kako da downloadujete svoj mejl sa servera kojeg koristite (gmail.com, outlook.com,...). Vi kao korisnik njihovog servisa usluga, tj. slanja i primanja mejlova, imate svoju mejl adresu, i ako na vasu adresu neko posalje mejl, ona se salje na server i tu se skladisti. Kada se vi ulogujete na vas racun i vama se prikaze da imate neotvorenu e-postu, vi bukvalno skidate taj mejl sa servera i on vam se prikazuje na vasem racunaru. Razlika izmedju IMAP4 i POP3 protokola jeste sto kod IMAP4, ukoliko otvorite mejl, server vam salje kopiju a ne original, dok kod POP3 protokola vi dobijate originalni mejl koji ukoliko obrisete, vise ga ne mozete vratiti. Takodjer kao i SMTP, i IMAP4 ima svoju enkriptovanu verziju u kojoj ne koristi standardizovani port 143 vec se otvara port 993.

POP3 (broj porta: 110) - Post Office Protocol
POP3 protokol se koristi kada se mejlovi skladiste na serveru i ukoliko zelimo pogledati mejl, server salje mejl do naseg racunara i brise ga sa svog HDD sto znaci da kada jednom pogledate mejl, tj. downloadujete ga sa servera od npr. Microsoft Outlook-a, on se brise sa Microsoftovog servera, salje se na vas racunar i ukoliko ga obrisete sa racunara a da pri tome niste napravili kopiju mejla, zauvijek ga gubite. Sigurnosni port kod POP3 protokola je 995 umjesto porta 110.

HTTP (broj porta: 80) - Hyper Text Transfer Protocol
HTTP je protokol pomocu kojeg korisnik ima mogucnost da pristupi web stranici koju zeli posjetiti. Kucajuci http:// u URL bar, govorimo browseru da cemo se konektovati preko HTTP protokola. HTTP koristi port 80, i povezuje se sa serverom preko TCP protokola.

HTTPS (broj porta: 443) - Hyper Text Transfer Secured Protocol 
HTTPS je isti protokol kao i HTTP, s tim sto koristi port 443 i svi podaci koji putuju od klijenta do servera i od servera do klijenta su enkriptovani. Sada, kada kucate u domenu http://,  server ce vam poslati sigurnu enkriptovanu https:// + ostatak URL-a, jer se pokusava forsirati sigurni oblik prenosa podataka. Ukoliko ukucate http://mojastranica.ba i udarite enter, vas racunar bi se trebao povezati sa serverom od mojastranica.ba, i poslati vam nazad enkriptovan text gdje mozete pristupiti sajtu. Naravno, ukoliko je https opcija ukljucena, ovo je izvodljivo, ukoliko ne, racunar ce se spojiti na obicni http protokol.

TCP i UDP Protokoli:

DNS (broj porta: 53) - Domain Name System

Protokol koji je u teskoj kategoriji tj. o kome se moze napisati citava knjiga jeste DNS protokol. Svaki dan, kada kucate u pretrazivac facebook.com, youtube.com, gmail.com i slicno, vas racunar automatski pronadje stranicu koju ste trazili - uz pomoc DNS protokola. 
Posto racunari koriste IP adrese i samo uz pomoc IP adresa mogu pronaci ono sto vi trazite, svaka mreza u svijetu ima svoju externu IP adresu koja ce pomoci drugim racunarima da uz pomoc nje, primite i saljete podatke, mejlove, igrate igrice online i slicno. Racunari znaju za IP adrese jer IP adresa od Google.com je 74.125.224.72, i da vi ne bi svaki dan kucali ovaj broj u pretrazivac, DNS vam izlazi u susret i pretvara ono sto napisete (google.com) u realnu IP adresu s kojom ce se vas racunar povezati. DNS je protokol koji pretvara uneseni tekst i povezuje ga sa IP adresom na koju se zelite povezati.