Uvod u TCP/IP Model - Datagram, Three-way-handshake, TCP, Paketi...

Network Administrator i System Administrator su dva razlicita posla. Posao System Administratora je taj da se brine o dodavanju korisnika na racunarima, backup fajlova i slicno sto znaci da se posao bazira na jedan system odnosno jedan racunar dok sa druge strane posao Network Administratora, kada postavimo racunar u mrezu, on postaje jedan od njih te mora komunicirati sa ostalim racunarima u mrezi. Nacin na koji Mrezni Administrator radi svoj posao ima veliki uticaj na kompletnu infrastrukturu mreze, da li taj uticaj bio dobar ili los, i ne bazira se samo na jedan sistem, vec na vise njih.  

Povezivanje racunara poboljsava njihov nacin komunikacije i vecina racunara u takvim mrezama se bazira na slanje podataka tj. komunikaciju izmedju racunara i korisnika, nego na racunanje brojeva i kompleksnih zadataka. Naravno, postoje i takvi racunari ali se njihov broj ne moze uporediti sa business racunarima u enterprise kompanijama koji su tu samo da bi se izvrsio prenos podataka sa jednog racunara na drugi, slanje mejlova kolegama, pisanje i pripremanje dokumenata i slicno. 

Ogromna prednost TCP/IP-a jeste ta sto omogucava komunikaciju izmedju svih vrsta hardverskih uredjaja i operativnih sistema. Da nekim slucajem nije standardizovan prenos podataka za sve uredjaje i operativne sisteme, komunikacija ne bi bila izvodljiva i doslo bi do haosa isto sto bi se desilo kada ne bi bilo pravila u saobracaju. 

Ime TCP/IP odnosi se na kompletnu grupu protokola. Ime je dobio zbog dva protokola koja mu pripadaju: (TCP) Transmission Control Protocol i (IP) Internet Protocol.

TCP/IP Prednosti:

Prednosti TCP/IP protokola (mnozina, vise protokola, jer smo rekli da je TCP/IP grupa svih protokola za komunikaciju u mrezi):
  • TCP/IP posjeduje standarde koji su dostupni svima. Zato sto je dostupan svima, TCP/IP je idealan za ujedinjenje razlicitih softverskih i hardversih komponenata, cak i ukoliko ne komuniciraju preko Interneta.
  • Nezavisnost od specificnog fizickog mreznog hardvera sto omogucava TCP/IP-u da integrira razlicite mreze u jednu cjelinu koja ce i dalje raditi. Ovo se odnosi na razlicite vrste i tipove komunikacije koje koriste razlicite oblike prenosa podataka (Wi-Fi infrastruktura, sateliti, digitalni signali, analogni signali, opticke mreze, razni uredjaji, bluetooth, radiofrekvencije, RFID i svi ostali oblici prenosa analognih ili digitalnih signala, moraju raditi kao jedan, da bi se izvrsila komunikacija sa jednog mjesta na drugo, da li u kancelariji ili 3000km udaljenosti)
  • Jednostavna shema adresiranja svakog racunara i uredjaja koja omogucava unikatno obiljezavanje svakog uredjaja u mrezi, cak iako je ta mreza velika kao Internet, svi uredjaji moraju raditi po pravilima, moraju raditi po TCP/IP protokol grupaciji.
  • Standardizovani, dosljedni, pouzdani, sigurni, globalno prihvaceni protokoli koji omogucavaju prenos podataka.
Protokoli i standardi:

Protokoli su formalna pravila ponasanja. Kako u realnom svijetu imamo protokole odnosno pravila po kojem ce se osobe, automobili, prevozna sredstva i slicno ophoditi, tako i u racunarskom svijetu imamo pravila po kojima ce racunari raditi i po kojima ce prenositi podatke bez ikakvih komplikacija. TCP/IP posjeduje protokole koji su nezavisni od hiljade i hiljade proizvodjaca opreme za racunare (ovo se odnosi od drajvera za Razer tastaturu, Cisco rutera od 5000$, JBL zvucnika i njegovih drajvera, Samsung monitora, i svih ostalih razlicitih uredjaja i njihovih proizvodjaca...) i koji su nezavisni od operativnih sistema. 
Dakle, nije bitno da li koristimo Windows, MAC OS ili Linux, i na svakom od tih sistema imamo po 5 razlicitih proizvodjaca uredjaja povezanih na njega, on i dalje mora raditi i uspjesno prenositi podatke da li na lokalnoj mrezi ili na WAN mrezi. 

