J'aimerais savoir pourquoi techniquement Dropbox est beaucoup plus rapide que FTP? Quel type de technologie utilise-t-il?
Je ne parle pas de fichiers diff, je parle de transférer de nouveaux fichiers dans les deux cas, Dropbox est beaucoup plus rapide.
Je le pense vraiment beaucoup plus rapidement, peut-être 10 fois plus rapide que FTP pour les fichiers que j'ai téléchargés. Je vais expérimenter à nouveau pour des fichiers plus gros plus tard.
Réponses:
Il pourrait y avoir un certain nombre de raisons à cela.
Le protocole FTP est loin d'être efficace.
Un transfert FTP nécessite au moins deux connexions (une pour le contrôle et une pour les données), où DropBox utilise peut-être une seule connexion HTTP. De plus, la connexion de données pour une session FTP peut être ouverte du serveur vers votre client. Si vous êtes en mode NAT, cela peut échouer et votre client FTP peut essayer de se connecter de cette manière, en échouant de la sorte.
Il y a beaucoup de va-et-vient sur une connexion FTP. Pour envoyer un fichier, le client doit envoyer un minimum de deux commandes (une pour ouvrir la connexion de données et une pour démarrer l'envoi) et chaque fois qu'il doit attendre que le serveur réponde, ce qui ajoute une latence supplémentaire. Outre ces deux allers-retours par fichier, il existe plusieurs allers-retours avec la commande pour la connexion initiale: un pour envoyer le nom d'utilisateur, un pour le mot de passe et au moins un pour définir les paramètres de transfert (afin de s'assurer que le serveur est correctement connecté). en attente de données binaires, pas ASCII). Le client peut également émettre quelques commandes supplémentaires pour obtenir des informations du serveur sur lui-même. Dropbox utilisera probablement cette requête HTTP, ou au plus deux (une pour s’authentifier, une pour envoyer les données).
De plus, selon le client que vous utilisez pour les transferts FTP (ce que vous ne précisez pas, il serait judicieux de modifier votre question pour inclure cette information), il se peut que la connexion soit coupée après chaque opération d'envoi et qu'elle se reconnecte ensuite. temps. Il n'est pas improbable que DropBox maintienne une connexion ouverte pendant un certain temps aux fins de scrutation longue, afin de réagir dès que possible aux nouvelles données disponibles que ce client devrait télécharger, de manière à ce qu'il doive afficher une nouvelle Connexion HTTP pour envoyer un fichier qu'il n'a pas besoin de réauthentifier.
Il n'est pas improbable que le client DropBox comprime les données avant de les envoyer (pour améliorer la vitesse et économiser la bande passante) là où votre client FTP ne sera pas. Ainsi, même pour des fichiers plus volumineux (à moins qu’ils ne soient précomprimés ou chiffrés), DropBox, et les utilitaires similaires, peuvent être plus rapides qu’un transfert FTP de base.
Pour les fichiers volumineux, les trois premiers points ci-dessus ne sont guère significatifs par rapport au temps nécessaire au transfert effectif des données, mais le point 4 peut néanmoins être très important. Pour les petits fichiers, le temps de configuration supplémentaire ajouté par le protocole FTP peut potentiellement être deux fois plus long que le temps nécessaire pour envoyer les données.
la source
Comme d'autres l'ont mentionné, Dropbox peut ignorer des parties de fichiers qui n'ont pas changé . Mais aussi, Dropbox ignorera le téléchargement de fichiers s'il en a déjà une copie côté serveur ( une copie déjà téléchargée par vous-même ou une autre personne).
Ainsi, si vous essayez de télécharger un fichier identique à un fichier déjà présent dans Dropbox, le téléchargement est ignoré (et les autres machines liées peuvent commencer à le télécharger à partir des serveurs Dropbox). Si vous téléchargez un fichier presque identique à un autre fichier déjà téléchargé (vous ne pouvez pas savoir si le fichier déjà chargé doit être "le vôtre" ou s'il peut provenir d'un utilisateur quelconque), il n'enverra alors qu'un nombre suffisant de parties du fichier. fichier pour le recréer sur le serveur une fois combiné avec le fichier déjà téléchargé.
FTP ne peut faire aucune de ces choses (c'est un protocole simple pour envoyer et recevoir des flux de données sans référence à aucune autre donnée disponible sur l'extrémité distante). Des outils tels que rsync et Unison peuvent «ignorer les morceaux que l'autre côté possède déjà», mais se limitent généralement à comparer des morceaux dans des fichiers à un chemin identique dans la hiérarchie synchronisée. Dropbox semble étendre cette idée aux collections de fichiers (donc, si vous «téléchargez» deux fichiers presque identiques, il est probable qu’il pourrait s’arranger pour n’en envoyer qu’un plus suffisamment de «diff» pour recréer l’autre).
la source
Je suppose que vous voulez dire plus rapidement en termes de transfert de fichiers. Lorsque vous enregistrez un fichier dans votre dossier Dropbox, Dropbox envoie uniquement le delta (ou le diff) des données au serveur de stockage distant. FTP (le plus probable) envoie le fichier octet par octet (plutôt que d'envoyer simplement les modifications), ce qui prend potentiellement beaucoup plus de temps à transférer sur un réseau. De même, lors de la synchronisation à partir du serveur distant, les clients locaux ne téléchargeront que les modifications.
La fonction de synchronisation LAN peut également potentiellement accélérer les synchronisations et réduire le trafic réseau nécessaire.
la source
Dropbox peut être plus rapide lorsque vous envoyez une plus grande quantité de fichiers. FTP est aussi rapide que vous pouvez obtenir lorsque nous parlons vitesse, mais il faut trop de "conversation" entre le serveur et l'ordinateur client pour chaque fichier, de sorte que le ftp semble être plus lent. Si vous téléchargez une application open source contenant des milliers de fichiers, il est plus pratique de compresser tous les fichiers, de les télécharger via FTP et de les décompresser sur le serveur.
la source
Je suppose qu'ils utilisent des techniques de hachage simples similaires à md5 / sha
Chaque fois que vous déposez un fichier dans une "dropbox" locale, dropbox-client calcule le hachage de ce fichier et doit envoyer des données supplémentaires, telles que la taille du fichier, nom de fichier au serveur de dropbox.
Si dropbox-server trouve des fichiers similaires (ils doivent conserver un index des hachages et des données de fichier sur leur serveur), il informera simplement le client que le fichier a été "téléchargé" avec succès. ;-)
De cette façon, vous finissez par "télécharger" le fichier de manière logique. Comme il n’ya pas de véritable transfert de contenu de fichier, cela doit être plus rapide qu’autre chose.
Je ne sais pas quel algorithme de hachage est utilisé par Dropbox, mais je suis sûr à 100% que leur principe de fonctionnement est similaire à celui que j'ai décrit ci-dessus.
la source
Bien que Dropbox utilise d'autres services, ils utilisaient auparavant Amazon AWS (Amazon Web Services). Il semble que votre transfert de la source à la destination comporte un très gros tuyau de transfert. D'après mon expérience, Dropbox utilise une destination capable d'accepter de grandes quantités de données à la fois. Dropbox distribue également le téléchargement vers différentes adresses IP. Le site sur lequel vous effectuez un FTP a probablement un tuyau de transfert beaucoup plus petit et n’a pas la capacité de distribuer les téléchargements aussi efficacement.
Si vous exécutez Resource Monitor (resmon) et accédez à l'onglet Réseau, vous remarquerez les différents processus utilisant la bande passante réseau.
Total (B/sec)
Total (B/sec)
Pour moi, lorsque je télécharge un fichier sur Dropbox, il utilise 4 connexions pour envoyer 4 adresses IP différentes.
la source