Acabo de discutir con un colega mío y pensé en comunicarme con los expertos en esto. Aquí está el escenario. Estábamos usando un sitio web que mide la velocidad de su conexión. Probamos con un servidor que está lejos de nosotros (estamos en Malasia y el servidor estaba en EE. UU.). Fue alrededor de 2 Mbps. Luego probamos con un servidor en Singapur y fue mucho más rápido (alrededor de 15 Mbps). Mi colega creía que se debía a la distancia física, aunque no creo que importe. Según tengo entendido, una vez que haya realizado el protocolo de enlace inicial y haya comenzado el flujo de datos, no importa dónde se encuentre el servidor y el resultado debería ser casi el mismo. ¿Me estoy perdiendo de algo? ¿Cómo funciona realmente?
22
Respuestas:
Ambos tenían razón en algún momento de la historia, pero su comprensión es mayormente correcta ... hoy :). Hay algunos factores que cambiaron entre la respuesta anterior que dio su amigo y las capacidades que tenemos hoy.
La diferencia en los resultados que vio podría haber sido afectada por:
Escalado de ventana TCP: el efecto de retraso de ancho de banda
Como su amigo mencionó, las implementaciones anteriores de TCP sufrieron los límites impuestos por el tamaño original de la ventana de recepción de 16 bits en el encabezado TCP (ref RFC 793: Sección 3.1 ); RWIN controla la cantidad de datos no reconocidos que pueden estar esperando en un solo socket TCP. RWIN de 16 bits valora las rutas de Internet limitadas con productos con alto retardo de ancho de banda (y muchas de las conexiones de Internet de alto ancho de banda actuales estarían limitadas por un valor de 16 bits).
Para valores RTT altos, es útil tener un RWIN muy grande. Por ejemplo, si su ruta RTT de Malasia a los EE. UU. Es de aproximadamente 200 ms, el TCP RWIN original lo limitaría a 2.6Mbps.
RFC 1323 definió algunas "Opciones TCP" para superar estas limitaciones; una de esas opciones de TCP es "escala de ventana". Introduce un factor de escala, que multiplica el valor RWIN original, para obtener el valor completo de la ventana de recepción; El uso de opciones de escala de ventana permite un RWIN máximo de 1073725440 bytes. Aplicando los mismos cálculos:
Tenga en cuenta que TCP aumenta RWIN gradualmente durante la duración de una transferencia, siempre que la pérdida de paquetes no sea un problema. Para ver velocidades de transferencia realmente grandes en una conexión de alto retraso, debe transferir un archivo grande (para que TCP tenga tiempo de aumentar la ventana) y la pérdida de paquetes no puede ser un problema para la conexión.
Paquete perdido
Los circuitos de Internet a través del Océano Pacífico se congestionan a veces. Parte de mi familia vive en Taiwán, y habitualmente nos encontramos con problemas cuando usamos Google Talk con ellos. A menudo veo una pérdida de paquetes superior al 0,5% cuando hago ping a su línea DSL desde los EE. Si está viendo algo así como una pérdida del 0,5% en el servidor "más lento", limitaría muy fácilmente el rendimiento en un solo socket TCP.
Secuencias TCP paralelas
Para su información, algunos sitios web de prueba de velocidad utilizan flujos TCP paralelos para aumentar el rendimiento ; esto puede estar afectando los resultados que ve, porque las secuencias TCP paralelas aumentan drásticamente el rendimiento en caso de que tenga alguna pérdida de paquetes en la ruta. He visto cuatro flujos TCP paralelos que saturan completamente un cable módem de 5 Mbps que sufrió una pérdida de paquetes constante del 1%. Normalmente, una pérdida del 1% reduciría el rendimiento de una sola secuencia TCP.
Material extra: sintonización del búfer de host
Muchas implementaciones de SO más antiguas tenían sockets con buffers limitados; con sistemas operativos más antiguos (como Windows 2000), no importaba si TCP permitía que grandes cantidades de datos estuvieran en vuelo ... sus memorias intermedias de socket no estaban sintonizadas para aprovechar el gran RWIN. Se realizó mucha investigación para permitir un alto rendimiento en las transferencias TCP . Los sistemas operativos modernos (para esta respuesta, podemos llamar a Windows Vista y más tarde "moderno") incluyen mejores mecanismos de asignación de búfer en sus implementaciones de búfer de socket.
fuente
Respuesta corta: Sí, la distancia tiene un efecto en el ancho de banda de flujo único.
Internet ha desarrollado medios para limitar ese efecto ... ACK retrasado, escalado de ventanas, otros protocolos :-) Pero la física sigue ganando al final. En este caso, es mucho más probable que se trate de una congestión general de la red en tantos saltos: solo se necesita un único paquete descartado para eliminar una secuencia TCP.
fuente
Si bien ya hay excelentes respuestas a esto, me gustaría agregar: no, la velocidad no se ve necesariamente afectada por la distancia y sí, muy a menudo la velocidad se ve afectada por la distancia , ambas son ciertas.
¿Porqué es eso?
Fuertemente simplificado, cuanto mayor es la distancia, más "saltos" están involucrados en el camino a través de Internet. El ancho de banda máximo está determinado por el salto más lento y el tráfico concurrente. Con el aumento de la distancia y una distribución algo aleatoria de las velocidades de salto, aumenta la probabilidad de obtener velocidades generales más lentas. Además, la física se interpone y el aumento de la latencia también puede ralentizar el enlace.
Pero esto no debe darse por sentado. La tecnología nos permite construir una conexión que abarca todo el planeta de casi cualquier ancho de banda deseado. Sin embargo, el ancho de banda y la distancia son enemigos y ambos aumentan drásticamente el costo de la conexión, lo que hace que sea menos probable que exista solo para la conexión que pueda necesitar en este momento.
Por supuesto, esto está demasiado simplificado, pero en realidad, esta situación es lo que a menudo encuentra. Y, de nuevo, no lo hace cuando hay una conexión sorprendentemente rápida o un proxy de distribución a la vuelta de la esquina, pero cuando todo es instantáneo, rara vez pensamos en la velocidad de Internet ...
fuente
Según Andrew Martin, la respuesta es sí
fuente