Esse comportamento é facilmente explicado através do tamanho do buffer de saída e das configurações da janela TCP.
Primeiro, quando receber dados, você tem os bits ou não. O seu local scp
sabe quanto está esperando e quanto recebeu até o momento, para que possa fornecer uma avaliação precisa do progresso e do tempo estimado restante.
Quando você envia dados , você não tem informações sobre quanto desses dados chegou ao receptor ainda. Sua máquina local terá um buffer de saída que armazena dados depois de ter sido "enviado" pelo aplicativo (scp) e antes de ser realmente transmitido na rede. Além disso, o TCP permite que uma certa quantidade de dados esteja "em trânsito" entre o remetente e o destinatário.
Ao enviar dados, scp
só vê quanto foi transferido para o sistema operacional para eventual transmissão. O preenchimento dos buffers de saída acontece muito rapidamente, e é por isso que scp
mede uma taxa de transmissão alta inicialmente. À medida que a transferência avança, esse valor converge para a taxa de transmissão real. Depois de ter entregado todos os dados para o seu sistema operacional, ele ainda tem que chegar ao outro lado e é por isso que parece estar "preso" a 100% por alguns segundos no final.
Os sistemas operacionais modernos e as redes TCP aumentaram o tamanho da janela TCP (consulte a opção de escala da janela TCP ) para contabilizar redes de gordura "com alta largura de banda e alta latência. É por isso que você pode estar vendo esse comportamento com mais frequência do que no passado.