Protocolu de tresferencia de ficheros

El **Protocolu de tresferencia de ficheros** (n'inglés **File Transfer Protocol** o **FTP**) ye un protocolu de rede pa la tresferencia de ficheros ente sistemes coneutaos a una rede TCP (Transmission Control Protocol), basáu na arquiteutura veceru-sirvidor. Dende un equipu veceru puede coneutase a un sirvidor pa baxar ficheros dende él o pa unvia-y ficheros, independientemente del sistema operativu utilizáu en cada ordenador.

El serviciu FTP ye ufiertáu pola capa d'aplicación del modelu de capes de rede TCP/IP al usuariu, utilizando de normal el puertu de rede 20 y el 21. Un problema básicu de FTP ye que ta pensáu pa ufiertar la máxima velocidá na conexón, pero non la máxima seguridá, yá que tol intercambiu d'información, dende l'usuariu y contraseña del usuariu nel sirvidor hasta la tresferencia de cualquier ficheru, realízase en testu planu ensin nengún tipu de cifráu, colo qu'un posible atacante puede prindar esti tráficu, aportar al sirvidor y/o apoderase de los ficheros tresferíos.

Pa solucionar esti problema son de gran utilidá aplicaciones como SCP y SFTP, incluyíes nel paquete SSH, que dexen tresferir ficheros pero cifrando tol tráficu.

## Historia
El protocolu FTP empezó a utilizase n'abril de 1971, publicáu como'l RFC 114, primero qu'esistiera la pila TCP/IP. La estructura xeneral foi establecida en 1973. Foi modificáu delles vegaes, añadiendo nuevos comandos y funcionalidades. A la fin publicóse'l RFC 959 n'ochobre de 1985, que ye la que s'utiliza anguaño.

## El Modelu FTP

Nel modelu, l'intérprete de protocolu (PI) d'usuariu empecipia la conexón de control nel puerto 21. Les órdenes FTP estándar xenerar la PI d'usuariu y tresmítense al procesu sirvidor al traviés de la conexón de control. Les respuestes estándar unviar dende la PI del sirvidor hasta la PI d'usuariu pola conexón de control como respuesta a les órdenes.

Estes órdenes FTP especifiquen parámetros pa la conexón de datos (puertu de datos, mou de tresferencia, tipu de representación y estructura) y la naturaleza de la operación sobre'l sistema de ficheros (atroxar, recuperar, añader, desaniciar, etc.). El procesu de tresferencia de datos (DTP) d'usuariu o otru procesu nel so llugar, tien d'esperar a que'l sirvidor empecipie la conexón al puertu de datos especificáu (puertu 20 en mou activu o estándar) y tresferir los datos en función de los parámetros que s'especificaren.

Vemos tamién na diagrama que la comunicación ente vecera y sirvidor ye independiente del sistema de ficheros utilizáu en cada ordenador, de manera que nun importa que los sos sistemes operativos sían distintos, porque les entidaes que se comuniquen ente sigo son les PI y los DTP, qu'usen el mesmu protocolu estandarizado: el FTP.

Tamién hai que destacar que la conexón de datos ye bidireccional, esto ye, puede usase simultáneamente pa unviar y pa recibir, y nun tien por qué esistir tol tiempu que dura la conexón FTP. Pero tenía nos sos empiezos un problema, y yera la llocalización de los sirvidores na rede. Esto ye, l'usuariu que quería baxar dalgún ficheru por aciu trump tenía de conocer en qué máquina taba allugáu. La única ferramienta de busca d'información qu'esistía yera Gopher, con toles sos llimitaciones.

### Primer buscador d'información
Gopher significa 'llanzase sobre' la información. Ye un serviciu que'l so oxetivu ye la llocalización de ficheros a partir del so títulu. Consiste nun conxuntu de menús de recursos allugaos en distintes máquines que tán intercomunicadas. Cada máquina sirve un área d'información, pero la so organización interna dexa que toes elles funcionen como si tratar d'una sola máquina. L'usuariu salea al traviés d'estos menús hasta alcontrar la información buscada, y desconoz esautamente de qué máquina ta descargando dicha información. Cola llegada d'Internet, los potentes motores de busca dexaron el serviciu Gopher, y la llocalización de los sirvidores FTP dexó de ser un problema. Na actualidá, cuando l'usuariu descarga un ficheru a partir d'un enllaz d'una páxina web nun llega nin a saber que lo ta faciendo dende un sirvidor FTP. El serviciu FTP evolucionó a lo llargo del tiempu y güei día ye bien utilizáu n'Internet, en redes corporatives, Intranets, etc. Soportáu por cualesquier sistema operativu, esiste gran cantidá de software basáu nel protocolu FTP.

## Servidor FTP
Un sirvidor FTP ye un programa especial que s'executa nun equipu sirvidor de normal conectáu a Internet (anque pue tar conectáu a otros tipos de redes, LAN, MAN, etc.). La so función ye dexar l'intercambiu de datos ente distintos sirvidores/ordenadores.

Polo xeneral, los programes sirvidores FTP nun suelen atopase nos ordenadores personales, polo qu'un usuariu de normal va utilizar el FTP pa conectase remotamente a unu y asina intercambiar información con él.

Les aplicaciones más comunes de los sirvidores FTP suelen ser el alojamiento web, nel que los sos veceros utilicen el serviciu pa xubir les sos páxines web y los sos ficheros correspondientes; o como sirvidor de copia de seguridá de los ficheros importantes que pueda tener una empresa. Pa ello, esisten protocolos de comunicación FTP por que los datos tresmítanse cifraos, como'l SFTP (*Secure File Transfer Protocol*).

## Veceru FTP

Cuando un navegador nun ta forníu cola función FTP, o si quier cargase ficheros nun ordenador remotu, va precisase utilizar un programa veceru FTP. Un veceru FTP ye un programa que s'instala nel ordenador del usuariu, y qu'emplega el protocolu FTP pa conectase a un sirvidor FTP y tresferir ficheros, yá sía pa baxalos o pa xubilos.

Pa utilizar un veceru FTP, precísase conocer el nome del ficheru, l'ordenador en que mora (sirvidor, nel casu de descarga de ficheros), l'ordenador al que quier tresferise'l ficheru (en casu de querer xubilo nós al sirvidor), y la carpeta na que s'atopa.

Dellos veceros de FTP básicos en modo consola vienen integraos nos sistemes operativos, incluyendo Microsoft Windows, DOS, GNU/Linux y Unix. Sicasí, hai disponibles veceros con opciones añadíes y interfaz gráfica. Anque munchos navegadores tienen yá integráu FTP, ye más confiable a la de conectase con sirvidores FTP non anónimos utilizar un programa veceru.

### Accesu anónimu
Los sirvidores FTP anónimos ufierten los sos servicios llibremente a tolos usuarios, dexen aportar a los sos ficheros ensin necesidá de tener un 'USER ID' o una cuenta d'usuariu. Ye la manera más cómoda fuera del serviciu web de dexar que tol mundu tenga accesu a cierta información ensin que pa ello l'alministrador d'un sistema tenga que crear una cuenta pa cada usuariu.

Si un sirvidor tien serviciu 'FTP anonymous' solamente con teclear la pallabra «anonymous», cuando pregunte pol to usuariu vas tener accesu a esi sistema. Nun se precisa nenguna contraseña preestablecida, anque vas tener qu'introducir una namái pa esi momentu, de normal suelse utilizar la direición de corréu electrónicu propia.

Solamente con eso consíguese accesu a los ficheros del FTP, anque con menos privilexos qu'un usuariu normal. De normal solo vas poder lleer y copiar los ficheros que sían públicos, asina indicaos pol alministrador del sirvidor al que queramos coneutar.

De normal, utilízase un sirvidor FTP anónimu pa depositar grandes ficheros que nun tienen utilidad si nun son tresferíos a la máquina del usuariu, como por casu programes, y acútense los sirvidores de páxina web (HTTP) p'almacenar información testual destinada a la llectura en llinia.

### Accesu d'usuariu
Si deseyar tener privilexos d'accesu a cualesquier parte del sistema de ficheros del sirvidor FTP, de cambéu de ficheros esistentes, y de posibilidá de xubir los nuesos propios ficheros, xeneralmente suelse realizar por aciu una cuenta d'usuariu. Nel sirvidor guarda la información de les distintes cuentes d'usuariu que pueden aportar a él, de manera que pa empecipiar una sesión FTP tenemos d'introducir una autentificación (n'inglés: *login*) y una contraseña (n'inglés: *password*) que nos identifica unívocamente.

### Veceru FTP basáu en Web
Un «veceru FTP basáu en Web» nun ye más qu'un veceru FTP al cual podemos aportar al traviés del nuesu navegador web ensin necesidá de tener otra aplicación pa ello. L'usuariu coneutar por aciu HTTP a un sirvidor web, y el sirvidor web coneutar por aciu FTP al sirvidor de ficheros. El sirvidor web actúa d'intermediariu faciendo pasar la información dende'l sirvidor FTP nos puertos 20 y 21 escontra'l puertu 80 HTTP que ve l'usuariu.

Siempres hai momentos en qu'atopamos fora de casa, nun llevamos l'ordenador portátil enriba y precisamos realizar dalguna xera urxente dende un ordenador d'accesu públicu, d'un amigu, del trabayu, la universidá, etc. Lo más común ye que nun tean instalaes les aplicaciones que precisamos y en munchos casos hasta escarecemos de los permisos necesarios pa realizar la so instalación. Otres vegaes tamos detrás d'un proxy o cortafueos que nun nos dexa aportar a sirvidores FTP esternos.

Al disponer d'un veceru FTP basáu en Web podemos aportar al sirvidor FTP remotu como si tuviéramos realizando cualesquier otru tipu de navegación web. Al traviés d'un veceru FTP basáu en Web vas poder, crear, copiar, camudar el nome de y esaniciar ficheros y direutorios. Camudar permisos, editar, ver, xubir y baxar ficheros, según cualesquier otra función del protocolu FTP que'l sirvidor FTP remotu dexe.

### Accesu de convidáu
L'accesu ensin restricciones al sirvidor qu'apurren les cuentes d'usuariu implica problemes de seguridá, lo que dio llugar a un tercer tipu d'accesu FTP denomináu convidáu (guest), que puede contemplase como un amiestu de los dos anteriores.

La idea d'esti mecanismu ye la siguiente: tratar de dexar que cada usuariu conecte a la máquina por aciu la so login y la so password, pero evitando que tenga accesu a partes del sistema de ficheros que nun precisa pa realizar el so trabayu, d'esta forma va aportar a una redolada acutada, daqué bien similar a lo qu'asocede nos accesos anónimos, pero con más privilexos.

### Exemplos de Veceros FTPs
Ente los varios veceros FTP qu'esisten, pueden mentase los siguientes:
* Free FTP Upload Manager
* F->IT
* net2ftp
* Web FTP.co.uk
* Web-Ftp
* Jambai FTP
* ftp4net
* PHP FTP Client
* Asuk PHP FTP
* Weeble File Manager
* FileZilla

## Moos de conexón del veceru FTP
FTP almite dos moos de conexón del veceru. Esteos moos denómense *activu* (o Estándar, o PORT, por cuenta de que'l veceru unvia comandos triba PORT al sirvidor pola canal de control al establecer la conexón) y *pasivu* (o PASV, porque nesti casu unvia comandos triba PASV). Tantu nel mou Activu como nel mou Pasivu, el veceru establez una conexón col sirvidor por aciu el puertu 21, qu'establez la canal de control.

### Mou activu

En mou Activu, el sirvidor siempres crea la canal de datos nel so puertu 20, ente que nel llau del veceru la canal de datos acomuñar a un puertu aleatoriu mayor que'l 1024. Pa ello, el veceru manda un comandu PORT al sirvidor pola canal de control indicándo-y esi númberu de puertu, de manera que'l sirvidor pueda abrir una conexón de datos por onde se van tresferir los ficheros y los enumeraos, nel puertu especificáu.

Lo anterior tien un grave problema de seguridá, y ye que la máquina vecera ten de tar dispuesta a aceptar cualquier conexón d'entrada nun puertu cimeru al 1024, colos problemes qu'ello implica si tenemos l'equipu conectáu a una rede insegura como Internet. Ello ye que los cortafueos que s'instalen nel equipu pa evitar ataques de xuru van refugar eses conexones aleatories. Pa solucionar esto desenvolvióse'l mou *pasivu*.

### Mou pasiva

Cuando'l veceru unvia un comandu PASV sobre la canal de control, el sirvidor FTP indíca-y pela canal de control, el puertu (mayor a 1024 del sirvidor. Exemplu:2040) al que tien de conectase'l veceru. El veceru empecipia una conexón dende'l puertu siguiente al puertu de control (Exemplu: 1036) escontra'l puertu del sirvidor especificáu enantes (Exemplu: 2040).

Antes de cada nueva tresferencia tantu nel mou Activu como nel Pasivu, el veceru tien d'unviar otra vegada un comandu de control (PORT o PASV, según el mou nel que coneutara), y el sirvidor va recibir esa conexón de datos nun nuevu puertu (aleatoriu si ye en mou pasivu o pol puertu 20 si ye en mou activu).

### Tipos de tresferencia de ficheros en FTP
Nel protocolu FTP esisten 2 tipos de tresferencia en ASCII y en binarios. Ye importante conocer cómo tenemos de tresportar un ficheru a lo llargo de la rede, si nun utilizamos les opciones fayadices podemos destruyir la información del ficheru. Por eso, al executar l'aplicación FTP, tenemos d'alcordanos d'utilizar unu d'estos comandos (o poner la correspondiente opción nun programa con interfaz gráfica):

* Tipu ASCII
Fayadizu pa tresferir ficheros que solo contengan calteres imprimibles (ficheros ASCII, non ficheros resultantes d'un procesador de testu), por casu páxina HTML, pero non les imáxenes que puedan contener. Tresfórmense dellos símbolos de control pa caltenelos compatibles ente distintos sistemes, por casu, si'l ficheru ta agospiáu sobre un sirvidor Linux, el saltu de llinia pa los ficheros de testu ye "\n" (byte 10 en decimal). Si'l veceru ye un sistema Mac, el saltu de llinia ye "\r" (byte 13 en decimal), esti mou camuda estos símbolos de control por que el ficheru sía legible en dambos llaos, al igual que si s'unvia a un sistema Windows, el saltu de llinia ye "\r\n" (dos bytes, 13 y 10). Si usa esti mou en ficheros que nun son de testu ensin formatu, nel casu d'intercambiase ente distintos sistemes, esi archivu va quedar corruptu.

* Tipu Binariu
Esti tipu ye usáu cuando se trata de ficheros comprimíos, executables pa PC, imáxenes, archivos d'audio, ente otros.

Exemplos de cómo tresferir dellos tipos de ficheru dependiendo de la so estensión:

Na rede esisten diverses soluciones de software que desenvuelve esti tipu de teunoloxía, los más conocíos, son Filezilla (software llibre) y CuteFTP (shareware).

## Comandos FTP

## Códigos de respuesta de FTP
De siguío amuésase un resume de la respuesta de los códigos FTP que pue devolver un sirvidor FTP. Estos códigos hanse normalizáu en RFC 959 pola IETF. El códigu de respuesta ye un valor de tres díxitos. El primer díxitu utilizar pa indicar una de trés posibles resultaos-l'ésitu, el fracasu o pa indicar un error o una respuesta incompleta:

* 2yz - rempuesta Éxitu
* 4yz o 5yz - Nun hai respuesta
* 1yz o 3yz - Un error o una respuesta incompleta

El segundu díxitu define la clas d'error:

* x0z - Sintaxis. Estes respuestes referir a errores de sintaxis.
* x1z - Información. Les respuestes a les solicitúes d'información.
* x2z - Conexones. Respuestes en referencia al control y les conexones de datos.
* x3z - Autenticación y contabilidá. Respuestes pal procesu d'entamu de sesión y los procedimientos contables.
* x4z - Non definíu.
* x5z - Sistema de ficheros. Estes respuestes tresmiten códigos d'estáu del sistema de ficheros del sirvidor.

El tercer díxitu del códigu de respuesta utilizar p'apurrir detalles adicionales pa caúna de les categoríes definíes pol segundu díxitu.

## Conexón a un sirvidor FTP protexíu dende navegador
P'aniciar una sesión nun sirvidor FTP que rique una contraseña teclee l'URL d'esta forma:

``

Onde `<usuariu>` ye'l nome d'usuariu, `<sirvidor ftp>` ye'l sirvidor FTP, `<contraseña>` ye la contraseña d'accesu, y `<url-ruta>` ye'l direutoriu onde empecipiamos sesión.

Exemplu: ``

## Ver tamién
* Archie
* FTPS
* TFTP
* OFTP
* File eXchange Protocol
* PTP, Picture Transfer Protocol
* MTP, Media Transfer Protocol (una estensión del PTP)
* SSH File Transfer Protocol
* Network File System
* Sistema de ficheros
* Sistema de ficheros distribuyíu

## Sirvidores FTP
* Sirvidor FTP (Llista)
* FileZilla Server (Windows)
* Pure-FTPd (Unix)
* VsFTPd (Unix)
* ProFTPd (Unix)

## Enllaces esternos
* RFC 959 – File Transfer Protocol
* RFC 1579 – Firewall Friendly FTP
* RFC 2228 – FTP Security Extensions
* RFC 2428 – FTP Extensions for IPv6 and NATs
* RFC 2640 – Internationalization of the File Transfer Protocol

;Protocolu *
Raw FTP command list
* FTP Sequence Diagram 
* FTP Server Test (Online)

## Referencies