Comparaison de HTTP et FTP pour le transfert de fichiers

125

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

(Je connais les formes sécurisées des deux protocoles. J'aimerais entendre des comparaisons à travers des expériences personnelles en termes de performances, de fiabilité, de limitations de taille de fichier, etc.)

Mystique
la source

Réponses:

99

Voici une comparaison des performances des deux. HTTP est plus réactif pour les demandes-réponses des petits fichiers, mais FTP peut être meilleur pour les gros fichiers s'il est correctement réglé. FTP était généralement considéré comme plus rapide. FTP nécessite qu'un canal de contrôle et un état soient maintenus en plus de l'état TCP, mais pas HTTP. Il y a 6 transferts de paquets avant que les données ne commencent à être transférées en FTP mais seulement 4 en HTTP.

Je pense qu'une couche TCP correctement réglée aurait plus d'effet sur la vitesse que la différence entre les protocoles de la couche application. Le Sun Blueprint Understanding Tuning TCP contient des détails.

Voici une autre bonne comparaison des caractéristiques individuelles de chaque protocole.

John Ellinwood
la source
22
+1 bonne réponse. Je pense que l'époque du FTP est révolue et qu'elle n'a plus rien à voir. C'est aussi un vrai porc à mettre en œuvre.
skaffman le
7
Quelle est la taille des fichiers «petits» ou «grands»?
Urbycoz
Le lien de comparaison des performances pointe vers une analyse des gains attendus de la mise en œuvre de P-HTTP, T / TCP et S-TCB. Nulle part il ne mentionne FTP. En outre, le lien correctement réglé est rompu.
Trisped le
@Trisped avez-vous lu le lien de comparaison des performances? Il y a 12 références au FTP et la toute première section dit "Le protocole HTTP a été développé à l'origine pour réduire les inefficacités du FTP ..." puis continue en expliquant. J'ai également mis à jour le lien "Understanding Tuning TCP" ... on dirait qu'Oracle a jeté tous les vieux livres blancs Sun Blueprints.
John Ellinwood
2
16 août 1996 ... vraiment? Même dans votre réponse de 2009, vous ne pouviez pas vous attendre à ce que cela soit représentatif de l'état actuel des choses. -1
user541686
29

Je viens de comparer un transfert de fichiers via FTP et HTTP:

  • sur deux très bonnes connexions serveur
  • en utilisant le même fichier .zip de 1 Go
  • dans les mêmes conditions de réseau (testées les unes après les autres)

Le résultat:

  • en utilisant FTP: 6 minutes
  • en utilisant HTTP: 4 minutes
  • en utilisant un logiciel de téléchargement http simultané ( fdm): 1 minute

Donc, fondamentalement dans une situation «réelle»:

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, ce qui le rend 6 fois plus rapide que FTP en fonction des conditions du réseau.

BitQuestions
la source
18
Cela semble très anecdotique.
spenibus
5
@anecdotal, il a fourni des chiffres (faits issus de la recherche), ce qui est moins anecdotique que toute autre réponse jusqu'à présent.
user1133275
Les heures sont-elles reproductibles, au moins approximativement?
masterxilo
il y a quelques jours, j'ai essayé de télécharger des fichiers de 90 Mo avec http, échec du réseau à 2 Mo. Mais avec ftp (même serveur, même fichier, même réseau via hotspot mobile), le succès du téléchargement. Je ne sais pas pourquoi.
Rahmat Ihsan
1
ftp est plus rapide pour les fichiers uniques en raison de la réduction des frais généraux. Si votre test a obtenu une réponse différente, essayez un autre client (ou moins probablement un autre serveur). http ne peut pas télécharger plus rapidement que le débit binaire maximal et toute option parallèle utilisée pour essayer de dépasser cela entraînera une surcharge de protocole. Contre. Les fichiers multiples peuvent être transférés dos à dos à des vitesses de ligne via FTP sans surcharge de protocole. L'option parallèle de FTP utilise plusieurs connexions TCP qui surpassent généralement les connexions à un seul point (par exemple, SMB3.1 vSMB2.1, 3.x peut utiliser la connexion multiple).
Astara
27

De nombreux pare-feu abandonnent les connexions sortantes qui ne sont pas vers les ports 80 ou 443 (http & https); certains abandonnent même les connexions à ces ports qui ne sont pas HTTP (S). FTP peut être autorisé ou non, sans parler des modes actifs / PASV.

En outre, HTTP / 1.1 permet de bien meilleures requêtes partielles ("envoyer uniquement de l'octet 123456 à la fin du fichier"), des requêtes conditionnelles et de la mise en cache ("envoyer uniquement si le contenu a changé / si la date de la dernière modification a été modifiée") et la compression du contenu (gzip).

HTTP est beaucoup plus facile à utiliser via un proxy.

D'après mes preuves anecdotiques, HTTP est plus facile à faire fonctionner avec des connexions abandonnées / lentes / irrégulières; par exemple, il n'est pas nécessaire de (ré) établir une session de connexion avant de (ré) lancer le transfert.

OTOH, HTTP est sans état, vous devrez donc vous authentifier et créer vous-même une trace de "qui a fait quoi et quand".

La seule différence de vitesse que j'ai remarquée est le transfert de nombreux petits fichiers: HTTP avec pipelining est plus rapide (réduit les allers-retours, surtout perceptible sur les réseaux à forte latence).

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, à moins que vous ne transfériez des fichiers via une machine à remonter le temps, HTTP semble avoir gagné.

(Tangentiellement: il existe des protocoles mieux adaptés pour le transfert de fichiers, comme rsyncou BitTorrent, mais ceux-ci n'ont pas autant de partage d'esprit, alors que HTTP est Everywhere ™)

Piskvor a quitté le bâtiment
la source
13

Une considération est que FTP peut utiliser des ports non standard, ce qui peut rendre difficile 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 de lire sur FTP actif et passif .

En termes de performances, à la fin de la journée, ils crachent tous les deux des fichiers directement via des connexions TCP, ce qui devrait donc être à peu près le même.

brian-brésil
la source
-5

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

Saleh
la source