Ovi standardi se mogu javno izgraditi i pustiti u javnu upotrebu od bilo kojeg individualca koji zna sta radi. Ukoliko neko ima ideju kako poboljsati sistem prenosa podataka putem Interneta, moze to uraditi preko Internet Engineering Task Force (IETF), gdje se odrzavaju javni sastanci o standardima. Protokoli koji su objavljeni i oficijalni, objavljeni su kao Request for Comments (RFCs). Sve RFC standarde mozete pogledati na stranici https://www.rfc-editor.org/.

OSI Model

OSI model je izradjen od strane International Standards Organization (ISO) i cesto se koristi da bi se objasnila struktura i funkcija prenosa podataka i protokola. Ovaj model je toliko popularan i toliko se cesto koristi da se tesko moze objasniti prenos podataka i protokoli ukoliko se ne spominje OSI model.

Model se sastoji od sedam slojeva koji definisu funkcije protokola i prenosa podataka kroz mreze i Internet. Svaki sloj predstavlja radnju kojom objasnjava kada se podaci prebacuju izmedju aplikacija preko mreze ili Interneta. Spominjao sam u proslim postovima, spomenuti cu ih opet:

7. Application layer
6. Presentation layer
5. Session layer
4. Transport layer
3. Network layer
2. Data Link layer
1. Physical layer

Moramo zapamtiti da jedan sloj ne predstavlja jedan protokol, vec grupu protokola koji postoje i rade u jednom sloju. Tako mozemo reci da za aplikacijski sloj, koriste se: FTP, HTTP, HTTPS, SSH, TELNET i drugi, dok za Network sloj koristimo IP protokol. U Transportnom sloju dva koja se koriste su TCP i UDP protokoli.

Vazna stvar za znati jeste da protokoli rade samo sa svojim nazovimo ih dvojnicima koji se nalaze i na racunaru A (posiljalac) i racunaru B (primalac) i ovaj nacin povezivanja se naziva peer-to-peer komunikacija. Peer je implementacija istog protokola na istom levelu kod posiljaoca i primaoca. Peer to peer komunikacije moraju biti standardizovane da bi komunikacija uspjela. U stvarnosti, svaki protokol kod primaoca se brine o problemima protokola kod posiljaoca i ne osvrce se na slojeve iznad ili ispod njega, radi samo sa slojevima na kojima se nalazi. 

Podaci se salju od vrha do kraja slojeva, znaci podaci krecu od aplikacijskog lejera, prolazi kroz ostale slojeve do fizickog sloja, zatim se prenosi preko odredjene veze (kabel, satelit, radiofrekvencija) gdje stize na odrediste i zatim obrnutim redoslijedom se paket otpakuje i na kraju dolazi do aplikacijskog sloja na odredisnom racunaru. Slojevi ne moraju da brinu o ostalim slojevima, bitno je samo da posalju podatke slojevima iznad ili ispod njih.
Do sada smo spominjali OSI model dok cemo sada pricati o TCP/IP modelu koji ima samo 4 sloja a promjene su sledece:
  • Aplication, Session i Presentation layer iz OSI modela zamijenjeni su sa samo jednim slojem u TCP/IP modelu koji se zove Aplication layer. 
  • Data Link i Physical layer iz OSI modela zamijenjeni su u jedan sloj u TCP/IP modelu koji se zove Network Access layer.
Tako da TCP/IP o kome cemo u buducnosti pricati, i koji je najpopularniji model u 21. vijeku i koji se koristi u 99% mreza jeste TCP/IP:

4. Application layer
3. Transport layer
2. Internet layer (ili Network layer)
1. Network Access layer (Physical i Data Link layer)

1. Network Access Layer (Physical i Data Link Layer)

