Suponho que você esteja usando o TCP / IP para transferir o arquivo, embora tenha também deixado de mencionar qual protocolo está usando.
A resposta para isso seria preencher um grande livro - e há muitos deles disponíveis. Mas entre as possíveis razões estão:
-
controle de congestionamento : sua pilha de rede acelera a taxa de transferência, aumentando gradualmente a taxa durante a vida útil do conexão (até encontrar a perda de pacotes, altura em que a taxa cai massivamente). O uso de pacotes jumbo ajuda também.
-
tamanho da janela : um ponto final de TCP / IP enviará apenas o máximo de dados que considerar sistema pode buffer. A extremidade de recepção deve ser capaz de armazenar pelo menos a largura de banda x o RTT. Embora o RTT seja baixo aqui, a largura de banda é grande. Quando o IPV4 foi projetado, ele não esperava ter que lidar com esses buffers grandes. Existe uma solução que permite o escalonamento de janelas.
-
Seu computador não é dedicado ao propósito de enviar dados - é uma tarefa múltipla. Para processar os dados, a NIC gera uma interrupção - isso adiciona latência. Você pode atenuar os efeitos disso em boas placas de rede, ativando o buffer no cartão (coalesce de interrupção)
-
ainda há uma quantidade significativa de trabalho a ser feito no computador para agrupar os dados em quadros e executá-los, o que pode ser atenuado - neste caso, usando TCP offload se seu sistema operacional / hardware for compatível.
... e isso antes de olhar para as peculiaridades da Ethernet e / ou do protocolo que você está usando para transferir os arquivos.