Home Notas Weblog Downloads Manuales Mis programas Diseño web Links Correo Información legal Mejor visto en ... FAQ Acerca del autor Menú
RSS 1.0

Métodos para la publicación de archivos

Versión 1.1, por ICeman [Argentina]

Introducción

Todos aquellos que tenemos un contenido o software y queremos publicarlo, nos encontramos ante la duda de ¿qué método usamos para distribuirlo?

La respuesta obvia, que seguramente habrás escuchado, es "ponelo en la web". Pero no es tan fácil. Más allá del trabajo que significa crear un sitio para quien todavía no lo hizo, se puede presentar una serie de problemas que serán detallados a continuación.


Problema 1: el tamaño

Hacer un sitio web no es una odisea, el HTML es muy fácil de aprender, y los más rezagados pueden usar un editor de HTML como DreamWeaver o FrontPage, que les dará resultados magros pero aceptables. De cualquier modo, tendrán al menos una página en la cual presenten el contenido y linkeen a él.

Ahora, ¿es éste el método correcto para poner cualquier contenido? Definitivamente no. El link estándar (anchor, en inglés) fue pensado para que el navegador se redirija a una nueva página y la cargue; o cargue otro tipo de documento en su caché, por ejemplo, una imagen JPEG. En el caso de un download, también se guarda en caché y genera una copia del archivo en donde el usuario elija.

Problemas del servidor

A menos que tengas tu propio servidor web, te vas a encontrar con el problema de ¿Qué hosting uso?. El hosting es el alojamiento que te da un servidor web para que subas tu sitio y los demás lo accedan. El hosting no aceptará que pongas cualquier cosa. La primera barrera es el tamaño. El hosting te da un espacio limitado para que pongas tus contenidos. Los hostings gratuitos van de los 2 Mb hasta 20 Mb, mientras que un hosting pago puede llegar o superar los 100 Mb.

Algunos hostings te imponen además un límite de tamaño por archivo, lo que significa, por ejemplo, que no podés poner archivos superiores a los 2 Mb. Eso lo hacen para evitar que la gente suba MP3, por ejemplo.

Al servidor no sólo le cuesta el espacio utilizado por tus archivos, sino también el ancho de banda que ocupan los demás usuarios cuando se bajan tus archivos. Por lo tanto, si ponés archivos pesados que a su vez sean pedidos frecuentemente, es probable que el administrador del hosting te estrangule.

Para peor, el hosting en el servidor web no te garantiza la disponibilidad de tu contenido, por ejemplo, en casos de ataques de Denial of Service o interrupción de su ISP (el proveedor que les da ancho de banda).

Problemas del cliente

Veamos cómo funciona internamente el protocolo HTTP en el que se basa la web. Cuando una persona tipea una dirección en su navegador o clickea en un link, el navegador envía una petición web del tipo GET al puerto 80 de ese servidor. Este es un ejemplo.

Supongamos que queremos bajar el archivo http://download.network.net/public/archivo1.zip. Si introducimos esa URL en la barra de direcciones del navegador, o era el destino de un link, el navegador hará lo siguiente:

  1. El navegador establecerá una conexión transitoria con el servidor download.network.net en el puerto 80, al cual encontrará resolviendo su dirección IP mediante servidores DNS.
  2. En esa conexión, le hará el pedido
    GET /public/archivo1.zip.
  3. Si el archivo existe y el usuario tiene permiso a él, el servidor le enviará al cliente un encabezado como éste en el puerto 80:
    HTTP/1.1 200 OK
    Content-Type: application/zip
  4. Inmediatamente, el servidor le enviará el archivo codificado en el formato MIME base64, esto es, una representación ASCII del archivo en cuestión.

A lo que quiero llegar con esto, es a estos dos conceptos:

  1. La representación MIME es aproximadamente 40% mayor que el archivo en su forma binaria original.
  2. El servidor web le da el archivo entero a quien lo pide. No lo fragmenta. Si el archivo fuese muy grande y la conexión se corta, deberá bajar todo el archivo de vuelta.

La conclusión es que el protocolo HTTP, y por lo tanto la web en sí, son muy ineficientes cuando hay que transferir archivos muy grandes.

Pero ¿qué tan grande es grande? Según mi experiencia con módems telefónicos, cualquier cosa por encima de los 3 Mb traerá problemas si se quiere bajar de un servidor web. Y si supera los 6 Mb, se puede volver una misión imposible.

Que se entienda: esto no es un defecto de la web que deba ser solucionado. La World Wide Web fue creada para mostrar texto y fotos, no para bajar archivos. Eso es así porque ya existía previamente un protocolo para subir y bajar archivos: el FTP. Pero ya veremos este protocolo más adelante. Por ahora, sigamos con los problemas.

