Ping es una utilidad de software de administración de redes informáticas que se utiliza para probar la accesibilidad de un host en una red de Protocolo de Internet (IP). Está disponible para prácticamente todos los sistemas operativos que tienen capacidad de red, incluida la mayoría del software de administración de red integrado.
Autor (es) original (es) | Mike Muuss |
---|---|
Desarrollador (es) | Varios desarrolladores comerciales y de código abierto |
Versión inicial | 1983 |
Plataforma | Multiplataforma |
Tipo | Mando |
Licencia | Dominio público , BSD , GPL , MIT |
Ping mide el tiempo de ida y vuelta para los mensajes enviados desde el host de origen a una computadora de destino que se repiten en la fuente. El nombre proviene de la terminología de sonar activo que envía un pulso de sonido y escucha el eco para detectar objetos bajo el agua. [1]
Ping funciona enviando paquetes de solicitud de eco del Protocolo de mensajes de control de Internet (ICMP) al host de destino y esperando una respuesta de eco ICMP. El programa informa errores, pérdida de paquetes y un resumen estadístico de los resultados, que generalmente incluye el mínimo, el máximo, los tiempos medios de ida y vuelta y la desviación estándar de la media.
Las opciones de la línea de comandos de la utilidad ping y su salida varían entre las numerosas implementaciones. Las opciones pueden incluir el tamaño de la carga útil, el recuento de pruebas, los límites para el número de saltos de red ( TTL ) que atraviesan las sondas, el intervalo entre las solicitudes y el tiempo de espera para una respuesta. Muchos sistemas proporcionan una utilidad complementaria ping6, para realizar pruebas en redes de Protocolo de Internet versión 6 (IPv6), que implementan ICMPv6 .
Historia
La utilidad ping fue escrita por Mike Muuss en diciembre de 1983 durante su empleo en el Laboratorio de Investigación Balística , ahora el Laboratorio de Investigación del Ejército de EE. UU . Un comentario de David Mills sobre el uso de paquetes de eco ICMP para el diagnóstico y las mediciones de redes IP impulsó a Muuss a crear la utilidad para solucionar problemas de red. [1] El autor lo nombró por el sonido que hace el sonar , ya que su metodología es análoga a la ubicación del eco del sonar. [1] [2] El backronym Packet InterNet Groper para PING se ha utilizado durante más de 30 años, y aunque Muuss dice que, desde su punto de vista, PING no fue pensado como un acrónimo, ha reconocido la expansión del nombre de Mills. [1] [3] La primera versión publicada fue un software de dominio público ; todas las versiones posteriores se han licenciado bajo la licencia BSD . Ping se incluyó por primera vez en 4.3BSD . [4] La versión FreeDOS fue desarrollada por Erick Engelke y tiene licencia GPL . [5] Tim Crawford desarrolló la versión ReactOS . Tiene licencia de MIT License . [6]
RFC 1122 prescribe que cualquier host debe procesar las solicitudes de eco ICMP y emitir respuestas de eco a cambio. [7]
Ejemplo de invocación
El siguiente es el resultado de ejecutar ping en Linux para enviar cinco sondas (intervalo de 1 segundo de forma predeterminada, configurable mediante la opción -i) al host de destino www.example.com :
$ ping -c 5 www.example.com PING www.example.com (93.184.216.34): 56 bytes de datos 64 bytes de 93.184.216.34: icmp_seq = 0 ttl = 56 tiempo = 11.632 ms 64 bytes de 93.184.216.34: icmp_seq = 1 ttl = 56 tiempo = 11.726 ms 64 bytes de 93.184.216.34: icmp_seq = 2 ttl = 56 tiempo = 10.683 ms 64 bytes de 93.184.216.34: icmp_seq = 3 ttl = 56 tiempo = 9.674 ms 64 bytes de 93.184.216.34: icmp_seq = 4 ttl = 56 tiempo = 11,127 ms--- www.example.com estadísticas de ping --- 5 paquetes transmitidos, 5 paquetes recibidos, 0.0% de pérdida de paquetes ida y vuelta min / avg / max / stddev = 9.674 / 10.968 / 11.726 / 0.748 ms
La salida enumera cada mensaje de la sonda y los resultados obtenidos. Finalmente, enumera las estadísticas de toda la prueba. En este ejemplo, el tiempo de ida y vuelta más corto fue de 9,674 ms, el promedio fue de 10,968 ms y el valor máximo fue de 11,726 ms. La medición tuvo una desviación estándar de 0,748 ms.
Indicaciones de error
En los casos en que el host de destino no responde, la mayoría de las implementaciones no muestran nada o imprimen periódicamente notificaciones sobre el tiempo de espera. Los posibles resultados de ping que indican un problema son los siguientes:
- H! N o ! P - host, red o protocolo inalcanzable
- S - la ruta de origen falló
- F - fragmentación necesaria
- U o ! W - red de destino / host desconocido
- I - el host de origen está aislado
- A - comunicación con la red de destino prohibida administrativamente
- Z : comunicación con el host de destino administrativamente prohibida
- P : para este ToS, la red de destino es inalcanzable
- T : para este ToS, el host de destino es inalcanzable
- X - comunicación prohibida administrativamente
- V - violación de la precedencia del host
- C - corte de precedencia en efecto
En caso de error, el host de destino o un enrutador intermedio devuelve un mensaje de error ICMP, por ejemplo, "host inaccesible" o "TTL excedido en tránsito". Además, estos mensajes incluyen los primeros ocho bytes del mensaje original (en este caso, el encabezado de la solicitud de eco ICMP, incluido el valor de extinción), por lo que la utilidad de ping puede hacer coincidir las respuestas con las consultas de origen. [8]
Formato de mensaje
Paquete ICMP
Bits 0–7 | Bits 8-15 | Bits 16-23 | Bits 24–31 | |
---|---|---|---|---|
Encabezado (20 bytes) | Versión / DIH | Tipo de servicio (ToS) | Largo | |
Identificación | banderas y desplazamiento | |||
Tiempo de vida (TTL) | Protocolo | Suma de comprobación del encabezado | ||
Dirección IP origen | ||||
Dirección IP de destino | ||||
Encabezado ICMP (8 bytes) | Tipo de mensaje | Código | Suma de comprobación | |
Datos de encabezado | ||||
Carga útil ICMP ( opcional ) | Datos de carga útil |
Bits 0-3 | Bits 4 a 7 | Bits 8-11 | Bits 12-15 | Bits 16-23 | Bits 24–31 | |
---|---|---|---|---|---|---|
Encabezado (40 bytes) | Versión | Clase de trafico | Etiqueta de flujo | |||
Longitud de la carga útil | Siguiente encabezado | Límite de salto | ||||
Dirección de la fuente | ||||||
Dirección de destino | ||||||
Encabezado ICMP6 (8 bytes) | Tipo de mensaje | Código | Suma de comprobación | |||
Datos de encabezado | ||||||
Carga útil ICMP6 ( opcional ) | Datos de carga útil |
Composición genérica de un paquete ICMP: [9]
- Encabezado IPv4 (en azul): protocolo establecido en 1 (ICMP) y Tipo de servicio establecido en 0.
- Encabezado IPv6 (en azul): Encabezado siguiente configurado en 58 (ICMP6)
- Encabezado ICMP (en rojo):
- Tipo de mensaje ICMP (8 bits)
- Código (8 bits)
- Suma de comprobación (16 bits), el complemento a uno de 16 bits de la suma del complemento a uno del paquete. Para IPv4, esto se calcula a partir del mensaje ICMP que comienza con el campo Tipo [10] (el encabezado IP no está incluido). Para IPv6, esto se calcula a partir del mensaje ICMP, precedido de un "pseudoencabezado" de IPv6. [11]
- Campo de datos de encabezado (32 bits), que en este caso (solicitud de eco ICMP y respuestas), estará compuesto por identificador (16 bits) y número de secuencia (16 bits).
- Carga útil ICMP: carga útil para los diferentes tipos de respuestas; puede ser una longitud arbitraria, dejada a los detalles de implementación. Sin embargo, el paquete que incluye encabezados IP e ICMP debe ser menor que la unidad máxima de transmisión de la red o corre el riesgo de fragmentarse .
Solicitud de eco
La solicitud de eco ("ping") es un mensaje ICMP / ICMP6 .
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | dieciséis | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo = 8 (IPv4, ICMP) 128 (IPv6, ICMP6) | Código = 0 | Suma de comprobación | |||||||||||||||||||||||||||||
Identificador | Secuencia de números | ||||||||||||||||||||||||||||||
Carga útil |
El cliente puede utilizar el identificador y el número de secuencia para hacer coincidir la respuesta con la solicitud que provocó la respuesta. En la práctica, la mayoría de los sistemas Linux utilizan un identificador único para cada proceso de ping, y el número de secuencia es un número creciente dentro de ese proceso. Windows usa un identificador fijo, que varía entre las versiones de Windows, y un número de secuencia que solo se restablece en el momento del arranque.
Respuesta de eco
La respuesta de eco es un mensaje ICMP generado en respuesta a una solicitud de eco; es obligatorio para todos los hosts y debe incluir la carga útil exacta recibida en la solicitud.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | dieciséis | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo = 0 (IPv4, ICMP) 129 (IPv6, ICMP6) | Código = 0 | Suma de comprobación | |||||||||||||||||||||||||||||
Identificador | Secuencia de números | ||||||||||||||||||||||||||||||
Carga útil |
- El cliente puede utilizar el identificador y el número de secuencia para asociar cada solicitud de eco con su respuesta.
Carga útil
La carga útil del paquete generalmente se llena con caracteres ASCII , como muestra la salida de la utilidad tcpdump en los últimos 32 bytes del siguiente ejemplo (después del encabezado ICMP de ocho bytes que comienza con 0x0800 ):
16: 24: 47.966461 IP (tos 0x0, ttl 128, id 15103, desplazamiento 0, indicadores [ninguno],proto: ICMP (1), longitud: 60) 192.168.146.22> 192.168.144.5: solicitud de eco ICMP,id 1, seq 38, longitud 40 0x0000: 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E .. <: ..... \ U .... 0x0010: c0a8 9005 0800 4d35 0001 0026 6162 6364 ...... M5 ... & abcd 0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
La carga útil puede incluir una marca de tiempo que indique el momento de la transmisión y un número de secuencia, que no se encuentran en este ejemplo. Esto permite que ping calcule el tiempo de ida y vuelta sin estado sin necesidad de registrar el tiempo de transmisión de cada paquete.
La carga útil también puede incluir un paquete mágico para el protocolo Wake-on-LAN , pero la carga útil mínima en ese caso es más larga de lo que se muestra. Por lo general, la solicitud de eco no recibe ninguna respuesta si el host estaba durmiendo en estado de hibernación, pero el host aún se despierta del estado de suspensión si su interfaz está configurada para aceptar solicitudes de activación. Si el host ya está activo y configurado para permitir respuestas a los paquetes de solicitud de eco ICMP entrantes , la respuesta devuelta debe incluir la misma carga útil. Esto se puede usar para detectar que el host remoto se despertó de manera efectiva, repitiendo una nueva solicitud después de un cierto retraso para permitir que el host reanude sus servicios de red. Si el host solo estaba durmiendo en estado activo de bajo consumo de energía, una sola solicitud despierta ese host lo suficiente para permitir que su servicio de respuesta de eco responda instantáneamente si ese servicio estaba habilitado. El host no necesita reactivar completamente todos los dispositivos y puede volver al modo de bajo consumo después de un breve retraso. Dicha configuración se puede utilizar para evitar que un host entre en estado de hibernación, con un retraso de activación mucho más prolongado, después de que haya pasado un tiempo en el modo activo de bajo consumo. [ cita requerida ]
Lagunas de seguridad
Para realizar un ataque de denegación de servicio , un atacante puede enviar solicitudes de ping lo más rápido posible, posiblemente abrumando a la víctima con solicitudes de eco ICMP. Esta técnica se llama inundación de ping .
Se pueden utilizar solicitudes de ping a varias direcciones, barridos de ping , para obtener una lista de todos los hosts de una red.
Ver también
- fping
- esperando
- Mantener viva
- nping
- ping de la muerte
- Esquema de ping-pong
- Seguridad a través de la oscuridad
- Ataque de los pitufos
- Traceroute
Referencias
- ^ a b c d Mike Muuss . "La historia del programa PING" . Laboratorio de Investigación del Ejército de EE. UU. Archivado desde el original el 25 de octubre de 2019 . Consultado el 8 de septiembre de 2010 .
Mi ímpetu original para escribir PING para 4.2a BSD UNIX provino de un comentario casual en julio de 1983 por el Dr. Dave Mills ... Lo nombré por el sonido que hace un sonar, inspirado por todo el principio de eco-localización ... Desde mi punto de vista, PING no es un acrónimo de Packet InterNet Grouper, es una analogía de sonda. Sin embargo, he escuchado de segunda mano que Dave Mills ofreció esta expansión del nombre, así que quizás ambos tengamos razón.
- ^ Salus, Peter (1994). Un cuarto de siglo de UNIX . Addison-Wesley . ISBN 978-0-201-54777-1.
- ^ Mills, DL (diciembre de 1983). Experimentos de retraso de Internet . IETF . doi : 10.17487 / RFC0889 . RFC 889 . Consultado el 26 de noviembre de 2019 .
- ^ "sección de ping de la página de manual 8" . www.manpagez.com .
- ^ "Paquete FreeDOS de ibiblio.org - ping (redes)" . www.ibiblio.org .
- ^ "GitHub - reactos / reactos: un sistema operativo gratuito compatible con Windows" . 8 de agosto de 2019 - a través de GitHub.
- ^ "RFC 1122 - Requisitos para hosts de Internet - Capas de comunicación" . pag. 42 . Consultado el 19 de marzo de 2012 .
Cada host DEBE implementar una función de servidor ICMP Echo que reciba solicitudes de eco y envíe las respuestas de eco correspondientes.
- ^ "ICMP: Protocolo de mensajes de control de Internet" . repo.hackerzvoice.net . 13 de enero de 2000. Archivado desde el original el 4 de agosto de 2016 . Consultado el 4 de diciembre de 2014 .
- ^ "RFC 792 - Protocolo de mensajes de control de Internet" . Tools.ietf.org . Consultado el 2 de febrero de 2014 .
- ^ "Página de RFC Sourcebook sobre ICMP" . Consultado el 20 de diciembre de 2010 .
- ^ "RFC 4443 - Protocolo de mensajes de control de Internet (ICMPv6) para la especificación del Protocolo de Internet versión 6 (IPv6)" . Consultado el 10 de abril de 2020 .
Otras lecturas
- Dyson, Peter (1995). Dominando OS / 2 Warp . Sybex . ISBN 978-0782116632.
- John Paul Mueller (2007). Administración de Windows en la línea de comandos para Windows Vista, Windows 2003, Windows XP y Windows 2000 . John Wiley e hijos . ISBN 978-0470165799.
- McElhearn, Kirk (2006). La línea de comandos de Mac OS X: Unix Under the Hood . John Wiley e hijos . ISBN 978-0470113851.
enlaces externos
- - Manual de referencia de comandos de administración del sistema Solaris 10
- - Manual del administrador del sistema FreeBSD
- - Manual del programador de Linux - Administración y comandos privilegiados
- ping | Documentos de Microsoft