Network Access layer je najnizi sloj TCP/IP hijerarhije. Protokoli u ovom sloju omogucavaju sistemu da dostavi podatke na drugi sistem u jednoj mrezi. Za razliku od slojeva iznad njega, Network Access layer mora znati strukturu paketa, adrese, i ostale detalje kako bi tacno prenio podatke do drugih sistema. 

Kako dolaze novi hardverski uredjaji, tako se i protokoli u Network Access layeru moraju unapredjivati tako da TCP/IP moze koristiti novije hardverske uredjaje i omoguciti komunikaciju u mrezama sirom svijeta. Funkcije koje Network Access layer obavlja jesu enkapsulacija IP datagrama u frejmove, mapiranje IP adresa sa fizickim MAC adresama. 

2. Internet Layer (Network Layer u OSI modelu)

U Internet sloju, najpoznatiji je IP Internet Protokol i on se najvise koristi u ovom sloju. Trenutna verzija Internet protokola jeste verzija cetiri (IPv4) dok se tezi ka upotrebi seste verzije (IPv6). IPv6 nudi prosireno adresiranje i ogroman kapacitet. Posto IPv6 koristi totalno drugaciju strukturu adrese koja ima 128bitni broj, ona nije kompatibilna sa IPv4 adresom koja ima 32bitni broj. U daljem tekstu kada spomenemo IP, odnosi se na IPv4 jer IPv6 jos nije u upotrebi. IP je jako vazan protokol kojeg koristi svaki racunar koji je povezan na Internet. IP nudi uslugu primanja paketa sa sistema na sistem i pomocu IP adrese racunari se medjusobno poznaju unutar jedne mreze. To je kao da svaka kuca ima svoj redni broj u jednoj ulici i na osnovu tih brojeva, postar moze dostavljati podatke u bas tu kucu, a ne u neku drugu. Svi protokoli, u slojevima iznad i ispod Internet sloja, koriste Internet Protokol da bi dostavili paket. Svi podaci putuju kroz IP, bez obzira na destinaciju.

Internet Protokol:

IP je kamen temeljac Interneta. Njegove funkcije su sledece:

- Definisanje datagrama (DataLink layer) (datagram je osnovna jedinica prenosa u Internetu)
- Definisanje scheme i adresiranja
- Prenos podataka izmedju Transport layera i Network Access layera
- Rutiranje datagrama do odredista
- Fragmentacija i ponovno sastavljanje datagrama ukoliko je to potrebno.

IP je connectionless protokol sto znaci da nema kontrolu nad informacijama koje salje (handshake). Za razliku od connectionless protokola, connection-oriented protokol koristi neki oblik potvrde da ce podaci koje salje na drugi sistem tamo stici, dok u IP ovo se ne desava (IP je connectionless protokol, nije sigurno da ce paket stici na adresu, prije slanja dva racunara nisu uradila handshake). Kada koristimo connection-oriented protokol, tada su se dva sistema dogovorila da ce se vrsiti prenos podataka i takva konekcija je pouzdana i mozemo reci da ce se podaci dostaviti. 

Internet protokol ne posjeduje error detection. Sta to znaci? Error detection jeste mogucnost protokola da spozna greske u paketu i nakon toga, posalje novi paket umjesto paketa koji nije prosao, stoga IP se smatra nepouzdanim protokolom iako se koristi na svakom racunaru. Ne kazem da je nepouzdan i da se ne treba koristiti, cak sta vise, IPv4 je toliko zauzeo teritorije u svijetu da se tesko moze zamisliti racunar koji ga ne koristi. IPv4 dobro obavlja svoj zadatak, samo sto kada dostavi paket, on dolazi na adresu sigurno, samo sto ne provjerava da li je data pravilno primljena na odredistu.

Datagram:

Paket (engl. packet) je blok podataka koji nose informaciju od posiljaoca do odredista. Packet-switching network je mreza koja salje pakete od jedne mreze do druge, pa do konacnog odredista negdje na Internetu. Svaki paket putuje zasebno kroz mrezu, ne obracajuci paznju na ostale pakete. Datagram je naziv za taj paket koji se odnosi za Internet Protokol. Rekli smo da se podaci krecu od aplikacijskog sloja u kojem se kreiraju, i tokom spustanja do fizickog sloja, na te pakete se ubacuju podaci o adresi, nacinu slanja, da li ce koristiti TCP ili UDP i slicno. Ukoliko se taj paket nadje na Internet sloju, tada se on naziva datagram. Slika ispod prikazuje kako izgleda jedan IP datagram. 


