Confronto tra HTTP e FTP per il trasferimento di file


125

Quali sono i vantaggi (o le limitazioni) dell'uno rispetto al trasferimento di file su Internet?

(Sono a conoscenza di forme sicure di entrambi i protocolli. Mi piacerebbe sentire i paragoni attraverso esperienze personali in termini di prestazioni, affidabilità, limiti di dimensione dei file ecc.)

Risposte:


99

Ecco un confronto delle prestazioni delle dei due. HTTP è più reattivo per la richiesta-risposta di file di piccole dimensioni, ma FTP può essere migliore per file di grandi dimensioni se ottimizzato correttamente. FTP era generalmente considerato più veloce. FTP richiede un canale di controllo e lo stato deve essere mantenuto oltre allo stato TCP ma HTTP no. Ci sono 6 trasferimenti di pacchetti prima che il trasferimento dei dati inizi in FTP ma solo 4 in HTTP.

Penso che un livello TCP correttamente regolato avrebbe un maggiore effetto sulla velocità rispetto alla differenza tra i protocolli del livello applicazione. Il progetto Sun Capire il tuning TCP ha dettagli.

Ecco un altro buon confronto tra le caratteristiche individuali di ciascun protocollo.


22
+1 buona risposta. Penso che il giorno di FTP sia passato e finito, ha ancora poca rilevanza. È anche un maiale assoluto da implementare.
Skaffman,

7
Che dimensione si intende per file "piccoli" o "grandi"?
Urbycoz,

Il collegamento di confronto delle prestazioni indica un'analisi dei guadagni previsti dall'implementazione di P-HTTP, T / TCP e S-TCB. No dove menziona FTP. Inoltre, il collegamento correttamente ottimizzato viene interrotto.
Trisped

@Trisped hai letto il link di confronto delle prestazioni? Ci sono 12 riferimenti a FTP e la prima sezione dice "Il protocollo HTTP è stato originariamente sviluppato per ridurre le inefficienze dell'FTP ..." e poi continua spiegando. Ho anche aggiornato il link "Capire il tuning TCP" ... sembra che Oracle abbia buttato via tutti i vecchi white paper di Sun Blueprints.
John Ellinwood,

2
16 agosto 1996 ... davvero? Anche nella tua risposta del 2009 non puoi aspettarti che questo sia rappresentativo dell'attuale situazione. -1
user541686

29

Ho appena confrontato un trasferimento di file su FTP e HTTP:

  • oltre due ottime connessioni al server
  • utilizzando lo stesso file .zip da 1 GB
  • nelle stesse condizioni di rete (testati uno dopo l'altro)

Il risultato:

  • usando FTP: 6 minuti
  • usando HTTP: 4 minuti
  • utilizzando un software http downloader simultaneo ( fdm): 1 minuto

Quindi, sostanzialmente in una situazione di "vita reale":

1) HTTP è più veloce di FTP quando si scarica un file di grandi dimensioni.

2) HTTP può utilizzare il download di blocchi paralleli che lo rende 6 volte più veloce dell'FTP a seconda delle condizioni della rete.


18
Questo sembra molto aneddotico.
spenibus,

5
@anecdotal ha fornito numeri (fatti tratti dalla ricerca) che è meno aneddotico di qualsiasi altra risposta finora.
user1133275

I tempi sono riproducibili, almeno approssimativamente?
masterxilo,

qualche giorno fa ho provato a scaricare file da 90 MB con http, rete fallita a 2 MB. Ma con ftp (stesso server, stesso file, stessa rete tramite hotspot mobile), il download ha esito positivo. Non so perché.
Rahmat Ihsan,

1
ftp è più veloce per singoli file a causa del sovraccarico ridotto. Se il tuo test ha ottenuto una risposta diversa, prova un altro client (o meno probabilmente, un altro server). http non può scaricare più velocemente della velocità in bit massima e qualsiasi opzione parallela utilizzata per tentare di superare ciò introdurrà il sovraccarico del protocollo. Vs. I file multipli possono essere trasferiti back-to-back a velocità di linea tramite FTP senza costi di protocollo. L'opzione parallela di FTP utilizza più connessioni TCP che normalmente superano le connessioni a punto singolo (es. SMB3.1 vSMB2.1, 3.x può utilizzare la connessione multipla).
Astara,

27

Molti firewall interrompono le connessioni in uscita che non sono alle porte 80 o 443 (http & https); alcuni addirittura rilasciano connessioni a quelle porte che non sono HTTP (S). FTP può o meno essere autorizzato, per non parlare delle modalità attive / PASV.

Inoltre, HTTP / 1.1 consente richieste parziali molto migliori ("invia solo dal byte 123456 alla fine del file"), richieste condizionate e memorizzazione nella cache ("invia solo se il contenuto è cambiato / se la data dell'ultima modifica modificata") e la compressione del contenuto (gzip).

HTTP è molto più facile da usare attraverso un proxy.

Dalle mie prove aneddotiche, HTTP è più facile da far funzionare con connessioni disconnesse / lente / instabili; ad esempio, non è necessario (ri) stabilire una sessione di accesso prima di (ri) avviare il trasferimento.

OTOH, HTTP è apolide, quindi dovresti fare l'autenticazione e costruire una scia di "chi ha fatto cosa quando" te stesso.

L'unica differenza di velocità che ho notato è il trasferimento di molti piccoli file: HTTP con pipelining è più veloce (riduce i viaggi di andata e ritorno, soprattutto nelle reti ad alta latenza).

Si noti che HTTP / 2 offre ancora più ottimizzazioni, mentre il protocollo FTP non ha visto alcun aggiornamento per decenni (e persino le estensioni a FTP hanno un assorbimento insignificante da parte degli utenti). Quindi, a meno che non si stiano trasferendo file attraverso una macchina del tempo, HTTP sembra aver vinto.

(Tangenzialmente: ci sono protocolli che sono più adatti per il trasferimento di file, come rsyncBitTorrent, ma quelli non hanno la stessa condivisione mentale, mentre HTTP è Everywhere ™)


13

Una considerazione è che FTP può utilizzare porte non standard, il che può rendere difficile l'attivazione dei firewall (soprattutto se si utilizza SSL). HTTP si trova in genere su una porta nota, quindi raramente si tratta di un problema.

Se decidi di utilizzare FTP, assicurati di leggere FTP attivo e passivo .

In termini di prestazioni, alla fine della giornata stanno entrambi spargendo i file direttamente nelle connessioni TCP, quindi dovrebbe essere più o meno lo stesso.


-5

Entrambi utilizzano TCP come protocollo di trasporto, ma HTTP utilizza una connessione persistente, che migliora le prestazioni del TCP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.