Como veo que hay bastante gente que se lía sobre lo que es el ping y después de haber visto un post en el foro de cs discutiendo si el ancho de banda importa o no en el ping, he hecho este pequeño tutorial para explicaros las nociones básicas sobre el ping y que es lo que indica.
Vamos a hacer unas pequeñas definiciones, antes de entrar en materia:
El ancho de banda es la tasa de transferencia de nuestra conexión (Normalmente medido en bits/segundo o múltiplos de éste), si lo comparamos con una manguera, sería su grosor, cuanto más grosor tenga nuestra manguera, más agua transportará ésta por unidad de tiempo.
Como ejemplo, supongamos que tenemos unas conexiones ADSL de 2Mb (2Mb bajada, 300 Kb subida) y 256Kb (256Kb de bajada, 128 Kb de subida), ojo en Kilobits/s.
Por tanto los anchos de banda máximos teóricos en KB/s son (suponiendo 1Mb = 1000Kb, 1 Byte = 8 bits):
Para la ADSL 2Mb (250 KB/s de bajada, 37.5 KB/s de subida).
Para la ADSL 256Kb (32 KB/s de bajada, 16 KB/s de subida).
Otro termino a introducir es la latencia.
La latencia es el tiempo que tarda en llegar el 1º bit del paquete de datos desde que le enviamos hasta llegar a su destino, comparándolo con la manguera, es el tiempo que tardaría el agua en recorrer la manguera desde un extremo hasta que comienza a llegar al otro.
La latencia varía según la calidad del medio de transmisión, el número de routers que nuestros datos tengan que atravesar, la configuración de las DSLAM'S (en las centralitas), etc........En el ejemplo de la manguera, si mandamos el agua con más presión, tardará menos en desplazarse por la manguera y por tanto llegará más rápida a su destino.
Suponiendo que nuestras ADSL'S tienen en común lo anteriormente dicho (mismo medio de transmisión, mismos enrutamientos, etc), su latencia debería ser similar para una conexión de 2Mb que para una de 256Kb, aunque no es siempre así.
El ping es el tiempo que se tarda en enviar un paquete de datos a un servidor y en volver a recibirlo de él.
El paquete de datos del ping viajaría así:
NuestroPc--->SERVER--->NuestroPc (No es exactamente así, pero bueno, nos sirve).
Comenzaríamos a enviar los datos desde nuestro pc, en un tiempo x (latencia) llegaría el 1º bit que le enviamos al server, a partir de ahí pasa un tiempo en el que el server recibe de manera consecutiva nuestros datos (tiempo determinado por nuestro ancho de banda de subida y el ancho de banda de bajada del server), luego el server comenzaría a devolvernos una respuesta, cuando nos llega el 1º bit del server habrá pasado un tiempo x (de nuevo la latencia) , a partir de ahora tardaremos otro tiempo en "descargarnos" esos datos que el server nos envía, que está determinado por nuestro ancho de banda de bajada y el ancho de subida del server.
Si os liáis, os lo explico con el ejemplo de la manguera:
Un extremo de la manguera es nuestro pc y otro el server, comenzamos a enviar agua por la manguera, que comenzará a llegar al otro extremo en un tiempo x (la latencia), ahora según el grosor de la manguera(ancho de banda), tardaremos más o menos tiempo en que llegue todo el agua al otro extremo, por el otro extremo nos comienzan a enviar agua, que tarda un cierto tiempo x en comenzar a llegarnos(la latencia), a partir de entonces recibimos el agua a un ritmo constante, determinado por el grosor de nuestra manguera (ancho de banda).
Espero que os hayan quedado claro los conceptos de ancho de banda y latencia, he intentado explicarlos lo mejor posible.
Con las anteriores definiciones, podemos sacar una fórmula para calcular el ping, que es la siguiente (aprox.):
Ping = 2 * Latencia + tiempo en subir el paquete + tiempo en bajarlo
Como vemos, el ping depende de la latencia de la conexión con el servidor (en gran medida) y también del ancho de banda de nuestra conexión, al tener mayor ancho de banda tardaremos menos en enviar y recibir el paquete de datos, aunque también habría que contar con la rapidez de respuesta del server, cosa que en este caso desprecio.
Para aquellos que no se crean lo que les digo, que mayor ancho de banda implica menor ping, les pongo 2 ejemplos:
Un ejemplo:
Supongamos que el paquete de datos a enviar es de 32 Bytes y que la latencia con el server es de 25 ms (1024 Bytes = 1 Kilobyte, 1s = 1000 ms)
(Nota:Con tiempo en subir y bajar, me refiero al tiempo utilizado en transferir una cantidad de datos usando todo el ancho de banda teórico, sin contar la latencia.)
Con 2Mb:
Tiempo en subir 32 Bytes = 32 / 37.5 * 1024 = 0,000833 s = 0,833 ms
Tiempo en bajar 32 Bytes = 32 / 250 * 1024 = 0,000125 s = 0,125 ms
-------- 0,958 ms Subida+Bajada
- Con 256 Kb:
Tiempo en subir 32 Bytes = 32 / 16 * 1024 = 0,001953 s = 1,953 ms
Tiempo en bajar 32 Bytes = 32 / 32 * 1024 = 0,000976 s = 0,976 ms
--------
2,929 ms Subida+Bajada
Por tanto, el ping para este paquete de datos de 32 Bytes sería:
- Con 2Mb: Ping = 2 * 25 + 0,958 = 50,958 ms
- Con 256Kb: Ping = 2 * 25 + 2,929 = 52,929 ms
Como vemos, para un paquete de datos de 32 bytes, la conexión de 2Mb tiene 2 ms menos de ping que la de 256 Kb, en este caso el ancho de banda no influye mucho porque el tamaño del paquete es pequeño.
Hagamos los mismos cálculos para un paquete de datos más grande, por ejemplo 300 bytes:
Con 2Mb:
Tiempo en subir 300 Bytes = 300 / 37.5 * 1024 = 0,007812 s = 7,812 ms
Tiempo en bajar 300 Bytes = 300 / 250 * 1024 = 0,001171 s = 1,171 ms
--------- 8,983 ms Subida+Bajada
Con 256 Kb:
Tiempo en subir 300 Bytes = 300 / 16 * 1024 = 0,018310 s = 18,310 ms
Tiempo en bajar 300 Bytes = 300 / 32 * 1024 = 0,009155 s = 9,185 ms
-------- 27,495 ms Subida+Bajada
Por tanto, el ping para este paquete de datos de 300 Bytes sería:
Con 2Mb: Ping = 2 * 25 + 8,983 = 58,983 ms
Con 256Kb: Ping = 2 * 25 + 27,495 = 77,495 ms
Como vemos, ahora el ancho de banda si importa bastante, con la conexión de 2Mb tenemos casi 20ms menos de ping que con la conexión de 256Kb.
En cualquier caso, el parámetro fundamental en el ping es la latencia (mirar fórmula), en el caso de la ADSL, si se activará el modo Fast-Path en las DSLAM'S, la latencia se reduciría de forma muy notable, entre 15-25 ms, por tanto el ping se reduciría entre 30-50 ms, ya que no se haría la comprobación de errores en la centralita, que requiere de varios milisegundos de proceso, y en el caso del protocolo tcp/ip esto es absurdo, puesto que el propio protocolo tiene mecanismos de corrección de errores.
Bueno, espero que esto os haya servido de algo y os haya aclarado algunos conceptos.
Ciao.