2009-04-04 8 views
89

Quels sont les avantages (ou les limites) de l'un par rapport à l'autre pour le transfert de fichiers sur Internet?Comparaison de HTTP et FTP pour le transfert de fichiers

(Je suis conscient des formes sécurisées des deux protocoles. Je voudrais entendre des comparaisons à travers des expériences personnelles en termes de performance, de fiabilité, les limitations de taille de fichier, etc.)

Répondre

79

Voici un performance comparison des deux. HTTP est plus réactif pour les requêtes-réponses de petits fichiers, mais FTP peut être meilleur pour les fichiers volumineux s'il est correctement configuré. Le FTP était généralement considéré comme plus rapide. FTP nécessite un canal de contrôle et l'état est maintenu en dehors de l'état TCP, mais HTTP ne le fait pas. Il y a 6 transferts de paquets avant que les données commencent à transférer en FTP mais seulement 4 en HTTP.

Je pense que une couche TCP syntonisé aurait plus d'effet sur la vitesse que la différence entre les protocoles de couche d'application. Le Sun Blueprint Understanding Tuning TCP a des détails.

Voici une autre good comparison de caractéristiques individuelles de chaque protocole.

+17

+1 bonne réponse. Je pense que le jour de FTP a été et a disparu, il a peu de pertinence plus. C'est aussi un * pig * à implémenter. – skaffman

+6

Quelle est la taille des fichiers "petits" ou "grands"? – Urbycoz

+0

Le lien [Comparaison des performances] (http://www.isi.edu/lsam/publications/http-perf/) pointe vers une analyse des gains attendus de la mise en œuvre de P-HTTP, T/TCP et S-TCB. Aucun endroit ne mentionne FTP. En outre, le lien [correctement réglé] (http://www.sun.com/blueprints/0304/817-5773.pdf) est rompu. – Trisped

11

Une considération est que FTP peut utiliser des ports non standard, ce qui peut compliquer l'accès aux pare-feu (surtout si vous utilisez SSL). HTTP est généralement sur un port connu, c'est donc rarement un problème.

Si vous décidez d'utiliser FTP, assurez-vous que vous lisez sur Active and Passive FTP.

En termes de performance, à la fin de la journée, ils sont tous les deux fichiers crachant directement des connexions TCP devrait donc être sur le même.

19

De nombreux pare-feu laissent tomber les connexions sortantes qui ne sont pas aux ports 80 ou 443 (http & https); certains abandonnent même les connexions aux ports qui ne sont pas HTTP (S). FTP peut ou non être autorisé, sans parler des modes actif/PASV. En outre, HTTP/1.1 permet des demandes partielles bien meilleures ("envoyer uniquement depuis l'octet 123456 jusqu'à la fin du fichier"), des requêtes conditionnelles et la mise en cache ("envoyer uniquement si le contenu est modifié/si la date de dernière modification est modifiée") et la compression de contenu (gzip).

HTTP est beaucoup plus facile à utiliser via un proxy.

De mes preuves anecdotiques, HTTP est plus facile de faire le travail avec les connexions interrompues/lentes/floconneux; par exemple. il n'est pas nécessaire de (re) établir une session de connexion avant de (re) lancer le transfert.

OTOH, HTTP est apatride, de sorte que vous auriez à faire l'authentification et la construction d'un chemin de « qui a fait quoi » vous. La seule différence de vitesse que j'ai remarquée est le transfert de beaucoup de petits fichiers: HTTP avec pipelining est plus rapide (réduit les allers-retours, en particulier sur les réseaux à latence élevée). Notez que HTTP/2 offre encore plus d'optimisations, alors que le protocole FTP n'a pas vu de mises à jour depuis des décennies (et même les extensions de FTP ont une adoption insignifiante par les utilisateurs). Donc, sauf si vous transférez des fichiers via une machine à remonter le temps, HTTP semble avoir gagné.

(tangentiellement: il y a des protocoles qui sont mieux adaptés pour le transfert de fichiers, tels que rsync ou BitTorrent, mais ceux-ci n'ont pas autant Mindshare, alors que HTTP est partout ™)

-3

Les deux utilise TCP comme un protocole de transport, mais HTTP utilise une connexion persistante, ce qui améliore les performances du TCP.

15

Je viens benchmarkée un transfert de fichiers via FTP et HTTP:

  • plus de deux connexions serveur très bon
  • utilisant le même 1 Go fichier .zip
  • dans les mêmes conditions de réseau (testé un après l'autre)

résultat:

  • via FTP: 6 minutes
  • via HTTP: 4 minutes
  • à l'aide d'un logiciel téléchargeur concurrent http (fdm): 1 minute

Ainsi, essentiellement dans une situation "vraie vie":

1) HTTP est plus rapide que FTP lors du téléchargement d'un gros fichier. 2) HTTP peut utiliser le téléchargement de blocs parallèles qui le rend 6 fois plus rapide que le FTP en fonction des conditions du réseau.

+9

Cela semble très anecdotique. – spenibus

+0

merci pour les corrections ;-) – BitQuestions

+1

@anecdotal il a fourni des chiffres (faits de la recherche) qui est moins anecdotique que toute autre réponse jusqu'à présent. – user1133275

Questions connexes