Pergunta

Entre o FTP, HTTP, SSH, etc. e, dada uma conexão consistente de Internet de banda larga e consistente, qual é a maneira mais rápida de transferir arquivos por uma rede?

Foi útil?

Solução

Entre esses 3, seu http. O ato efetivo de "transferir o arquivo" tem a mesma velocidade, mas:

O FTP requer muita "conversa" para estabilizar uma sessão e cria conexões paralelas para transferir dados, tudo isso "conversando" leva um pouco mais de tempo para começar a transferir arquivos. Por esse mesmo motivo, você pode ter problemas com firewalls e roteadores por causa das portas aleatórias de abertura do FTP, especificamente se o cliente FTP não suportar "modo passivo".

O HTTP é mais objetivo, você se conecta, diz o que deseja e obtém -o como resposta. Não blá blá blá.

SSH não é um protocolo de transferência. SSH significa "Shell Secure". Se você quer dizer SSL, também não é um protocolo de transferência, é uma camada de segurança, comumente usada para encapsular sessões HTTP.

Mas talvez não seja uma questão de qual é mais rápido, a verdadeira questão é: o que você quer fazer? Dependendo do seu problema, nenhum deles pode ser uma opção.

Outras dicas

Use Socket.sendFile (), se puder. Esta é a maneira mais fácil de obter um arquivo do ponto A ao ponto B. Sem saber as especificidades do que você está tentando realizar, é realmente difícil dar uma recomendação melhor. O FTP é provavelmente o que eu usaria de outra forma e o System.net possui um objeto FTPClient razoavelmente decente que você pode usar e as amostras o documentam bastante bem. HTTP e FTP usam o TCP, para que você provavelmente não verá uma diferença de velocidade significativa entre eles e o HTTP geralmente terá cabeçalhos com outro comportamento em potencial (tente fazer upload de um arquivo com espera-100 continuar e sem credenciais para um servidor que requer autenticação e veja o que acontece com suas conexões). Com o soquete.sendfile () Como os soquetes são, por definição, protocolo-agnóstico, você pode enviar o arquivo via UDP ou TCP com o mesmo código, mas eu recomendaria que você esteja enviando por uma LAN onde a perda de pacotes é praticamente 0 . UDP pela Internet não é uma boa ideia.

Você tem controle sobre os pontos de extremidade e algum firewalls intervenientes? O FTP é menos amigável ao firewall do que as outras opções. As ferramentas baseadas em SSH (SFTP, SCP) são muito boas, mas alguns ISPs são conhecidos por acelerar ou interferir no tráfego criptografado (Comcast, estou olhando para você!) Você considerou o RSYNC? No meu trabalho, é isso que usamos para transferir enormes conjuntos de dados por conexões de Internet de longo curso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top