Comparando HTTP e FTP para Transferir Arquivos

125

Quais são as vantagens (ou limitações) de uma sobre a outra para transferir arquivos pela Internet?

(Estou ciente das formas seguras de ambos os protocolos. Gostaria de ouvir comparações através de experiências pessoais em termos de desempenho, confiabilidade, limitações de tamanho de arquivo etc.)

Místico
fonte

Respostas:

99

Aqui está uma comparação de desempenho dos dois. O HTTP responde melhor à solicitação de resposta de arquivos pequenos, mas o FTP pode ser melhor para arquivos grandes se ajustado corretamente. O FTP costumava ser geralmente considerado mais rápido. O FTP requer um canal de controle e um estado seja mantido além do estado TCP, mas o HTTP não. Existem 6 transferências de pacotes antes que os dados sejam transferidos no FTP, mas apenas 4 no HTTP.

Eu acho que uma camada TCP ajustada corretamente teria mais efeito na velocidade do que a diferença entre os protocolos da camada de aplicação. O Sun Blueprint: Noções básicas sobre o TCP de ajuste tem detalhes.

Aqui está outra boa comparação das características individuais de cada protocolo.

John Ellinwood
fonte
22
+1 boa resposta. Acho que o dia do FTP já passou e já não tem mais relevância. É também um porco absoluto para implementar.
21410 skaffman
7
Qual o tamanho de arquivos "pequenos" ou "grandes"?
Urbycoz
O link de comparação de desempenho aponta para uma análise dos ganhos esperados da implementação do P-HTTP, T / TCP e S-TCB. Não onde ele menciona o FTP. Além disso, o link ajustado corretamente está quebrado.
Trisped
@Trisped você leu o link de comparação de desempenho? Existem 12 referências ao FTP e a primeira seção diz "O protocolo HTTP foi desenvolvido originalmente para reduzir as ineficiências do FTP ..." e depois explica. Também atualizei o link "Noções básicas sobre o ajuste do TCP" ... parece que a Oracle jogou fora todos os white papers antigos do Sun Blueprints.
John Ellinwood
2
16 de agosto de 1996 ... é mesmo? Mesmo na sua resposta de 2009, você não podia esperar que isso representasse o estado atual das coisas. -1
user541686
29

Acabei de comparar uma transferência de arquivos por FTP e HTTP:

  • mais de duas conexões de servidor muito boas
  • usando o mesmo arquivo zip de 1 GB
  • sob as mesmas condições de rede (testado um após o outro)

O resultado:

  • usando FTP: 6 minutos
  • usando HTTP: 4 minutos
  • usando um software http downloader simultâneo ( fdm): 1 minuto

Então, basicamente em uma situação da "vida real":

1) O HTTP é mais rápido que o FTP ao baixar um arquivo grande.

2) O HTTP pode usar o download de blocos paralelos, o que o torna 6x vezes mais rápido que o FTP, dependendo das condições da rede.

BitQuestions
fonte
18
Isso parece muito anedótico.
Spenibus 21/07/2015
5
@ anecdotal ele forneceu números (fatos da pesquisa) que são menos anedóticos do que qualquer outra resposta até agora.
user1133275
Os tempos são reproduzíveis, pelo menos aproximadamente?
Masterdilo
alguns dias atrás eu tentei baixar arquivos de 90MB com http, rede com falha em 2MB. Mas com o ftp (mesmo servidor, mesmo arquivo, mesma rede através do hotspot móvel), o sucesso do download. Não sei porque.
Rahmat Ihsan
1
O ftp é mais rápido para arquivos únicos devido à menor sobrecarga. Se o seu teste tiver uma resposta diferente, tente outro cliente (ou menos provável, outro servidor). O download do http não pode ser mais rápido que a taxa de bits máxima e qualquer opção paralela usada para tentar exceder isso introduzirá a sobrecarga do protocolo. Vs. Vários arquivos podem ser transferidos lado a lado na velocidade da linha via FTP sem sobrecarga de protocolo. A opção paralela do FTP usa várias conexões TCP que geralmente ultrapassam as conexões de ponto único (por exemplo, SMB3.1 vSMB2.1, 3.x pode usar a conexão múltipla).
Astara 20/03
27

Muitos firewalls descartam conexões de saída que não estão nas portas 80 ou 443 (http e https); alguns até descartam conexões com as portas que não são HTTP (S). O FTP pode ou não ser permitido, para não falar dos modos ativo / PASV.

Além disso, o HTTP / 1.1 permite solicitações parciais muito melhores ("envie apenas do byte 123456 até o final do arquivo"), solicitações condicionais e cache ("envie apenas se o conteúdo for alterado / se a data da última modificação for alterada") e a compactação de conteúdo (gzip).

HTTP é muito mais fácil de usar através de um proxy.

Pela minha evidência anedótica, o HTTP é mais fácil de trabalhar com conexões descartadas / lentas / escamosas; por exemplo, não é necessário (re) estabelecer uma sessão de login antes de (re) iniciar a transferência.

OTOH, o HTTP é sem estado, então você teria que fazer autenticação e criar uma trilha de "quem fez o que quando".

A única diferença de velocidade que notei é a transferência de muitos arquivos pequenos: o HTTP com pipelining é mais rápido (reduz as viagens de ida e volta, principalmente nas redes de alta latência).

Observe que o HTTP / 2 oferece ainda mais otimizações, enquanto o protocolo FTP não vê nenhuma atualização há décadas (e mesmo as extensões ao FTP têm aceitação insignificante pelos usuários). Portanto, a menos que você esteja transferindo arquivos através de uma máquina do tempo, o HTTP parece ter vencido.

(Tangencialmente: existem protocolos mais adequados para transferência de arquivos, como rsyncou BitTorrent, mas eles não têm tanto compartilhamento de ideias, enquanto HTTP é Everywhere ™)

Piskvor saiu do prédio
fonte
13

Uma consideração é que o FTP pode usar portas não padrão, o que pode dificultar a obtenção de firewalls (especialmente se você estiver usando SSL). O HTTP normalmente está em uma porta conhecida, portanto isso raramente é um problema.

Se você decidir usar o FTP, leia sobre FTP ativo e passivo .

Em termos de desempenho, no final do dia, os dois estão exibindo arquivos diretamente nas conexões TCP, portanto deve ser o mesmo.

brian-brazil
fonte
-5

Ambos usam o TCP como protocolo de transporte, mas o HTTP usa uma conexão persistente, o que melhora o desempenho do TCP.

saleh
fonte