2009-04-04 13 views
89

¿Cuáles son las ventajas (o limitaciones) de una sobre otra para la transferencia de archivos a través de Internet?Comparación de HTTP y FTP para transferir archivos

(soy consciente de formas seguras de ambos protocolos. Me gustaría escuchar las comparaciones a través de experiencias personales en términos de rendimiento, fiabilidad, las limitaciones de tamaño de archivo, etc.)

Respuesta

79

He aquí una performance comparison de los dos. HTTP es más receptivo para la solicitud-respuesta de archivos pequeños, pero FTP puede ser mejor para archivos grandes si está sintonizado correctamente. FTP solía ser considerado generalmente más rápido. FTP requiere un canal de control y se debe mantener el estado además del estado TCP pero HTTP no. Hay 6 transferencias de paquetes antes de que los datos comiencen a transferirse en FTP, pero solo 4 en HTTP.

Creo que una capa TCP correctamente ajustada tendría más efecto en la velocidad que la diferencia entre los protocolos de capa de aplicación. El Sun Blueprint Understanding Tuning TCP tiene detalles.

Heres otra good comparison de las características individuales de cada protocolo.

+17

+1 buena respuesta. Creo que el día de FTP se ha ido y ya no tiene más relevancia. También es un * cerdo * absoluto para implementar. – skaffman

+6

¿Qué tamaño significan los archivos "pequeños" o "grandes"? – Urbycoz

+0

El enlace [comparación de rendimiento] (http://www.isi.edu/lsam/publications/http-perf/) apunta a un análisis de las ganancias esperadas de implementar P-HTTP, T/TCP y S-TCB. No, donde menciona el FTP. Además, el enlace [sintonizado correctamente] (http://www.sun.com/blueprints/0304/817-5773.pdf) está roto. – Trisped

11

Una consideración es que FTP puede usar puertos no estándar, lo que puede dificultar la obtención de cortafuegos (especialmente si usa SSL). HTTP generalmente está en un puerto conocido, por lo que esto rara vez es un problema.

Si decide utilizar FTP, asegúrese de leer sobre Active and Passive FTP.

En términos de rendimiento, al final del día ambos lanzan archivos directamente hacia abajo en las conexiones TCP, por lo que deberían ser más o menos lo mismo.

19

Muchos cortafuegos abandonan las conexiones salientes que no están en los puertos 80 o 443 (http & https); algunos incluso lanzan conexiones a esos puertos que no son HTTP (S). FTP puede o no estar permitido, para no hablar de los modos activo/PASV.

Además, HTTP/1.1 permite solicitudes parciales mucho mejores ("solo envía desde el byte 123456 al final del archivo"), solicitudes condicionales y almacenamiento en caché ("solo envía si el contenido ha cambiado/si la fecha de última modificación ha cambiado") y compresión de contenido (gzip).

HTTP es mucho más fácil de usar a través de un proxy.

Según mi evidencia anecdótica, HTTP es más fácil de hacer el trabajo con conexiones caídas/lentas/escamosas; p.ej. no es necesario para (re) establecer una sesión de inicio de sesión antes de (re) iniciar la transferencia.

OTOH, HTTP es sin estado, por lo que tendría que hacer la autenticación y crear un rastro de "quién hizo qué cuando" usted mismo.

La única diferencia en velocidad que he notado es la transferencia de muchos archivos pequeños: HTTP con pipelining es más rápido (reduce los viajes de ida y vuelta, especialmente en redes de alta latencia).

Tenga en cuenta que HTTP/2 ofrece aún más optimizaciones, mientras que el protocolo FTP no ha visto ninguna actualización durante décadas (e incluso las extensiones de FTP tienen una captación insignificante por parte de los usuarios). Entonces, a menos que esté transfiriendo archivos a través de una máquina del tiempo, parece que HTTP ha ganado.

(tangencial: hay protocolos que son más adecuados para la transferencia de archivos, tales como rsync o BitTorrent, pero los que no tienen tanto reconocimiento de marca, mientras que HTTP está en todas partes ™)

-3

Ambos se utiliza como TCP un protocolo de transporte, pero HTTP usa una conexión persistente, lo que mejora el rendimiento del TCP.

15

acabo Benchmarked una transferencia de archivos a través de FTP y HTTP:

  • más de dos muy buenas conexiones con el servidor
  • utilizando el mismo archivo .zip de 1 GB
  • en las mismas condiciones de la red (probado uno tras el otro)

el resultado:

  • mediante FTP: 6 minutos
  • usando HTTP: 4 minutos
  • utilizando un software concurrente http descargador (fdm): 1 minuto

Así que, básicamente, en una situación de "vida real":

1) HTTP es más rápido que FTP al descargar un archivo grande.

2) HTTP puede usar la descarga de fragmentos paralelos que lo hace 6 veces más rápido que FTP dependiendo de las condiciones de la red.

+9

Esto parece muy anecdótico. – spenibus

+0

gracias por las correcciones ;-) – BitQuestions

+1

@anecdotal proporcionó números (hechos de la investigación) que es menos anecdótico que cualquier otra respuesta hasta el momento. – user1133275

Cuestiones relacionadas