¿Y los gestores de descarga?

Los gestores de descarga no sirven, se basan en un error conceptual explicado arriba. Muchos de ellos desconfiguran el navegador, y bajan los archivos corruptos (lo digo por experiencia propia). No los recomiendo.

No esperes que los visitantes de tu sitio web tengan instalado un gestor de descarga.


Problema 2: la censura

Para mí, censura es una mala palabra. Pero también es una triste realidad. El tamaño no es el único impedimento para subir un archivo a un servidor web. Un hosting puede juzgar los contenidos que intentes subir, y rechazarlos por su naturaleza. De este modo, pueden banear tu obra por considerarla políticamente o religiosamente radical, pornográfica, por contravenir leyes de copyright internacional, etc.

El ejemplo que voy a usar, es en caso de que quieras distribuir un programa criptográfico. Las leyes de exportación de Estados Unidos prohíben distribuir material criptográfico, en particular código fuente de programas y algoritmos de encripción. Según ellos, se compromete la seguridad nacional. Ahora bien, seguramente vos no sos estadounidense, pero ¿pensás que un hosting estadounidense dejaría que subas tu criptoprograma open source? No. Y si termina en .com, es un hosting estadounidense. Malas noticias ¿no?

El hecho de que tu obra le parezca censurable a algunos, no significa que no pueda (o no deba) ser disfrutada por otros. Por lo tanto, ¡Distribuila igual! claro, a menos que tengas tu propio servidor web, no la vas a poder poner en la WWW. Pero hay servicios que te permiten distribuirla de manera descentralizada, e incluso en forma anónima.


Problema 3: la estupidez humana

Este es el mayor problema al cual nos enfrentamos los informáticos día tras día. La gente no sabe nada de computación, y parece que cada día saben menos.

Y todos los idiotas comparten una característica en común: creen que Internet es la web. Y por lo tanto, cualquier intento de usar un servicio como FTP o peer-to-peer se verá frustrado en accesibilidad por la incapacidad mental de los usuarios para usar un servicio distinto de la web.

Eso no quiere decir que vamos a excluir directamente a todos esos usuarios, ni que los vamos a obligar a instalar programas cliente que ni siquiera sepan usar (por más que debieran tenerlos instalados). Al distribuir nuestro contenido queremos que llegue a la mayor cantidad de gente posible. Si es un programa, que sea usado por muchos. Si es un libro, que sea leído por la mayoría, si es un video, que lo vean todos. No vamos a andar excluyendo a la gente sin importar cuán estúpidos sean.

Es por ello que habrá que hacer las cosas de la forma más simple posible aún para el usuario más estúpido. Eso no significa que no haya que dejar una opción para los usuarios más avanzados. Que la gente elija el método que más le convenga de acuerdo a su experiencia y conocimientos.


Solución 1: el FTP

El FTP es el servicio original de Internet para la transferencia de archivos, de ahí su nombre. Es anterior a la web, y permite a la gente subir y bajar archivos de servidores FTP, en forma tanto ASCII como binaria, depende del tipo de archivo. Es más rápido y directo que la web para la bajada (y para la subida, aunque en realidad la web no contempla la subida de archivos).

Quizás la característica más importante del FTP es su capacidad nativa para resumir las transferencias. "Resumir" significa que aunque la transferencia se interrumpa, puede continuarse luego. Es decir, se pueden fragmentar las descargas para no tener que bajar todo seguido. Eso permite bajar archivos muy grandes; de decenas de Mbytes, sin miedo a que la conexión se corte.

Por supuesto, para hacer uso del servicio FTP es necesario un cliente FTP. De los disponibles para Windows en forma de shareware, el CuteFTP es por lejos el mejor y más popular. Posee un gran administrador de sitios (símil favoritos), cola de bajada administrable, soporte para macros y bajadas programadas.

Claro que no todo el mundo tiene instalados clientes FTP con tantas funcionalidades. De hecho, Windows no trae un cliente FTP per se, sino que trae un mini-utilitario FTP para la línea de comandos, y una patética implementación de FTP en Internet Explorer. Digo patética, porque ni siquiera soporta resumir las descargas. O sea, no sirve de mucho.