Internet protokol dostavlja podatke provjeravajuci Destination Address dio sa slike iznad u kome se nalazi 32bitna IP adresa koja identifikuje destinaciju mreze i specificni host (racunar) u toj mrezi. Ako je IP adresa sa datagrama jednaka nekoj od adresa koja se nalazi u toj mrezi, datagram (paket) se dostavlja direktno. Ako se adresa ne nalazi na lokalnoj mrezi, paket se prosljedjuje do gateway rutera. 

Gateway je uredjaj koji prebacuje pakete izmedju fizickih mreza. Odluka koju gateway donosi da bi dostavio pakete naziva se routing (rutiranje). Internet Protokol zasluzan je za rutiranje individualnih paketa.

Rutiranje datagram paketa:

Internet gateway uredjaji su u vecini slucajeva Internet protokol ruteri jer upravo oni koriste ovaj protokol kako bi obavili rutiranje izmedju mreza. Gateways salju pakete izmedju mreza, dok hostovi to ne rade. Izuzetak je tzv. multi-homed host gdje je jedan host povezan za vise mreza, tada moze sluziti kao gateway. Kada multi-homed host prosljedjuje pakete do druge mreze, tada se ponasa kao gateway ruter. 


Slika iznad prikazuje upotrebu gateway uredjaja da bi proslijedili paket iz mreze A do mreze C. Hostovi A1 i C1 (engl. hosts, ili end systems, racunari, uredjaji) proslijedjuju pakete kroz sva cetiri sloja TCP/IP protokola, dok gateway uredjaji tj. ruteri pregledavaju samo zadnja dva sloja na kojima se rutiranje i odvija. Dakle, ruter u jednoj mrezi, ne koristi Transport niti Application sloj, vec se samo bazira na Internet sloj koji kao sto znamo radi sa Internet Protokolom, a Internet Protokol je rekli smo zasluzan za rutiranje i adrese racunara. Sa slike, Gateway G1 i G2 rade samo na Network Access i Internet sloju. Ova dva gateway uredjaja se odnose na recimo dva rutera u jednoj korporaciji ili firmi koja ima recimo cetiri departmenta ili odjeljenja u kojima rade zaposlenici. Da bi zaposlenik prenio podatke do drugog kolege koji radi na drugom racunaru, primjecujemo slijed radnje. Racunar A priprema pakete i obiljezava ih za transport, oni stizu do G1 rutera koji otpakuje paket samo do Internet sloja i pregledava na koju IP adresu taj paket treba da stigne. Kada G1 uvidi da to nije njegova IP adresa, paket se ponovo kapsulira (ponovo se vraca na isto stanje u kojem je i dosao), i salje se do sledeceg gateway rutera G2 koji ponovo otpakuje pakete, pregledava Destination Address IP adresu sa datagrama, i kada vidi da je to njegovo odrediste, salje ga na zadati racunar koji je u njegovom domenu, u domenu tog rutera. Napokon, racunar B otvara paket redoslijedom od donjeg do aplikacijskog sloja i na kraju kolega moze da pregleda sta mu je to racunar A poslao. 

Racunar A koji se nalazi zajedno sa Gateway G1 u istoj mrezi Network A, nema pojma sta se desava izvan G1 rutera. Zadak rutera G1 jeste da paket koji je stigao do njega, proslijedi do zadate adrese. Racunar A nema brigu sta ce se desiti sa datim paketom.


Uraditi ćemo još jedan primjer u kojem se spominje rutiranje ali na drugi nacin. Na slici iznad je skup mreža u kojoj je mreža kroz koju paket putuje drugačija, ili čak inkompatibilna sa nekom drugom. Racunar A1 koji je spojen sa još tri računara u Ring topologiju, koja izlazi na G1 gateway ruter. G1 ruter proslijeđuje paket kroz X.25 mrezu, spaja se na gateway G2 koji putem Etherneta proslijedjuje paket do odredista. 

