Acabei de discutir com um colega meu e pensei em entrar em contato com os especialistas. Aqui está o cenário. Estávamos usando um site que mede a velocidade da sua conexão. Testamos usando um servidor que está longe de nós (estamos na Malásia e o servidor nos EUA). Foi em torno de 2 Mbps. Então tentamos com um servidor em Cingapura e foi muito mais rápido (cerca de 15 Mbps). Meu colega acreditava que é por causa da distância física, enquanto eu acho que não importa. Pelo que entendi, depois de fazer o handshake inicial e o fluxo de dados ter iniciado, não importa onde o servidor está localizado e o resultado deve ser quase o mesmo. Estou faltando alguma coisa aqui? Como isso realmente funciona?
22
Respostas:
Vocês dois estavam certos em algum momento da história, mas sua compreensão está correta ... hoje :). Existem alguns fatores que mudaram entre a resposta mais antiga que seu amigo deu e os recursos que temos hoje.
A diferença nos resultados que você viu pode ter sido afetada por:
Escala de janela TCP: O efeito de atraso de largura de banda
Como seu amigo mencionou, implementações mais antigas do TCP sofreram com os limites impostos pelo tamanho original da janela de recebimento de 16 bits no cabeçalho do TCP (ref RFC 793: Seção 3.1 ); O RWIN controla a quantidade de dados não reconhecidos que podem estar aguardando em um único soquete TCP. O RWIN de 16 bits valoriza caminhos de Internet limitados com produtos com alto atraso de largura de banda (e muitas das conexões de Internet de alta largura de banda atuais seriam limitadas por um valor de 16 bits).
Para valores altos de RTT, é útil ter um RWIN muito grande. Por exemplo, se o seu caminho RTT da Malásia para os EUA for de cerca de 200 ms, o TCP RWIN original o limitaria a 2,6 Mbps.
A RFC 1323 definiu algumas "Opções TCP" para superar essas limitações; uma dessas opções de TCP é "redimensionamento de janelas". Ele introduz um fator de escala, que multiplica o valor RWIN original, para obter o valor total da janela de recebimento; o uso de opções de dimensionamento de janela permite um RWIN máximo de 1073725440 bytes. Aplicando os mesmos cálculos:
Lembre-se de que o TCP aumenta o RWIN gradualmente durante a transferência, desde que a perda de pacotes não seja um problema. Para ver taxas de transferência realmente grandes em uma conexão de alto atraso, é necessário transferir um arquivo grande (para que o TCP tenha tempo de aumentar a janela) e a perda de pacotes não pode ser um problema para a conexão.
Perda de pacotes
Os circuitos da Internet no Oceano Pacífico às vezes ficam bastante congestionados. Parte da minha família mora em Taiwan, e costumamos ter problemas quando usamos o Google Talk com eles. Frequentemente vejo perda de pacotes acima de 0,5% quando sigo a linha DSL dos EUA; se você estiver vendo algo como uma perda de 0,5% no servidor "mais lento", isso limitaria muito facilmente a taxa de transferência em um único soquete TCP.
Fluxos TCP paralelos
Para sua informação, alguns sites de teste de velocidade usam fluxos TCP paralelos para aumentar a taxa de transferência ; isso pode estar afetando os resultados que você vê, porque os fluxos TCP paralelos aumentam drasticamente a taxa de transferência, caso você tenha alguma perda de pacote no caminho. Eu já vi quatro fluxos TCP paralelos saturar completamente um modem a cabo de 5 Mbps que sofreu perda de pacotes constante de 1%. Normalmente, 1% de perda diminuiria a taxa de transferência de um único fluxo TCP.
Material bônus: Ajuste do buffer do host
Muitas implementações antigas de SO tinham soquetes com buffers limitados; com sistemas operacionais mais antigos (como o Windows 2000), não importava se o TCP permitia que grandes quantidades de dados estivessem em andamento ... seus buffers de soquete não estavam ajustados para aproveitar o grande RWIN. Foram feitas muitas pesquisas para permitir alto desempenho nas transferências de TCP . Os sistemas operacionais modernos (para essa resposta, podemos chamar o Windows Vista e, mais tarde, "modernos") incluem melhores mecanismos de alocação de buffer em suas implementações de buffer de soquete.
fonte
Resposta curta: Sim, a distância afeta a largura de banda do fluxo único.
A internet desenvolveu meios de limitar esse efeito ... atraso no ACK, redimensionamento de janelas, outros protocolos :-) Mas a física ainda vence no final. Nesse caso, é muito mais provável que haja congestionamento geral da rede em tantos saltos - basta um único pacote descartado para matar um fluxo TCP.
fonte
Embora já existam excelentes respostas para isso, gostaria de acrescentar: não, a velocidade não é necessariamente afetada pela distância e sim, muitas vezes a velocidade é afetada pela distância .
Por que é que?
Fortemente simplificado, quanto maior a distância, mais "saltos" estão envolvidos no caminho pela Internet. A largura de banda máxima é determinada pelo salto mais lento e pelo tráfego simultâneo. Com o aumento da distância e uma distribuição um tanto aleatória das velocidades de salto, a probabilidade de obter velocidades gerais mais lentas está aumentando. Além disso, a física atrapalha e o aumento da latência também pode diminuir a velocidade do link.
Mas isso não deve ser tomado como garantido. A tecnologia nos permite construir uma conexão abrangente do planeta com praticamente qualquer largura de banda desejada. No entanto, largura de banda e distância são inimigas e aumentam drasticamente o custo da conexão, novamente tornando menos provável a existência apenas da conexão que você pode precisar no momento.
Claro, isso é simplificado demais, mas, na realidade, essa situação é o que você costuma encontrar. E, novamente, você não o faz quando há uma conexão surpreendentemente rápida ou um proxy de distribuição ao virar da esquina - mas quando tudo é instantâneo, raramente pensamos na velocidade da Internet ...
fonte
De acordo com Andrew Martin, a resposta é sim
fonte