¿Qué hacer entonces? bueno, en caso de que elijas hostear tu contenido en un sitio FTP, podés hacer lo siguiente:

  1. Poner los datos del sitio FTP: host, puerto (21) carpeta, etc. y un link estándar al contenido en el FTP. Las URLs de FTP son algo así: ftp://downloads.sitio.com/publico/download.exe. Sea cual sea su soporte FTP, el usuario lo podrá bajar. Esto solo casi siempre funciona.
  2. Alentar a quienes no tienen un cliente FTP decente, a que se bajen uno y lo aprendan a usar.
  3. En última instancia, se puede poner un applet (Java, Python, ActiveX) que emule un cliente FTP en la página para aquellos usuarios que no tienen (y no quieren) un cliente FTP.

Al final de este documento encontrarás links a recursos que te pueden ayudar a implementar todo lo que menciono. En todas las soluciones voy a poner los pros y los contras.

Pros

Contras

Con esto en vista, puedo decir que el FTP es recomendable en casos de que se quiera publicar un contenido grande, mayor a 3 Mb, en forma permanente, el cual no sea muy requerido por los usuarios y no vaya a ser censurado.


Solución 2: los servicios P2P

A esta altura ya todos sabemos muy bien lo que es un servicio peer-to-peer.

Es de remarcar que las redes P2P, a diferencia de la web o el FTP, no se basan en un estándar; sino que cada red tiene su propio protocolo. Aún así, si vos por ejemplo usás KaZaA para publicar algo, y se lo baja alguien que además de tener KaZaA tiene iMesh (y comparte las mismas carpetas con ambos programas), tu contenido será accesible a quien use iMesh también.

Veamos, el P2P es distribuido, en un principio vos sos el servidor hasta que alguien se lo baje de tu máquina. A partir de ahí, quien se lo bajó pasa a ser tu mirror, lo que significa que refleja tu contenido y le da redundancia. Cuando apagues tu máquina, sigue disponible en la del otro.

Al poco tiempo, tu contenido estará siempre disponible. Al ser distribuido, un denial of service es imposible. Y como ya todos sabemos, en los P2P no hay censura.

Como había especificado en el problema 3, hay que hacerle las cosas de la forma más simple posible al usuario. Para ello, hoy en día se puede poner links a un contenido en P2P. Esto lo iniciaron eDonkey y eMule con los ED2Klinks, pero ahora los clientes KaZaA, Shareaza, Bearshare, LimeWire, Xolox, etc. soportan MAGNET links.

Los MAGNET links son links que se activan enviando cierto tipo de URIs a otra aplicación en ejecución; lo que permite, por ejemplo, que cuando alguien clickee en tu página un MAGNET link para KaZaA, y tenga el KaZaA abierto (esto es muy importante), se agregue tu archivo a su cola de bajada de KaZaA. ¡Excelente para publicar archivos muy grandes! en este caso la página tan sólo indexaría los archivos.

Pros

Contras

Recomiendo usar los servicios P2P cuando no encontrás ningún hosting para lo tuyo; cuando sabés que te van a censurar; o si ya publicaste en FTP pero al ser tan requerido el servidor siempre está opcupado. P2P es ideal para publicar tu música y películas sin depender de nadie, ya que son cosas que ocupan mucho espacio en un hosting.


Solución 3: BitTorrent

BitTorrent es un servicio P2P transitorio, vendría a ser como un híbrido entre el P2P y la web. Al ser único en su tipo, y a la vez Open Source, se está volviendo de a poco un estándar.

Es muy fácil de usar, ya que de hecho no se usa. El programa BitTorrent oficial funciona como un plugin para el navegador, por lo que es totalmente transparente para el usuario. La última versión de este programa cliente para Windows pesa alrededor de 2.6 Mb.

¿Cómo funciona? bien, hay 2 programas, el programa para crear los archivos torrent, y el plugin para bajarlos. Ambos los podés bajar del sitio oficial. Con el programa creador, creas un archivo con la extensión .torrent, que contiene la metadata.

Luego, los usuarios, que deben tener el plugin cliente instalado, al clickear en el link se bajan el archivo .torrent y comienzan la bajada del archivo real mediante los puertos del 6881 al 6999. El usuario lo ve como un download normal, pero mientras se baja el archivo lo comparte con otros usuarios de BitTorrent. Ojo, sólo comparte ese archivo y mientras se lo está bajando. Entonces, sus vecinos pueden bajarse el mismo archivo de su máquina, o al menos las partes que él posee. Cuando la descarga de todos los fragmentos termina, arma todos los pedazos del archivo para tener el archivo completo. Si el usuario acepta el fin del download, lo deja de compartir.

BitTorrent es usado principalmente por otakus para bajar capítulos enteros de animé, pero se puede usar para bajar cualquier tipo de programa. Por supuesto, la descarga se puede resumir.