Dok datagram putuje kroz razlicite tipove mreza, dolazi do momenata u kojima se ti paketi moraju smanjiti velicinom, rasparcati ih na manje dijelove. Datagram koji dolazi iz jedne mreze u drugu, mozda bude prevelik da bi se poslao u vidu jednog paketa na drugu mrezu. Ovo se dogadja samo kada je gateway ruter spojen sa fizickom mrezom koja je drugacija od njegove (X.25 i Ethernet)

Svaka mreza ima maximum transmission unit (MTU), sto predstavlja najveci paket kojeg moze podrzati. Ukoliko u jednu mrezu naidje paket koji je duzi od MTU druge mreze, tada dolazi do fragmentacije odnosno podjele jednog paketa na manje dijelove. Ovaj proces se naziva fragmentacija.

Arhitektura X.25 mreze je drugacija od Ethernet mreze, stoga se Ethernet paketi moraju smanjiti fragmentacijom, da bi mogli proci kroz X.25 i do G2 gateway rutera koji proslijedjuje pakete na odrediste.

Format svakog fragmenta je ostao isti kao i kod svakog datagrama. Nista se nije promijenilo. 


 
Pratimo sliku iznad koja predstavlja jedan datagram. Oznacena polja su Identification, Flags, i Fragmentation Offset. Tokom fragmentacije, datagram se ne mijenja. Polje Identification, govori kojem datagramu taj fragment pripada. Polje Flags govori Internet protokolu da li je spojio sve fragmente u jedan datagram. Polje Fragmentation offset govori kojem dijelu datagrama pripada taj fragment. 

Kada Internet protokol primi datagram na kojem hostu treba da bude, u nasem primjeru paket je putovao od Hosta A1 do Hosta C1, i u kojem je moram proci kroz inkompatibilnu mrezu X.25, i gdje je tokom prelaska iz jedne mreze u drugu morao biti da kazemo fragmentiran, IP mora proslijediti datagram do Transport Layer protokola. To je moguce tako sto prilikom pregledavanja datagrama, provjerava Protocol dio (slika iznad) i u kome se nalazi broj protokola. Ako zelite pogledati brojeve i kompletnu listu, kliknite ovdje.) Inace, broj TCP protokola je 6, UDP je pod brojem 17, dok za ostale brojeve mozete uci na link iznad.

Internet Control Message Protokol:

Ogroman dio Internet protokola jeste ICMP. ICMP je protokol koji ima sledece karakteristike i dosta pomaze u kontroli protoka podataka, detektovanju destinacija i adresa koje su nedohvatljive, preusmjeravanje paketa i provjere remote hostova.

Sto se tice flow control-a, kada datagram stigne prebrzo za obradu, tada destinacijski host ili gateway ruter salje ICMP Source Quench Message nazad do posiljaoca. Ona govori da posiljaoc privremeno prestane slati datagram pakete zbog zagusenosti ili opterecenosti hosta ili gatewaya. 

Kada je destinacija paketa nedostupna (unreachable), posiljaocu tog paketa salje se poruka Destination Unreachable Message. Ukoliko je nedostupna mreza ili host, tada ruter salje ovu poruku, ukoliko je port nedostupan, tada Destination Unreachable Message se salje od strane tog hosta na kome je port zatvoren.

Preusmjeravanje rute je jos jedna karakteristika ICMP-a. ICMP nudi gateway uredjajima da vrse preusmjeravanje paketa ukoliko se pronadje bolja geografska ruta za njih. Tada gateway salje posiljaocu tog paketa da se koristi drugi gateway ukoliko je to moguce. Ovo je samo moguce ukoliko na jednoj mrezi imamo vise od dva gateway uredjaja (u najcescem slucaju je to ruter), jer je nemoguce preusmjeriti paket kroz ruter koji nije u nasoj mrezi, logicno.
Jos jedna karakteristika ovog protokola koji radi sa Internet Protokolom u Internet sloju TCP/IP modela jeste to sto hostovi medjusobno mogu slati ICMP Echo Message da bi vidjeli da li je Internet protokol na destinacijskom hostu uredu i spremno za slanje. Komanda u Command Line Interface-u je ping.

