FTP

**FTP** (  – protokol za prenos datoteka) je najčešće korišćen protokol za prenos podataka između dva računara na mreži. FTP koristi TCP/IP za mrežnu komunikaciju, što omogućava da bude pouzdan i sesijski orijentisan.

FTP veza se uspostavlja na zahtjev klijentskog računara prema serverskom računaru. Klijentski računar mora da posjeduje program koji implementira FTP protokol (tzv. FTP klijent), a serverski računar mora da posjeduje program koji prihvata konekcije na standardnom FTP portu i takođe razumije komande protokola FTP (tzv. FTP server ili FTP demon). Kada se veza uspostavi, klijentski program šalje korisničke komande serverskom programu, koji ih obavlja i šalje odgovor. Taj odgovor može biti poruka da je komanda uspiješno obavljena, datoteka koja je zahtijevana ili poruka o grešci.

## FTP komande
Slijede najčešće korišćene komande protokola FTP:

*ime se uvijek može zadati kao samo ime direktorijuma ili datoteke, ali i kao kompletna staza do istog, relativna ili apsolutna.

Kada FTP klijent uputi komandu FTP serveru, FTP server odgovara trocifrenim brojem, koji predstavlja kŏd odgovora. Kodovi su određeni FTP standardom i koriste se radi brže razmjene podataka, a klijentski programi najčešće interpretiraju ovu poruku za korisnika na jezik razumljiv ljudima. Na osnovu odgovora korisnik zna da li se komanda izvršila uspiješno i kako da nastavi rad.

## Arhitektura FTP sesije
FTP sesija se zapravo sastoji od dvije sesije: sesije za transfer (DTP - ) i kontrolne sesije (PI - ). Kontrolna sesija se pokreće prva i šalje zahtjev za uspostavljanje veze udaljenom računaru. Nakon provjere identiteta i uspostavljanja dvosmijerne veze, klijent je u mogućnosti da šalje komande za obavljanje različitih zadataka.

Uspostavljanje TCP/IP veze se vrši sa porta izabranog metodom slučajnog izbora, a port na kojem FTP server očekuje konekcije je po standardu uvijek 21.

Kada klijent napravi zahtjev za prenos podataka, tada se aktivira sesija za transfer koja vrši sam prenos. Za to vrijeme kontrolna sesija mora ostati aktivna kako bi se komande i poruke mogle razmjenjivati između klijentskog i serverskog računara.

## FTP klijenti
Programi koji implementiraju FTP protokol i dozvoljavaju krajnjem korisniku da uspostavi konekciju i vrši razmjenu datoteka sa udaljenim računarima se zovu FTP klijenti. U početku razvoja Internet tehnologije, ovi programi su bili vrlo prosti i dozvoljavali su samo direktan unos FTP komandi. Vremenom uz razvoj grafičkih interfejsa ovi programi su postali komforniji za rad i krajnji korisnik ne mora da zna komande da bi koristio protokol, nego sistemom prozora i menija zadaje zahtjeve. Na tržištu se nalazi mnoštvo komercijalnih kao i besplatnih programa, a najčešće dolaze i uz sam operativni sistem.

## Kritike
* I lozinke i sadržaji datoteka se prenose bez šifrovanja, bajt po bajt, te mogu biti presretnuti i iskorišćeni za neovlašćen pristup serveru i samom prenešenom sadržaju. Razna proširenja FTP-a rješavaju ovaj problem ubacivajući međuslojeve za šifrovanje koristeći algoritme poput SSL-a ili TLS-a.
* Protokol koristi više konekcija u jednoj transakciji, jednu za kontrolnu sesiju, po jednu za svaki zahtjev. Ovo otežava rad administratorima zaduženim za kontrolu zaštitnog zida.
* U aktivnom režimu rada, klijent odabira proizvoljan port za komunikaciju sa serverom, što takođe otežava rad zaštitnog zida koji propušta sadržaj samo na određenim portovima. Ovaj problem se najčešće rješava koristeći pasivni režim rada.
* Moguće su zloupotrebe u FTP ugrađenih mogućnosti za preusmjeravanje sadržaja da bi se sadržaj preusmjerio na neki drugi računar.
* FTP ima velike zastoje u radu zbog velikog broja komandi potrebnih za početak transakcije.
* Ne postoji kontrola integriteta podataka - ako se transakcija prekine iz nekog razloga, primalac nema način da provjeri da li je primljeni sadržaj kompletan. Određeni serveri sadrže proširenja koja uz sadržaj šalju i MD5 sumu (koristeći komandu `SITE MD5`) ili CRC odsječak, ali čak i tada je neophodno da ih klijent eksplicitno zatraži. U nedostatku takvih metoda, provjera kompletnosti se najčešće odvija nezavisno od FTP protokola.
* Pri prenosu datoteka, ne prenose se i dodatni podaci poput datuma kreiranja, poslednje izmjene isl. Po prijemu, datoteci se dodjeljuju trenutni datum i vrijeme. Proširenja FTP-a, poput SFTP-a, dozvoljavaju i prenos ovakvih atributa. Trenutno je u planu da se proširenjem standarda FTP-a uključe i ovakve mogućnosti, ali većina popularnih klijenata i servera za FTP to još uvijek ne podržava.

## Literatura
* Brian Komar, 1999., „TCP/IP“, Kompjuter biblioteka. 

## Vanjske veze
* [ftp://ftp.rfc-editor.org/in-notes/rfc959.txt Request For Comments - zvanični standard]

## Povezano
* HTTP
* TCP/IP

* Spisak internet protokola