La implementación es técnicamente compleja, es verdad, pero el uso para el usuario es muy simple. Sólo necesita tener instalado el soporte BitTorrent. Por supuesto que hay programas que hacen uso de BitTorrent con muchas más opciones, como el BitTorrent++, Burst! o Azureus.

BitTorrent sólo sirve para bajar archivos muy grandes y muy requeridos por los usuarios (soporta 1000 veces más pedidos que la web). Básicamente, aprovecha enormemente el ancho de banda en los usuarios con banda ancha (llegando a tasas de transferencia de 60 Kb/s). Pero no ayuda en nada a quien tiene un dial-up.

Pros

Contras

BitTorrent sólo debe ser usado para contenidos que "explotan", o sea, algo que de pronto se quiere bajar todo el mundo. Quizás el mejor ejemplo sea el video porno de una celebridad: Pamela Anderson, Paris Hilton, etc.

No debería ser usado para cosas menores a los 5 Mb (no tiene mucho sentido), y en especial contenidos que querés que sean permanentes. Los contenidos en trackers de BitTorrent duran, como máximo, un par de semanas. Cuando ya todos se lo bajaron, no hay una masa crítica de usuarios que funcionen como seeds dejando a tu contenido sin mirroring.


Solución 4: Freenet

Freenet es un servicio P2P pero encriptado, mucho más distribuido. Cuando vos usás Freenet donás un pedazo de tu disco rígido, en el cual se guardan contenidos encriptados (por lo que no sabés lo que hay). Todo en Freenet es distribuido y anónimo. Fue creado para sortear todo tipo de censura. No importa qué tan prohibido esté tu contenido, podés publicarlo en Freenet.

Su implementación es altamente compleja, y en principio hay que tener el programa servidor de Freenet, el cual sólo corre sobre la JVM de Sun. Ello es indispensable para subir contenidos a Freenet.

Sin embargo, hay un programa llamado Freeweb que te permite subir tu sitio entero a Freenet y navegarlo fácilmente. Aún no hay un programa o applet bridge entre Freenet y la WWW, por lo que no es muy recomendable. Pensá que para que alguien se pueda bajar algo de Freenet hoy en día, debe tener al menos la JVM de Sun y el "frproxy", programa servidor de Freenet, corriendo. Aunque si alguien te permite usar públicamente su fproxy, creo que podrían acceder sin tener toda esa parafernalia. Los links quedarían así: http://200.56.98.240:8888/SSK@CKesZYUJWn2GMvoif1R4SDbujIgPAgM/fuqid/9//, por ejemplo, en caso de que 200.56.98.240 sea la IP de la máquina con el fproxy abierto a todo el mundo (por supuesto si tuviera un nombre DNS no se usaría la dirección IP). Complicado ¿no?

Además, para ahorrar espacio de almacenamiento, los contenidos que no son pedidos en mucho tiempo van desapareciendo para hacer lugar a contenidos nuevos.

A pesar de estas limitaciones, si querés publicar en forma anónima documentos de alto contenido político, etc. no te queda otra opción más que Freenet. Es un proyecto al cual hay que tener en cuenta.

Pros

Contras


Un caso aparte: multimedia

Acá pasa algo en especial, sobre todo con los videos. Imaginemos una película entera, un largometraje. A mí me gusta ir al cine de vez en cuando. Pago por ver películas que sólo veo una vez. Tengo, por ejemplo, Kill Bill en DivX, y sólo la ví una vez.

Yo creo que hay una forma mejor de distribuir un video largo que simplemente bajarlo. Pensemos que hasta ahora siempre tuvimos más capacidad de almacenamiento que ancho de banda; ahora, esa relación se está invirtiendo. Pensemos en dispositivos como los celulares 3G. Poseen una conexión permanente a Internet, pero no tienen disco rígido.

Por eso creo que BitTorrent y los P2P son buenos para bajar videos de más de 100 Mb, pero transmitirlo mediante streaming puede ser una excelente idea. Si el usuario quiere tener la película guardada en su disco rígido, puede capturar el stream con su reproductor multimedia.

Para ello, Apple ofrece el QuickTime Streaming Server, para Mac; y el Darwin Streaming Server, para Windows y Linux. Ambos son gratis y Open Source. Si tenés tu propio servidor, probalo. Y el Helix Streaming Server, de Real, no es una mala opción.


Recursos útiles

Acá hay links a todo lo que se mencionó anteriormente. Por supuesto, la inmensa mayoría está en inglés.


XHTML válido CSS válido ¡Bajate Firefox! ¡Instalá el soporte Java ya! Algunos derechos reservados