# Fitxategien Transferentziarako Protokoloa

Sare eta teknologia protokoloak* :
| Aplikazio geruza | DNS, FTP, HTTP, HTTPS, IMAP, IRC, NFS, NNTP, NTP, POP3, SMB/CIFS, SMTP, SNMP, SSH, Telnet, SIP, gehiago |
| Aurkezpen geruza | ASN.1, MIME, SSL/TLS, XML, gehiago |
| Saio geruza | NetBIOS, gehiago |
| Garraio geruza | SCTP, SPX, TCP, UDP, gehiago |
| Sare geruza | AppleTalk, IP, IPX, NetBEUI, X.25, gehiago |
| Lotura geruza | ATM, Ethernet, Frame Relay, HDLC, PPP, Token Ring, Wi-Fi, STP, gehiago |
| Geruza fisikoa | Kable ardazkide, Zuntz optiko, Pare kordatu, Mikrouhin-sarea, Irrati bidezko sarea, RS-232, gehiago |
| *OSI ereduaren arabera ||
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.

## Aplikazioaren osagaiak

FTP protokoloan oinarritzen den edozein aplikazioren osagai garrantzitsuenak hauek dira:
* Bezeroa: Ondoko hiru zati hauek ditu: erabiltzailearekiko interfazea, fitxategi-sistema lokalarekiko interfazea, eta zerbitzariarekiko harremanetarako zatia. Azken hau da FTP protokoloak arautzen duena eta estandarizatuta dagoena. Modu askotako bezeroak daude merkatuan: komando-lerroko interfazea dutenak eta leiho moduko interfazedunak, doakoak eta ordaindu beharrekoak ...
* Zerbitzariak: fitxategi-sistema lokalarekiko interfazea eta bezeroarekiko harremanetarako zatia bakarrik dituzte, ez dutelako erabiltzaileekin lan zuzena egiten. Badaude zerbitzari pribatuak (baimendutako erabiltzaileak bakarrik erabili ditzakete) eta publikoak, edozein erabiltzailek erabiltzeko prest anonymous (izengabe) erabiltzaile bezala.
* Protokoloa: zerbitzari batekin harremanetan jartzeko erabiltzaile baten izena eta pasahitza eman behar denez, konexioaren bidezko aplikazio-mailako protokoloa da FTP.
* Informazioa: beste aplikazioetan ez bezala, FTP-ren bidez elkarri trukatutako informaziorako egiturarik ez da definitzen. Fitxategiak bit-multzoak besterik ez dira. Egia esan, protokoloak badu modu berezia ASCII kodeko fitxategiak mugitzeko, baina erredundantea da. Normalena, aplikazioa bit moduan egikaritzea da.

## FTP protokoloa

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:
* Fitxategien trukatzea bultzatzea.
* Esplizituki edo inplizituki urrutiko ordenagailuen erabilpena sustatzea.
* Zerbitzari desberdinetan fitxategiak gordetzeko modu desberdinetatik babestea erabiltzailea.
* Informazioa transferitzea modu fidagarri eta eraginkorrean.

## FTP komandoak eta erantzunak

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:
| Komandoa | Parametroak | Esanahia |
| USER | Erabiltzaileren izena | Saioa irekitzeko eskaera |
| PASS | Erabiltzailearen pasahitza | Erabiltzaileren pasahitza bidaltzeko eskaera |
| LIST | Parametrorik ez | Zerbitzariari eskatzen dio uneko katalogoko fitxategien zerrenda bezeroari bidaltzeko |
| RETR | Fitxategi baten izena | Fitxategi bat ekartzeko eskaera |
| STOR | Fitxategi baten izena | Fitxategi bat bidaltzeko eskaera |
| PORT | Bezeroaren IP helbidea eta portua | Zerbitzariari bezeroak datu-konexioaren ezarpen pasiboa non egin duen adierazten dio |
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:
| Erantzunaren kodea | Esaldia |
| 331 | Username OK, password required |
| 125 | Data connection already open; transfer starting |
| 425 | Can’t open data connection |
| 452 | Error writing file |

## Segurtasun arazoak

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.

## Kanpo loturak

* RFC 959 — File Transfer Protocol (FTP). J. Postel, J. Reynolds. 1985.
* RFC 1579 — Firewall-Friendly FTP
* RFC 2228 — FTP Segurtasun Hedapenekin
* RFC 2428 — IPv6 eta NAT -entzat hedapenak eta Modu Pasibo Hedatua 1998.
* RFC 3659 — FTP-rentzat hedapenak. P. Hethmon. March-2007.
* Raw FTP command list - FTP komandoen lista ingelesez
* FTP Sequence Diagram - FTP saio baten sekuentzia diagrama ingelesez (PDF formatuan)

### Zerbitzariak

* FTP Server Test (Online)
* FileZilla Server (Windows)
* Pure-FTPd (Unix)
* VsFTPd (Unix)
* ProFTPd (Unix)
* Datuak: Q42283
* Multimedia: File transfer protocol / Q42283