3. Transport Layer

Sloj koji se nalazi iznad Internet sloja je Transpor layer. Dva najpoznatija protokola u ovom sloju su TCP i UDP protokoli. Spominjali smo da je TCP pouzdani (connection-oriented) dok je UDP protokol za koji ne mozemo garantovati da ce dostaviti paket (connectionless). Oba protokola dostavljaju podatke od Aplikacijskog sloja do Internet sloja. Programeri aplikacija imaju mogucnost odabira da li ce njihova aplikacija koristiti TCP ili UDP protokol. 

Transmission Control Protocol:

Aplikacije koje zahtijevaju sigurno dostavljanje podataka koriste TCP zato jer se prije slanja uspostavlja veza izmedju ta dva racunara da slijedi prenos podataka i kao takav garantuje njihovo dostavljanje. 

TCP nudi pouzdanost uz pomoc mehanizma koji se naziva Positive Acknowledgment with Retransmission (PAR). Sistem koji koristi PAR salje pakete ponovo i ponovo SVE dok ne dobije odgovor od primaoca da je paket stigao.

Rekli smo da svaki sloj ima nazive za pakete radi lakseg objasnjavanja problema. Tako da u Internet lejeru naziv je paket, u Data Link lejeru je to frejm dok je u Transportnom sloju naziv segment. Da napomenem, ovo se odnosi na jedan te isti paket, samo sto on prima drugacije nazive tokom slanja od aplikacijskog, do fizickog sloja. 

Jos jedna cool karakteristika TCP protokola je ta sto kada posiljalac uspjesno posalje paket primaocu, primaoc salje potvrdu da je taj paket stigao. Za svaki paket koji stigne ostecen ili nikako ne dodje, primalac ne salje potvrdu o takvom paketu. Naime, posiljalac ce za svaki paket koji nije dobio potvrdu, poslati isti jos jednom dok ne dobije pozitivan odgovor od primaoca. Na slici ispod je TCP segment.


U prethodnom postu pisao sam o poznatim protokolima koje treba da zna svako, medjutim sada cemo se detaljno bazirati na TCP i UDP.

TCP je connection-oriented protocol. Ostvaruje vezu izmedju dva hosta koja zele komunicirati. Handshake o kojem se govori je three-way-handshake jer se tri koraka izvrsavaju.


1. Host A salje Synchronize sequence numbers SYN poruku. Ova poruka govori da se Host A zeli povezati i izvrsiti konekciju i govori mu koji ce slijed koristiti (sequence number) kao polaznu tacku za svoje segmente. Sequence number se koristi da bi se znao redoslijed segmenata koji se salju. 

2. Host B odgovara sa Acknowledgment ACK i SYN porukom sa odgvarajucim nasumicnim brojem (sequence number). Takodjer ga informise sa kojim rednim brojem da krene. 

3. Host A salje segment u kome govori da je primio poruku i da je spreman da posalje podatke. 

Kada se slanje podataka zavrsi, host salje FIN segment koji zatvara konekciju dva racunara. 

TCP gleda podatke koje salje u vidu niza bajtova, ne kao zasebne pakete. Zato, TCP se brine da odrzi tacan redoslijed tih bajtova kako bi mogao sloziti paket po rednom broju. Sequence Number i Acknowledgment Number, kao sto smo ranije spominjali objasnjavajuci three-way-handshake, su polja koja u sebi sadrze broj koji ce sluziti kao smjernica kojom ce host uspjesno posloziti pakete koji su stigli na njegovu adresu. Jednostavno receno, da nema tih brojeva, primalac (host) ne bi imao pojma kako da poslozi pakete koje je primio.
U tekstu iznad kada smo objasnjavali three-way-handshake, spominjali smo da postoje neka tri koraka koja dva racunara moraju izvrsiti da bi uspostavili vezu. Poruka SYN govori drugom racunaru koji Initial Sequence Number (ISN) ce koristiti. ISN je pocetni broj slanja tih paketa i on je nasumican, zbog sigurnosti. Primjer ovakve uspostave konekcije dva racunara bi bio sledeci. 

