Los rincones del API Win32: WinInet y FTP - Diferencias entre HTTP y FTP

2 - Diferencias entre HTTP y FTP

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Para comenzar de un modo más sencillo, y como ya conocemos el protocolo HTTP, vamos a ver las principales diferencias entre estos dos protocolos:

  • HTTP está orientado a la transmisión de archivos en formato HTML, aunque puede utilizarse (y se utiliza) para cualquier otro formato, siempre y cuando se pueda representar en caracteres ASCII. FTP se orienta a archivos de información binaria, desde ejecutables, hasta ficheros de texto plano, videos, imágenes, etc., y no sólo a su transmisión, sino también a la manipulación del sistema de archivos en el servidor (modificar la estructura de directorios, crear archivos, eliminarlos, etc.). Desde este punto de vista, FTP es mucho más versátil que HTTP, ya que nos permite trabajar con cualquier tipo de archivo.
  • HTTP es un protocolo sin estado y sin conexión lógica, es decir: no es necesario realizar una operación de "entrada en el sistema" antes de empezar a trabajar, y no recuerda operaciones anteriores que hayamos hecho. Sin embargo, FTP es un protocolo con conexión y con estado: es imprescindible realizar una operación de "entrada" (login) antes de cualquier otra, y se conserva nuestro estado en el servidor. Esto permite aplicar ciertas restricciones, como permisos especiales a ciertos usuarios, cuota de utilización en disco, etc.
  • HTTP utiliza un canal físico (el socket) para la petición-respuesta. Sin embargo, FTP utiliza dos canales físicos, uno de control y otro para datos. El canal de control se utiliza del mismo modo que en HTTP: para enviar y recibir las peticiones y respuestas del protocolo. El canal de datos es distinto, ya que por él viaja la información requerida, es decir: el archivo que hemos solicitado. Además, el canal de HTTP se cierra una vez terminada la petición, excepto cuando se usa la cabecera "Keep-Connection". En una conexión FTP, el canal de control debe permanecer activo continuamente, mientras que el de datos se creará para cada uno de los envíos que tenga que realizar. Debido a que el canal de datos debe estar siempre abierto, los servidores FTP cuentan con un límite máximo de usuarios activos, ya que podrían desbordar la pila TCP (el número de conexiones o sockets disponibles para enviar y recibir información). Este esquema de dos canales permite que la conexión FTP sea full-duplex, es decir: que se permite el envío y recepción de información simultáneamente (mientras se utiliza el canal de datos para recibir el archivo, se pueden seguir enviando peticiones por el canal de control).
  • HTTP cuenta con una extensión para canales seguros: HTTPS, al igual que FTP que cuenta con SFTP (Secure FTP) para cifrar la información que se envía y recibe del servidor. Sin embargo, el API WinInet sí que soporta la extensión HTTPS pero no SFTP. Si quisieramos utilizar el protocolo SFTP, tendríamos que ayudarnos del API WinSock para la conexión al servidor y envío de información cifrada.
  • HTTP es un protocolo anónimo, es decir: el usuario que hace la petición permanece en el anonimato, a excepción de la dirección IP que realiza la petición y el programa que se ha utilizado. Sin embargo, el protocolo FTP requiere de un usuario y contraseña para acceder a los recursos. Normalmente, este usuario y contraseña no son más que la cuenta del sistema donde residen los archivos a acceder. Opcionalmente, se dispone del usuario anonymous que funciona como usuario general, utilizando como contraseña opcional el domino desde el que realizamos la conexión, o la dirección de correo electrónico. Lógicamente, el acceso a través del login anonymous está mucho más restringido que el de otros usuarios.
  • El servidor HTTP envía la información requerida dentro de la misma respuesta. En la respuesta de FTP, sólo se incluyen datos informativos, y no los propios datos que hemos pedido. Esto es debido a las dos conexiones que ya hemos comentado: una de control (para las peticiones y respuestas) y otra de datos (para la transferencia de los datos o el archivo que hemos pedido al servidor).
  • HTTP se basa en la recomendación MIME para manejar los tipos de archivos, por lo que se abre un amplio abanico de posibilidades. Sin embargo, FTP sólo puede transferir cuatro tipos de archivo: ASCII, binario, local, EBCDIC. De todas formas, con los tipos ASCII y binario se cubren todos los tipos de archivos posibles.
  • Para simplificar su uso, el protocolo HTTP oculta todas las características de la transmisión física. En el protocolo FTP se permite configurar este aspecto, pudiendo utilizar uno de los siguientes modos de transmisión: "de bloque", "comprimido" y "de flujo".
  • Por debajo del protocolo HTTP sólo contamos con el protocolo propio de transmisión, es decir: TCP, sin embargo, en FTP se utiliza el protocolo TELNET para el envío de datos por la conexión de control y estos, a su vez, utilizan TCP para el envío físico.
[editar]

12 opiniones

OTATO

MUY BUENA EXPLICACION.....
ME PARECIO EXCELENTE
AHORA SOLO KISIERA SABER COMO PONER MI CONEXION FTP DE MODO PASIVO.....SI NO ES MUCHO PEDIR
GRACIAS
Y MUY BUEN TRABAJO EH
OTATO

MUY BUENO EH
ME PARECE K ES EXCELENTE LA EXPLICACION DE ESTOS 2 PROTOCOLOS
ESTO ES BUENO CONOCER PARA TODOS
OTATO

PUES ESTA CHIDO LA EXPLICACION... PERO NO YO KISIERA SABER K PUERTO PUEDO ABRIR (K NO SEA EL 21) PARA MI SERVIDOR FTP
ESPERO ME AYUDEN CON ESO
DE ANTE MANO MUCHAS GRACIAS
Excelente aporte.

Es un tutorial muy bueno, y facil de entender.
Corrección.

En el punto 3. Del "modo pasivo" hay un error: 3. Para ciertas operaciones, es necesario realizar el envío de un fichero, por lo que se crea el canal de datos. Para ello el cliente crea una conexión física desde uno de sus puerto (puerto y) hasta un número de puerto del *cliente*. Este número de puerto fue el que indicó el servidor como respuesta del comando pasv (puerto z). De este modo, el cliente establece el canal de datos por el que se transmite la información. Donde dice *cliente* debería decir *servidor*.
1 2 3 | siguiente >

Tutoriales relacionados con 'Los rincones del API Win32: WinInet y FTP'

El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »
Comienzo con un nuevo tema dentro dentro de la serie Los rincones del API Win32.... Más »
Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »
En el anterior curso dejamos muchos temas en el tintero, así que voy a terminar... Más »
Damos una visión detallada de una de las características más interesantes de esta tecnología de... Más »

Autor y licencia de 'Los rincones del API Win32: WinInet y FTP'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.