Ping

utilidad de diagnóstico en redes de computadoras.

Como programa, ping es una utilidad de diagnóstico en redes de computadoras que comprueba la conectividad y latencia del anfitrión local con otro equipo remoto de una red a nivel IP.[1][2]​ Se vale del envío de paquetes ICMP de solicitud (ICMP Echo Request) y de respuesta (ICMP Echo Reply).[3]​ Mediante esta utilidad puede diagnosticarse el estado, velocidad y calidad de una red determinada.[4]

Ejecutando Ping de solicitud, el anfitrión local (en inglés: local host) envía un mensaje ICMP, incrustado en un paquete IP. El mensaje ICMP de solicitud incluye, además del tipo de mensaje y el código del mismo, un número identificador y una secuencia de números, de 32 bits, que deberán coincidir con el mensaje ICMP de respuesta; además de un espacio opcional para datos. Como protocolo ICMP no se basa en un protocolo de capa de transporte como TCP o UDP y no utiliza ningún protocolo de capa de aplicación.

Muchas veces se utiliza para medir la latencia o tiempo que tardan en comunicarse dos puntos remotos, y por ello, se utiliza el término PING para referirse al retardo o latencia (en inglés: lag) de la conexión en los juegos en red.

Existe otro tipo, Ping ATM, que se utiliza en las redes ATM, y en este caso, las tramas que se transmiten son ATM (nivel 2 del modelo OSI). Este tipo de paquetes se envían para probar si los enlaces ATM están correctamente definidos.

Origen del término

editar
 

A veces, PING es considerado el acrónimo de Packet Internet Groper,[5]​ el que puede significar "Buscador o rastreador de paquetes en redes", pero Mike Muuss, el autor de la utilidad, lo refuta.[6]​ El comando ping tiene su origen en los submarinos y sus sónares, que envían una señal sonora para detectar si hay algún obstáculo. Si esta vuelve, significa que hay algún cuerpo o barrera en la trayectoria de la señal emitida por el sónar. Se puede calcular la distancia del obstáculo mediante el tiempo que tarda en retornar la señal, el cual puede usarse como informe exacto de la posición del objeto contra el que impactó la señal.

El mecanismo del comando ping es similar al que utiliza el sónar: se puede ver si hay conectividad entre dos hosts y el tiempo que tardan en llegar los paquetes en función del tiempo de respuesta.

Detalles técnicos

editar

La utilidad Ping trabaja en la capa de red del Protocolo de internet (familia TCP/IP) y es un tipo de mensaje de control del protocolo ICMP,[7]​ subprotocolo de IP. El funcionamiento de Ping y del protocolo ICMP, en general, están definidos en la RFC 792.

El protocolo IP encapsula el mensaje ICMP dentro de un paquete y lo envía. Suele llamarse Paquete ICMP. En el paquete pueden distinguirse dos conjuntos de datos: La Cabecera IP, que contiene los datos estándar de la Capa de red, y el subpaquete ICMP, que contiene los datos de control. En la Cabecera IP se especifican los valores protocolo como 1 y tipo de servicio como 0[8]​ de forma obligatoria. En el subpaquete ICMP se especifican los valores tipo de mensaje ICMP a 8 (petición) o 0 (respuesta) y code a 0 (en ambos casos).

Paquete ICMP
  Bit 0 - 7 Bit 8 - 15 Bit 16 - 23 Bit 24 - 31
Encabezado IP
(20 bytes)
Versión/IHL Tipo de servicio Longitud
Identificación flags y offset
Tiempo de vida (TTL) Protocolo Checksum
Dirección IP origen
Dirección IP destino
ICMP Carga
(8 + bytes)
Tipo de mensaje Code Checksum
Identificador + Secuencia numérica
Datos (opcional)

El total de la cabecera IP no podrá superar los 160 bits (20 bytes), tras la cual se situará el mensaje ICMP, con un tamaño estándar de 64 bits (8 bytes).

Composición de un paquete ICMP

editar