Racunari A i B zele uspostaviti TCP konekciju:

- Racunar A salje Racunaru B SYN (Synchronize Sequence Numbers) poruku koja mu govorida zeli da uspostavi konekciju, i salje mu jedan nasumican broj npr. 1000.

- Racunar B odgovara tako sto salje ACK (Acknowledgment) i SYN. Racunar B prihvata da je nasumican broj 1000 i salje mu jos jednu poruku gdje kaze koji ce njegov ISN biti, npr 350.

- Racunar A prima poruku, i odgovara nazad sa ACK gdje mu kaze da je primio informaciju da je ISN od Racunara B 350. Tek tada je konekcija uspjesna i podaci se mogu prenijeti. Inace, three-way-handshake se izvrsi za ne vise od jedne sekunde. 

Polje Window na slici iznad govori koliko jos bajtova primalac moze da primi. Polje Window govori posiljaocu da moze poslati jos toliko bajtova jer ukoliko posiljalac dobije poruku u kojoj stoji 0 u Window polju, to mu govori da vise ne moze primalac primiti bajtova i da se slanje podataka zavrsava.

Da bi jos bolje shvatili proces konekcije kod TCP-a, pogledat cemo sliku ispod:


Prvi zadatak nam je da u glavi zamislimo dva racunara koji se zele povezati TCP protokolom. 
- Pratimo sa slike dva dijela: Data Received, podaci koje je racunar B primio, i Window 6000 koji racunaru A govori koliko jos bytova racunar B moze da primi. 
- Takodjer, ISN (Initial Sequence Number) racunara A je 0, racunar B je do sad primio 2000 bytova, tako da je sledeci ACK broj 2001. Racunar B za sada ima kapacitet da primi jos 6000 bytova (Obrati paznju na Window 6000 polje). 
- Racunar A trenutno salje grupu od 1000 bytova sa ISN 4001.
- Medjutim, racunar A nije primio Acknowledgment Number 2001 od racunara B, ali ipak nastavlja sa slanjem bytova sve dok se ti bytovi nalaze u domenu Window od 6000 bytova.
- Ukoliko posiljalac posalje sve bytove i popuni Window 6000, tj. primalac vise nema mjesta da primi bytove, tada ce racunar A poslati ponovo podatke za svaki datagram za kojeg nije dobio ACK poruku od racunara B.

Nadam se da ovo objasnjenje ima smisla. Ukratko, zeli se reci da racunar A nastavlja slati bytove sve dok ne popuni Window i ne svede ga na nulu. Kada se window polje dovede na nulu, tek tada ce racunar A ponovo poslati podatke onih paketa za koje nije primio ACK od racunara B.

TCP je takodjer zasluzan za dostavljanje podataka od Internet protokola do aplikacijskog levela. Aplikacija kojoj pripadaju ti podaci oznacena je 16bitnim brojem koji se naziva broj porta (port number). 


U poljima Source i Destination Port, postavljen je 16bitni broj koji govori TCP-u na koji port da posalje taj paket. Jako bitan zadatak TCP-a jeste da upravo dostavi ovaj paket na tacnu adresu.

4. Application Layer

Na vrhu TCP/IP se nalazi aplikacijski sloj koji ukljucuje sve procese koji koriste TCP protokol. U ovom sloju se nalazi mnostvo protokola, vecina njih nudi usluge dok se svake nove usluge ubacuju na ovaj sloj. Najpopularniji protokoli u ovom sloju su: Telnet, FTP, SMTP, HTTP, HTTPS, DNS, OSPF, NFS i drugi. Za vise o svakom od njih, posjeti post gdje sam napisao po par rijeci o ovim protokolima dok se u buducnosti zelim fokusirati na detaljnije objasnjenje svakog od njih, narocito OSPF protokolu koji se mnogo spominju vezano za rutiranje paketa kroz Internet. O ruteru i protokolima koji rade na njemu cu pisati u skorije vrijeme. 

To bi bilo to, presli smo cijeli jedan chapter ove knjige, nadam se da ste naucili dosta toga, bas kao sto sam i ja pisajuci sve ovo. 

Keep studying :)