FTP edo File Transfer Protocol (euskaraz: Fitxategien Transferentziarako Protokoloa) edozein sistema eragileren artean fitxategiak trukatzeko aukera ematen duen sare protokoloa da. RFC 959 agirian deskribatzen den protokolo hau 1971n sortu zen, eta gaur egun fitxategi-transferentziarako beste protokolo batzuk existitzen diren arren, oso erabilia da oraindik.
FTP protokoloan oinarritzen den edozein aplikazioren osagai garrantzitsuenak hauek dira:
FTP-k TCP-ren gainean bakarrik egiten du lan. FTP zerbitzariek defektuz 21. portuan entzuten diete FTP bezeroen konexioei. Bezero batek portu honetara ezartzen duen konexioa kontrol fluxua sortzen du. Kontrol fluxuaren bidez, komandoak pasatzen zaizkio zerbitzariari, batzuetan fluxu hori zerbitzari bezero norantzan joan daitekeelarik. Fitxategi transferentzia gertatu dadin ordea, beste konexio mota bat behar da, datu fluxua deitzen dena. Transferentzia modua kontutan hartuta, datu fluxuren hasieratze prozesua desberdina da.
Modu aktiboan, FTP bezeroak zorizko portu bat (>1023) irekitzen du, FTP zerbitzariari bidaltzen dio kontrol fluxuaren gainean entzuten ari den zorizko portuaren zenbakia eta itxaron egiten du FTP zerbitzariak konexioa ezarri dezan. FTP zerbitzariak datu konexioa hasieratzen duenean FTP bezero norabidean iturri portuari 20. portua lotzen dio. Modu aktiboa erabili ahal izateko, bezeroak PORT komandoa bidaltzen du, IP helbidea eta portua argumentu bezala doazela. IP eta portuarentzat formatua honakoa da: "h1,h2,h3,h4,p1,p2". Eremu bakoitza zerbitzariaren IP helbidearen 8 biteko errepresentazio hamartarra da, aukeratutako datu portuak jarraitzen diolarik. Adibidez, 192.168.0.1 IP helbidea duen eta datu konexioa 1025 portuan entzuten ari den bezeroak “PORT 192,168,0,1,4,1” komandoa bidaliko du. Portuaren eremua honela irakurri behar da: 4*256 + 1 = 1025.
Modu pasiboan, FTP zerbitzariak zorizko portu bat (>1023) irekitzen du, zerbitzariaren IP helbidea eta portua bidaltzen dio bezeroari konektatu dadin , non kontrol fluxua entzuten ari den eta FTP bezeroaren konexio bati itxaroten dio. Kasu honetan FTP bezeroak konexioaren igorle portua lotzen dio 1023 baino handiagoa den zorizko portu bati. Modu pasiboa erabiltzeko, bezeroak PASV komandoa bidaltzen du, zeini zerbitzariak “227 Entering Passive Mode (127,0,0,1,78,52)" moduko zerbaiti erantzungo dion. IP helbidearen eta portuaren sintaxia PORT komandoren argumentuen berdina da.
Modu pasibo hedatuan, FTP zerbitzariak modu pasiboan bezala lan egiten du, baina kasu honetan portu zenbakia bakarrik transmititzen du eta bezeroak suposatzen du hasieratik konektatuta zegoen IP helbide berdinera konektatu behar dela. Modu pasibo hedatua RFC 2428 agiriak gehitu zuen 1998ko irailean. Datuak datu fluxuaren bidez transmititzen ari diren bitartean, kontrol fluxua geldirik dago. Honek arazoak sor ditzake suhesien bidez egiten diren datu transferentzia handiekin, hauek, sesioak itxi ditzakete kontrol fluxua geldirik denbora asko sumatzen dutenean. Fitxategia ondo transferitzen ari den bitartean datu konexioaren bidez, suhesiak kontrol sesioa itzali dezake eta ondorioz errore bat sortu.
FTP protokoloak moztutako datu jaitsierekin jarraitzea onartzen du REST komandoa erabiliz. Bezeroak , argumentu bezala jasotako byte kopurua REST komandoari bidaltzen dio eta transferentzia berrabiarazten du. Komando-lerro motako bezero batzuetan, asko erabiltzen ez den komando garrantzitsu bat dago, REGET (berriro lortu esanahiarekin) moztutako GET komando bat berrabiaraztea ahalbidetzen duena.
Moztu den datu igoera batekin jarraitzea ez da hain erraza. FTP protokoloak zerbitzariko fitxategi bateri informazioa gehitzeko APPE komando erabiltzen duen harren, bezeroak ezin du jakin zehatz-mehatz zein posiziotan moztu den transferentzia. Beste era batera fitxategiaren tamaina lortu behar du, adibidez katalogo bat listatuz edo SIZE komandoa erabiliz. ASCII moduan, moztutako transferentziekin jarraitzea arazoak eman ditzake bezeroak eta zerbitzariak lerro amaierako karaktere desberdinak erabiltzen badituzte.
RFCk dioen bezala, FTPren helburuak hauek dira:
Komandoen eta erantzunen sintaxia oso sinplea da, 7 biteko ASCII formatuan idazten baitira. Beraz, FTP protokoloa karaktere modukoa eta, honela, DNS mezuak ez bezala, gizakiok FTP komandoak irakurri ditzakegu. Komando bakoitzean bi eremu besterik ez daude: komandoren identifikazioa eta komandoren argumentuak (existitzen badira). Identifikazioa 4 ASCII karaktereek egiten dute; argumentuak ere ASCII kodean agertzen dira . Komandoen bukaera bereizteko (eta erantzunena), return karaktere bat eta lerro-bukaeraren karakterea erabiltzen dira. Komandorik erabilienak taulan agertzen direnak dira:
Komando bakoitzari erantzun bat ematen dio zerbitzariak. Erantzunak hiru digituko ASCII zenbakiak dira, gehi hautazkoa den ASCII testu bat, erantzuna adierazten duena. Hauek dira erantzun batzuk, beren mezu posibleekin:
Jatorrizko FTP espezifikazioa fitxategiak trukatzeko modu ez segurua da, ez dagoelako erarik datuak modu enkriptatuan bidaltzeko. Honek esan nahi du sare konfigurazio gehienetan, erabiltzaile izenak, pasahitzak, FTP komandoak eta transferitutako fitxategiak edozeinek ikusi edo irakurri ditzakeela paketeen sniffer bat erabiliz. Hala ere, arazo hau mankomuna da SSL baino lehen sortu ziren Internet protokolo askotan, adibidez, HTTP, SMTP, eta Telnet. Arazo honentzako irtenbiderik errazena SFTP (SSH File Transfer Protocol) edo FTPS (FTP over SSL) erabiltzea da. Honek, SSL edo TLS enkripzioa gehitzen dio FTPri RFC 4217 agirian esaten den bezala.