A partir del cuadro anterior podemos desglosar los siguientes valores propios de un paquete ICMP, en la carga ICMP:

  • Cabecera IP:[9]
  • Carga ICMP:[10][11]
    • Tipo de mensaje y código ICMP: cada uno 8 bits, ambos 2 bytes.[12]
    • Checksum, calculado sobre la base de la carga ICMP y excluyendo la cabecera IP. 16 Bits.
    • Identificador y Secuencia numérica. Cada uno 16 bits, ambos 32 bits.
    • Datos. Contenido opcional y tamaño arbitrario.

Variables ICMP en petición

editar

Una petición Ping (echo request) no es más que un mensaje ICMP enviado a un host determinado con expectativas de recibir de él una respuesta Ping. Las variables propias de la carga ICMP en petición son:[11]

  • Tipo de mensaje, definido obligatoriamente como 8.[13]
  • Código ICMP, definido obligatoriamente como 0.[14]
  • Identificador
  • Secuencia numérica
  • Datos: Variables y opcionales

El identificador y la secuencia numérica pueden coincidir en la respuesta. Los datos de la petición deben obligatoriamente coincidir con los de la respuesta.

Variables ICMP en respuesta

editar

Una respuesta (echo reply) no es más que un mensaje ICMP enviado a un host determinado como respuesta a una petición PING.Las variables propias de la carga ICMP en respuesta son:[11]

  • Tipo de mensaje, definido obligatoriamente como 0.[15]
  • Código ICMP, definido obligatoriamente como 0.[14]
  • Identificador
  • Secuencia numérica
  • Datos: Variables y opcionales

El identificador y la secuencia numérica pueden coincidir con la del pedido. Los datos de la petición deben obligatoriamente coincidir con los del pedido.

Su uso en consolas de comandos

editar

Todos los sistemas operativos y plataformas incorporan la posibilidad de ejecutar esta utilidad mediante la utilización de comandos. Aquí se muestra una lista de ellos.

Sistemas Windows

editar

Parámetros

editar

Aplicable todo o en parte en Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 y derivados. Archivo ping.exe en la carpeta del sistema system32, invocable desde el símbolo del sistema mediante el comando ping, con los siguientes parámetros:

  • /t:Hace el ping al host hasta que se detiene.[16]
  • /a:: Resuelve la dirección como nombre de host.[17]
  • /l: Especifica el tamaño del paquete ICMP en bytes, con un máximo de 65527 bytes.[18]
  • /f: Especifica que los paquetes ICMP no deben fragmentarse.[19]
  • /i: Especifica el TTL (tiempo de vida) de los paquetes enviados ICMP, con un valor estándar en equipos con Windows XP (host), esto es típicamente de 128 y un máximo de 255.[20]

Sintaxis

editar
 
Ventana del símbolo del sistema ejecutando Ping.

La sintaxis utilizada para el comando Ping es la misma que para el resto de comandos en Windows.
ping <ip> /parámetro valor /parametro2 valor ...
Donde ip es una variable obligatoria y que es sustituida por la dirección IP o la dirección DNS del host.

Petición a un dominio
editar

ping nombredeldominio.tld /l 64 /i 250
En el ejemplo anterior se observa la utilización de una dirección DNS o nombre de dominio en lugar de una dirección IP. Se añaden los parámetros l e i, que determinan el tamaño del paquete a 64 bytes y el Tiempo de vida (TTL) a 250 milisegundos.

Petición a una dirección IP
editar

ping 192.168.0.1 /i 147 /a
En el ejemplo anterior se utiliza una dirección IP local. Se especifica el Tiempo de vida (TTL) a 147 milisegundos y se exige que se resuelva como nombre de host.

Sistemas GNU/Linux

editar

Parámetros

editar

Aplicable a todas las distribuciones Linux (Debian, Knoppix, Red Hat Linux y derivadas).

  • "-i:" Espera x segundos entre el envío de cada paquete ICMP. El tiempo estándar es 1 segundo. También sirve para, en el caso de que el host origen tenga más de una interfaz, identificar por qué interfaz se realizará el ping.
  • "-c número:" Especifica el número de pings a hacer, por defecto es infinito, o hasta que se detenga al programa, Esta opción permite una vez que se haya pasado el número de pings especificados, se detenga.
  • "-s:" Especifica el tamaño de la porción de datos del paquete ICMP. El tamaño estándar es 56 bytes de datos (+ 20 bytes fijos de la cabecera IP + 8 bytes de la cabecera ICMP, en total 84 bytes).
  • "-l preload:" Especifica que los paquetes ICMP deben ser enviados lo más rápido posible.[21]
  • "-t:" Especifica el tiempo de vida (TTL) de los paquetes a enviar. El tiempo de vida estándar variará según la versión de sistema operativo, siendo el máximo en todos los casos de 255.[22]
  • "-n:" Especifica que no habrá salida a nombre de host DNS, solo numérica (dirección IP).[23]

