Servizo de transferencia de ficheiros

De Manuais Informática - IES San Clemente.
Revisión del 14:34 24 dic 2019 de Cristina (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Nun servizo de transferencia de ficheiros, o principal obxectivo é transmitir arquivos entre o equipo servidor e os equipos clientes. O servidor dispón dun ou varios directorios ou cartafoles onde os clientes poden realizar (se teñen os permisos para iso) calquera acción básica sobre arquivos e subdirectorios ou subcartafoles. Entre esas accións, un usuario poderá subir ou cargar arquivos dende o seu ordenador cliente ao ordenador servidor e poderá baixar ou descargar arquivos dende o ordenador servidor ao ordenador cliente.

O servizo de transferencia de ficheiros permitirá con total transparencia que no cliente se poida utilizar un sistema de arquivos distinto ao que se use no servidor. Por exemplo, o servidor poderá usar o sistema de arquivos ext3 de Linux e o cliente o sistema NTFS de Windows e iso non terá ningunha influencia na transferencia nin en como se teña que traballar no cliente.

O protocolo estándar para o servizo de transferencia de arquivos é FTP[1] (File Transfer Protocol, traducido como Protocolo de Transferencia de Ficheiros). As primeiras probas do servizo FTP foron levadas a cabo en 1971 polo Instituto Tecnolóxico de Massachusetts (MIT). Sobre o protocolo fóronse facendo sucesivas actualizacións para mellorar a súa funcionalidade.

Por exemplo, pode ser interesante instalar o servizo FTP sobre un equipo servidor web para que o administrador do sitio web poida subir arquivos ao sitio web dende calquera ordenador con posibilidade de conectarse a través da rede co servidor.

O protocolo FTP

O protocolo FTP é unha dos primeiros protocolos desenvolvidos para a arquitectura TCP/IP. A súa primeira versión, cun funcionamento moi básico, descríbese no RFC 141. Dende esa primeira implementación fóronse desenvolvendo sucesivas melloras que se reflexaron en sucesivos documentos RFC. A versión actual do protocolo recóllese no RFC 959[2] de outubro de 1985.

FTP é un protocolo do nivel de aplicación. Permite establecer unha conexión cliente/servidor para transferir arquivos do servidor ao cliente (descarga) ou do cliente ao servidor (subida). As conexións FTP establécense sobre conexións TCP de nivel de transporte.

Os obxectivos principais do protocolo FTP descríbense na introdución do RFC 959 son:

  • Promover a compartición de arquivos entre equipos.
  • Animar ao uso indirecto ou implícito (a través de programas) de servidores remotos.
  • Establecer transferencias de arquivos que teñan total independencia dos sistemas de arquivos usados en cliente e servidor.
  • Transferir arquivos de forma eficaz e fiable.

FTP permite varias operacións sobre arquivos remotos (situados nun servidor): subir arquivos, baixar arquivos, borrar arquivos, crear cartafoles. FTP permite que un usuario xestione ou administre directamente as transferencias de arquivos dende unha terminal e mediante un conxunto de comandos FTP dispoñibles ou que o faga mediante calquera outro programa (de interface gráfica ou de texto) que implemente o protocolo.

O protocolo FTP non é un protocolo seguro xa que transmite a información en texto plano, tal como é codificada na orixe. Aínda que ao realizar a conexión FTP, hai unha autenticación de usuario, transmítense o nome da contrasinal sen encriptar. Unha solución para ter conexións FTP seguras é tunelizar as conexións FTP sobre conexións seguras baixo o protocolo SSH.

Unha alternativa para transferencias de arquivos seguras é o protocolo SFTP. Este protocolo, ao igual que FTP permite realizar unha serie de operacións sobre arquivos remotos.

Funcionamento

O funcionamento das conexións FTP baséase no modelo de conexión cliente/servidor. O servidor pon a disposición dos clientes un ou varios directorios nos que os usuarios poden realizar accións sobre os seus arquivos. Cando un usuario inicia unha conexión cun servidor FTP dende un cliente, é autenticado (pídese o seu nome e contrasinal) polo servidor. Cada usuario poderá acceder aos directorios nos que teña permisos de acceso e poderá realizar neles as accións para as que estea autorizado.

FTP Cliente Servidor

Nas conexións FTP, aos directorios que o servidor FTP pon a disposición dos clientes chámaselles directorios remotos e aos arquivos que hai dentro deles arquivos remotos. Aos directorios e arquivos de equipos clientes usados nas transferencias chamarémolos directorios locais e arquivos locais.

Unha conexión FTP desenvólvese da seguinte forma:

  • Un usuario inicia un cliente FTP e solicita unha conexión cun servidor identificándose.
  • Se se establece conexión o cliente, a petición do usuario, vai enviar comandos ou ordes FTP ao servidor solicitando realizar accións.
  • O servidor procesa os comandos, realiza as accións solicitadas e envía respostas FTP ao cliente.

Se a acción solicitada é unha transferencia dun arquivo, iníciase un proceso de transferencia de datos. Non debes confundir unha resposta cunha transferencia de datos. Por exemplo, ao solicitar a descarga dun arquivo, a resposta pode ser que o arquivo se encontrou e enviou con éxito, mentres que a transferencia de datos é o proceso de transmisión do contido do arquivo.

Comandos FTP

Os comandos FTP son cadeas de caracteres formadas polo nome do comando e un ou varios parámetros separados con espazos. Os comandos FTP son de tres tipos:

  • Comandos de control de acceso: Por exemplo, para autenticar o usuario (USER e PASS).
  • Comandos de parámetros de transferencia: Para especificar porto de conexión, modos de conexión e tipos de transferencia.
  • Comandos de servizo FTP: Para realizar accións sobre os directorios e arquivos remotos como subir e baixar arquivos, crear directorios e borrar arquivos.

Nas respostas FTP o servidor envía un código numérico de 3 díxitos co que indica como foi procesado o comando ao que corresponde a resposta. O primeiro dos díxitos indica se o comando foi ou non procesou con éxito. Os outros dous díxitos dan maior detalle do contido da resposta. Códigos de respostas FTP

Códigos de respostas FTP
Código Descrición
1xy A acción non rematou. Debe obterse outra nova resposta para poder enviar outro comando.
2xy A acción realizouse con éxito. Pode enviarse outro comando.
3xy Estase a esperar que o cliente envíe información adicional para poder completar a acción.
4xy Indícase que a acción solicitada non se puido realizar agora pero podería realizarse máis tarde.
5xy Indícase que a acción solicitada non se pode realizar.

Conexións de control e de datos

Unha conexión FTP entre un cliente e un servidor desenvólvese sobre dúas conexións TCP de nivel de transporte:

  • Conexión de control.
  • Conexión de datos.

A través da conexión de control o cliente envía os comandos e recibe do servidor as respostas aos comandos tras ser procesados por este.

A conexión de datos é usada para a transferencia de arquivos entre cliente e servidor cando foi solicitada esta transferencia por un comando.

Conexións de control e de datos

Polo exemplo, se o cliente solicita descargar un arquivo, envía ao servidor o comando RETR seguido do nome do arquivo a través da conexión de control. O servidor procesa o comando e pasa a enviar o arquivo a través da conexión de datos (se é necesario abre esta conexión). Cando remata de enviar o arquivo, o servidor envía unha resposta ao cliente a través da conexión de control indicando que o arquivo se enviou con éxito.

As conexións de datos péchanse cada vez que remata unha transferencia de arquivos e inícianse cada vez que se vai iniciar unha nova transferencia de arquivos. A conexión de control iníciase cando o cliente solicita a conexión co servidor e péchase cando o cliente decide rematar a conexión ou tamén pode pechala o servidor cando transcorreu un determinado tempo sen actividade na conexión.

Conexións e Procesos no FTP

Cando se estableceu unha conexión cliente-servidor FTP inícianse en cliente e servidor os procesos usuario Pu e servidor Ps respectivamente. Estes procesos comunícanse a través da conexión de control. O proceso usuario Pu encárgase de transmitir a través da conexión de control os comandos FTP solicitados polo usuario da máquina dende a súa interface de traballo e de obter as respostas do servidor e entregarlla á interface de traballo do usuario. O proceso servidor Ps encárgase de procesar os comandos recibidos, enviar as respostas e, se procede, iniciar un proceso de transferencia de arquivos.

Cando se vai iniciar unha conexión de datos entre cliente e servidor FTP inícianse en cada máquina un proceso DTP. Os procesos DTP cliente e servidor comunícanse para desenvolver a transferencia dun arquivo. Cando remata a transferencia, péchase a conexión de datos e tamén se pechan os procesos DTP.

Modos de conexión do cliente.

Laos servidores FTP usan o porto TCP 21 para atender as conexións de control FTP, é dicir, recibe os comandos no porto 21 e envía as respostas polo seu porto 21. Se ten varias conexións abertas, usa para todas elas o porto 21 como porto de escoita da conexión de control. O cliente abre un porto superior a 1024 para cada conexión de control que establece cun servidor FTP. Se un cliente FTP ten iniciadas varias conexións FTP, ten un porto aberto por cada unha das conexións iniciadas mesmo se fosen dúas simultáneas co mesmo servidor.

Hai dous modos de establecer as conexións de datos entre cliente e servidor. A estes modos chámaselles modos de conexión do cliente e chámanse:

  • Modo activo.
  • Modo pasivo.
Modos de conexión no FTP

No modo activo, unha vez que se estableceu a conexión de control, para iniciar unha conexión de datos faise o seguinte:

  • O cliente envía ao servidor un comando PORT a través da conexión de control indicando un número de porto TCP superior a 1024 que pretende abrir para a conexión de datos.
  • O servidor inicia a conexión de datos (non a transferencia) entre o seu porto TCP 20 e o porto que lle indicou o cliente. Isto pódese entender por unha devasa no cliente como unha ameaza xa que dende o exterior se inicia unha conexión solicitando que o cliente abra un porto.
  • A conexión de datos úsase para a transferencia de arquivos.

No modo pasivo, unha vez que se estableceu a conexión de control, para iniciar unha conexión de datos faise o seguinte:

  • O cliente envía ao servidor un comando PASV indicando que vai establecer conexión en modo pasivo.
  • O servidor responde cun número de porto TCP superior a 1024 (aquí non é o porto 20) que pretende abrir para a conexión de datos. O servidor usa un porto para cada conexión de datos que teña iniciada.
  • O cliente inicia a conexión de datos abrindo un porto TCP dispoñible e maior que 1024 e conectándose co porto que lle indicou servidor. Cando chega a solicitude de conexión ao servidor, este abre o porto que pretendía usar para a conexión. Transmítense arquivos pola conexión de datos.

Tipos de transferencia

Para transmitir arquivos entre clientes e servidores FTP poden utilizarse dous tipos de transferencia de datos diferentes:

  • Transferencia ASCII.
  • Transferencia binaria.

Unha transferencia ASCII é adecuada para transmitir arquivos de texto codificados en ASCII (txt, html). Pero non é adecuada para transmitir outros tipos de arquivos xa que na maioría dos casos non se completaría a recepción deses arquivos.

Na transferencia ASCII realízase a transmisión analizando byte a byte a información transmitida. Os arquivos ASCII rematan cun carácter de control EOF (End of File: Fin de ficheiro). Ao usar unha transferencia ASCII, no momento que se recibe un byte que corresponde a EOF dáse por rematada a transmisión. Isto para os arquivos ASCII é o que se debe producir, pero non para outros arquivos xa que un byte dun ficheiro non ASCII pode conter o código correspondente a EOF en calquera parte do arquivo.

Para cambiar dun tipo de transferencia a outro, o cliente debe enviar ao servidor o comando FTP TYPE e indicando o tipo de transferencia. Os programas clientes de usuario permiten que o usuario poida solicitar o cambio do tipo de transferencia.

Servidores

Existen unha gran cantidade de servidores FTP. Á hora de elixir un servidor FTP haberá que avaliar varias das súas características. Algunhas destas características son: Facilidade de instalación e configuración, seguridade do servizo, opcións dispoñibles de configuración, xestión de contas de usuario e permisos de acceso a recursos, limitación do ancho de banda para as transferencias de arquivos, número máximo de conexións simultáneas etc. A continuación descríbense algúns dos servidores FTP máis destacados.

Só para Linux. É un servidor moi seguro, doado de instalar e configurar. Os usuarios do sistema Linux no que se instale o servidor son usuarios para o servizo. A configuración é moi sinxela e céntrase fundamentalmente na seguridade e a eficiencia.
  • Filezilla Server[4]
Filezilla-logo.png
Só para Windows. Moi doado de usar. A súa mellor característica é a relativa á configuración de contas de usuario e grupos de usuarios e o establecemento de permisos de acceso, restricións sobre accións, cotas e outras limitacións. Licenza GPL.
FTP-Serv-U-logo.png
Para Windows e Linux. Moi doado de usar e moi completo. É moi potente no relativo a opcións de seguridade e establecemento de restricións sobre cotas de disco e velocidades de suba e baixada para usuarios. Licenza de proba por 30 días. Despois segue funcionando pero nun modo chamado persoal con menos funcionalidades. Dispón doutras licenzas de pagamento dos tipos Bronze, Silver e Gold.
  • Microsoft FTP Server[6].
Só para Windows. Está integrado dentro dos sistemas Windows formando parte de Microsoft IIS.
PureFTPd-logo.png
Só para Linux. Moi doado de instalar e configurar. As súas características máis destacadas son a seguridade, a regulación do ancho de banda para as transferencias de arquivos e a gran cantidade de opcións de configuración. Licenza GPL.
ProFTPd-logo.png
Só para Linux. Moi doado de instalar e configurar. Formato do ficheiro de configuración similar ao de Apache. Soporta múltiples sitios virtuais. Tradicionalmente considerouse inseguro, pero actualmente xa corrixiron esas vulnerabilidades.

Clientes

Se hai múltiples servidores FTP, aínda existen moitos máis clientes FTP.

Os sistemas operativos Windows e Linux integran un cliente FTP que se executa en modo comando, é dicir, trabállase cunha interface en modo texto na que o usuario executa ou envía comandos FTP aos servidores cos que se conecta. Estes clientes chámanse ftp pero non son iguais (os comandos que se poden executar nas interfaces de Windows e Linux non teñen porqué ser iguais aínda que poidan coincidir en moitos casos).

Á parte destes clientes de interface de texto, podemos usar clientes gráficos que temos dispoñibles para descargar e instalar. Normalmente estes clientes tamén permiten establecer conexións con outros servidios de transferencia seguros como SFTP. Algúns destes clientes gráficos son:

  • Filezilla Client[9]:
Filezilla-logo.png
Dispoñible para sistemas Windows e Linux. Licenza GPL. Moi rápido, doado de configurar e dun bo rendemento.
SmartFTP-logo.png
Só para Windows. Licenza gratuíta de avaliación de 30 días, dispón das licenzas de pagamento Home, Professional e Ultimate. Destacan a súa interface gráfica e as súas numerosas opcións de configuración.
GFTP-logo.png
Só para Linux. Licenza GPL. Moi lixeiro e doado de usar. Permite establecer conexións con varios protocolo de transferencia de arquivos á parte de FTP. Permite xestionar subas e baixadas de arquivos simultáneas.
Só para Windows. Licenza gratuíta de avaliación de 30 días, dispón das licenzas de pagamento Home, Professional e Lite. Ten unha interface moi sinxela na que abonda arrastrar arquivos para iniciar unha suba ou baixada destes.
FireFTP-logo.png
É un complemento para o navegador Mozilla Firefox que permite usar o navegador coma se fose un cliente FTP. É multiplataform, ao igual que Firefox. Licenza GPL.


Navegadores web como clientes FTP

Un navegador web permite establecer conexións FTP con servidores FTP. Para iso hai que coñecer o nome DNS do equipo servidor FTP ou no seu lugar a IP do servidor. No navegador web debemos escribir a URL correspondente ao servidor co que nos queremos conectar das formas:

 ftp://nombre_DNS_servidor_FTP
 ftp://IP_servidor_FTP
Captura de pantalla de Mozilla Firefox mosrando o directorio de entrada ao servidor FTP de RedIRIS.


Por exemplo, para iniciar unha conexión co servidor FTP de RedIRIS, deberías escribir na URL do navegador:

 ftp://ftp.rediris.es

Ao conectarnos cun servidor FTP, pode pedirse un nome de usuario e contrasinal ou permitirse o acceso sen autenticación como usuario anónimo e con permisos de convidado. O usuario co que realicemos a conexión determinará o que podemos facer e os arquivos e directorios que podemos ver do servidor FTP.

Os servidores FTP adoitan poñer a disposición dos usuarios invitados directorios con nomes como public ou incoming para que estes poidan acceder a eles e descargar arquivos e mesmo crear subdirectorios e subir arquivos.

Comandos FTP

As ferramentas gráficas pódennos funcionar noi ben para o día a día, de feito non usarlas para as funcións diarías sería una pérdida de tempo xa que nos automatizan gran parte do trabajo. Sin embargo, hai veces que non dispomos delas, e necesitamos, acceder a un servidor ftp con un cliente interactivo en modo texto, empregando a aplicación ftp dispoñible na práctica totalidade de sistemas operativos.

Accedemos a calquera servidor tecleando nunha liña de comandos

ftp nome_ou_ip_do_servidor

e pasamos a introducir o nome de usuario e contrasinal.

Os comandos máis habituais son os seguintes:

Comando Desrición
dir fai un listado do contido do directorio ou cartafol remoto actual
ls fai un listado do contido do directorio ou cartafol remoto actual
cd Permite cambiar o directorio actual no equipo remoto
lcd Permite cambiar o directorio actual no equipo local
pwd Permite ver cal é o directorio actual no equipo remoto
open Permite abrir unha nova sesión co servidor (sempre que a conexión actual esté pechada). Necesitamos proporcionar o nome ou enderezo IP do servidor co que nos queremos conectar.
close Pecha unha sesión aberta sen saír do a aplicación ftp
exit, quit, bye Pecha a sesión e sae da aplicación ftp
user permite abrir unha nova sesión con outro usuario no mesmo servidor
get Descarga un ficheiro do equipo remoto ao equipo local. Se poñemos un 2º nome de ficheiro, ese será co nome que se gardará o primeiro no equipo local
mget Descarga multiples ficheiros. Acepta os comodíns ? e *
put Sube un ficheiro do equipo local ao equipo remoto. Se poñemos un 2º nome de ficheiro, ese será co nome que se gardará o primeiro no equipo remoto
mput Carga multiples ficheiros. Acepta os comodíns ? e *
delete borra un ficheiro do equipo remoto.
mdelete Borra multiples ficheiros. Acepta os comodíns ? e *
rmdir Borra directorios do equipo remoto
rename Cambia o nome do ficheiro no equipo remoto
chmod Cambia permisos do ficheiro no equipo remoto
ascii Cambia o modo de transferencia a ascii
binary, bin Cambia o modo de transferencia a binario
passive Alterna entre o modo activo e pasivo
! Permite saír momentaneamente ao equipo local. Volvemos ao equipo remoto con exit. Tamén permite executar un comando no shell do equipo local.

FTP Anónimo

Un FTP anónimo (Anonymous) é a forma convencional de chamar ao servizo de transferencia de ficheiros que as organizacións deixan para acceso público. Trátase dun servizo moi común na rede, e se o usamos e nos piden un identificador de usuario deberemos teclear "anonymous", isto fará normalmente que non nos pidan un contrasinal, pero se o fan, a clave publica mais habitual é o correo electrónico do usuario.

Os navegadores web, intentan entrar con este usuario, e es non poden, soen solicitar a introdución de nome de usuario e contrasinal.

Referencias externas