Sintaxis

editar

La sintaxis utilizada para el comando Ping es la misma que para el resto de comandos en Linux.
ping <ip> -parámetro valor -parametro2 valor ...
Donde ip es una variable obligatoria y que es sustituida por la dirección IP o la dirección DNS del host.

Petición a un dominio
editar

ping nombredeldominio.tld -i 200 -t 15
En el ejemplo anterior se observa la utilización de una dirección DNS o nombre de dominio en lugar de una dirección IP. Se añaden los parámetros i y t, que determinan el tiempo de espera para el envío de cada paquete (200 segundos) y el tiempo de vida (TTL) del mismo (15 equipos).

Petición a una dirección IP
editar

ping 192.168.0.1 -l preload
En el ejemplo anterior se utiliza una dirección IP local. Se exige que los paquetes se envíen lo más rápido posible.

Verificación del funcionamiento de una red

editar

El comando ping, a pesar de su sencillez, es una eficaz ayuda para la verificación de redes durante su configuración y para la detección de fallos en la misma.
Asumamos como ejemplo que hemos configurado una red con una dirección IP privada 192.168.1.0
La misma está conectada a Internet a través de una puerta de enlace con dirección IP 192.168.1.1
La verificación la haremos desde una PC a la cual le asignamos manualmente la dirección IP 192.168.1.100, estando conectada en el mismo tramo físico otra PC con la dirección IP 192.168.1.101.

Verificación de los protocolos TCP/IP

editar

La ejecución de ping localhost (o ping 127.0.0.1) permite verificar si el conjunto de protocolos TCP/IP está correctamente instalado y en funcionamiento. Es enviado y respondido internamente por el propio equipo.

Verificación del adaptador de red

editar

Si ejecutamos ping 192.168.1.100 (IP del propio equipo), el comando es enviado a la red y recibido por el propio equipo, el cual envía la respuesta a la red y la recoge de ella[cita requerida]. Esto permite verificar si la tarjeta de red está funcionando adecuadamente.

Verificación de la red local

editar

Si ejecutamos ping 192.168.1.101 (IP de un equipo próximo) podremos verificar si el cableado del equipo hacia la red (o si el adaptador inalámbrico) funciona correctamente. Si ejecutamos ping 192.168.1.1 (IP de la puerta de enlace) podremos verificar si el cableado general de la red funciona correctamente.

Verificación de la conexión a Internet

editar

Si ejecutamos ping 208.80.154.224 (IP de Wikipedia) podremos verificar si la conexión a Internet está funcionando.

Verificación de los servidores DNS

editar

Siempre que no se haya modificado el fichero de hosts del equipo si ejecutamos ping es.wikipedia.org (o cualquier otra URL conocida) podremos verificar si están correctamente configuradas las IP de los servidores DNS.

El comando ping no es la mejor manera de comprobar si los servidores DNS están bien configurados.

Estas sencillas acciones permiten la detección específica de errores en muy poco tiempo, contrariamente al método intuitivo de probemos a ver qué pasa.

Véase también

editar

Referencias

editar
  1. Cano, Laura (31 de diciembre de 2018). «Commandes réseau sous Windows et Linux» (html). Pandora FMS (en francés). Archivado desde el original el 18 de mayo de 2019. Consultado el 18 de mayo de 2019. «Ping date des années 1970 et elle est connue pour être une des plus élémentaires commandes réseau. Cependant, elle n’est pas aussi simple que vous pouvez y croire et elle a beaucoup plus d’utilisations que ceux qu’on connait déjà.» 
  2. Kozierok, Charles M. (9 de noviembre de 2004). «TCP/IP Communication Verification Utility (ping/ping6)» (html). The TCP/IP Guide (en inglés). Archivado desde el original el 9 de noviembre de 2004. Consultado el 17 de mayo de 2019. «As explained in the topic discussing these message types, they are designed specifically for these sorts of diagnostic purposes.» 
  3. Kozierok, Charles M. (9 de noviembre de 2004). «TCP/IP Communication Verification Utility (ping/ping6)» (html). The TCP/IP Guide (en inglés). Archivado desde el original el 9 de noviembre de 2004. Consultado el 17 de mayo de 2019. «When Device A sends an ICMP Echo message to device B, device B responds by sending an ICMP Echo Reply message back to device A. The same functionality exists in ICMPv6, the IPv6 version of ICMP; the ICMPv6 Echo and Echo Reply messages only differ from the IPv4 ones slightly in their field structure.» 
  4. Kozierok, Charles M. (9 de noviembre de 2004). «TCP/IP Communication Verification Utility (ping/ping6)» (html). The TCP/IP Guide (en inglés). Archivado desde el original el 9 de noviembre de 2004. Consultado el 17 de mayo de 2019. «This would seem to indicate that ping would be an extremely simple utility that would send one Echo message and wait to see if an Echo Reply was received back; if so, then this would provide that the two devices were able to communicate, and if not, this would indicate a problem somewhere on the internetwork between the two. However, almost all ping implementations are much more complex than this.» 
  5. «Packet Internet Groper». 
  6. Michael John Muuss (Mike Muuss). «The Story of the PING Program». United States Army Research Laboratory. Archivado desde el original el 8 de septiembre de 2010. Consultado el 21 de marzo de 2012. «From my point of view PING is not an acronym standing for Packet InterNet Grouper, it's a sonar analogy.» 
  7. «Communication Verification Utility». «and is present in just about every TCP/IP implementation.» 
  8. RFC 792
  9. «INTERNET CONTROL MESSAGE PROTOCOL - DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION». «Type of Service - 0 and Protocol - 1 (ICMP).» 
  10. «INTERNET CONTROL MESSAGE PROTOCOL - Source Quench Message». 
  11. a b c «ICMPv4 Echo and Echo Reply Message Format». 
  12. Postel, Jon; Johnson, David; Markson, Tom; Simpson, Bill; Su, zaw-Sing (15 de junio de 2018). «https://www.iana.org/assignments/icmp-parameters/icmp-parameters.txt» (txt). IANA (en inglés). Archivado desde el original el 27 de junio de 2019. Consultado el 27 de junio de 2019. 
  13. «ICMPv4 Echo (Request) and Echo Reply Messages». «For Echo messages the value is 8». 
  14. a b «ICMPv4 Echo (Request) and Echo Reply Messages». Archivado desde el original el 28 de septiembre de 2004. Consultado el 22 de septiembre de 2018. «for Echo and Echo Reply messages; set to 0.» 
  15. «ICMPv4 Echo (Request) and Echo Reply Messages». «for Echo Reply messages the value is 0.» 
  16. «Ping». «Specifies that reverse name resolution is performed on the destination IP address.» 
  17. «Ping». «Specifies that ping continue sending Echo Request messages to the destination until interrupted.» 
  18. «Ping». «Specifies the length, in bytes, of the Data field in the Echo Request messages sent.» 
  19. «Ping». «Specifies that Echo Request messages are sent with the Don't Fragment flag in the IP header set to 1.» 
  20. «Ping». «Specifies the value of the TTL field in the IP header for Echo Request messages sent. The default is the default TTL value for the host. For Windows XP hosts, this is typically 128. The maximum TTL is 255.» 
  21. «Comando Ping». Archivado desde el original el 20 de mayo de 2012. Consultado el 8 de septiembre de 2010. «Si se especifica preload, ping envía tantos paquetes tan rápido como le sea posible antes de volver a su comportamiento normal.» 
  22. «Default Time To Live (TTL) values» (en inglés). Consultado el 8 de septiembre de 2010. 
  23. «ping(8) - Linux man page» (en inglés). Consultado el 8 de septiembre de 2010.