NAME¶
ping —
envía paquetes ICMP
ECHO_REQUEST a servidores de red
SINOPSIS¶
ping [
-dfnqrvR]
[
-c count]
[
-i wait]
[
-l preload]
[
-p pattern]
[
-s
packetsize]
DESCRIPCIÓN¶
Ping utiliza el datagrama obligatorio ICMP del protocolo
ECHO_REQUEST para solicitar una ICMP ECHO_RESPONSE por parte de un servidor o
una puerta de acceso. Los datagramas ECHO_REQUEST ("pings") tienen
una IP y cabecera ICMP, seguidos por un “struct timeval” y un
número arbitrario de bytes "pad" usados para completar el
paquete. Las opciones son las siguientes:
- -c
count
- Para después de enviar (y recibir)
count paquetes ECHO_RESPONSE.
- -d
- Establece la opción
SO_DEBUG
en el socket en uso.
- -f
- Envío masivo de pings. Envía paquetes a la misma
velocidad a la que regresan o cien veces por segundo, lo que sea mayor.
Por cada ECHO_REQUEST enviado se escribe un ".", mientras que
por cada ECHO_REPLY recibido se escribe un backspace. Esto proporciona una
muestra rápida de cuántos paquetes se están perdiendo.
Sólo el super-usuario puede utilizar esta opción.
Esto puede
resultar muy peligroso en una red y debe usarse con precaución.
- -i
wait
- Espera wait segundos
entre el envío de cada paquete. Por defecto se
espera un segundo entre el envío de los paquetes. Esta opción es
incompatible con la opción -f.
- -l
preload
- Si se especifica preload,
ping envía tantos paquetes tan rápido como le
sea posible antes de volver a su comportamiento normal. Sólo el
super-usuario puede usar esta opción.
- -n
- Sólo salida numérica. No se realiza ningún
intento de buscar nombres simbólicos para las direcciones del
servidor.
- -p
pattern
- Se pueden especificar un total de 16 bytes "pad"
para completar el paquete que se envía. Esto resulta útil para
el diagnóstico de problemas de red relaccionados con los datos. Por
ejemplo, “
-p ff
” hará que el
paquete enviado se complete en su totalidad con unos.
- -q
- Salida muda. No se muestra ninguna información excepto
las líneas de resumen al comenzar y al terminar.
- -R
- Registro de ruta. Incluye la opción RECORD_ROUTE en el
paquete ECHO_REQUEST y muestra el buffer de ruta sobre los paquetes
devueltos. Nótese que la cabecera IP tan sólo tiene tamaño
suficiente para nueve rutas de este tipo. Muchos servidores ignoran y
descartan esta opción.
- -r
- Pasa por alto las tablas de encaminamiento y envía
datos directamente a un ordenador en una red conectada a la propia. Si el
ordenador receptor no está en una red con conexión directa, se
devuelve un error. Esta opción se puede usar para hacer ping a un
ordenador local a través de un interfaz que carezca de una ruta que
pase por él (por ejemplo, después de que el interfaz haya sido
anulado por routed(8).)
- -s
packetsize
- Especifica el número de bytes de datos que se van a
enviar. La cantidad por defecto es 56, que pasan a ser 64 bytes de datos
ICMP cuando se combinan con los 8 bytes de los datos de la cabecera
ICMP.
- -v
- Aumenta la longitud de la información del programa en
pantalla. Se listan los paquetes ICMP que no sean ECHO_RESPONSE que se
reciben.
Al usar
ping para la detección de errores, debe de
probarse primero en el ordenador local, para verificar que el interfaz de red
local funciona correctamente. Luego, deben probarse otros ordenadores y
puertas de acceso cada vez más lejos. Al hacerlo, se computan tanto el
tiempo invertido por los paquetes en su viaje de ida y vuelta como las
estadísticas de pérdida de paquetes. Si se reciben paquetes
duplicados, no se incluyen en la estadística de pérdida de paquetes,
aunque el tiempo invertido en su viaje de ida y vuelta se usa para calcular
las cantidades de tiempo de viaje mínimas, medias y máximas. Una vez
que se ha enviado (y recibido) la cantidad de paquetes especificada o si el
programa se cierra con un
SIGNIT,
se muestra un
pequeño resumen en pantalla.
Si
ping no recibe ningún paquete de respuesta en
absoluto, se cerrará con un código 1. Si ocurre un error,
mostrará el código 2. En cualquier otro caso, el programa
terminará con un código 0. Esto hace posible utilizar los
códigos de terminación del programa para comprobar si el ordenador
al que se dirige el ping da señales de vida o no.
La finalidad de este programa es el de ser utilizado en la comprobación,
medición y mantenimiento de redes. Debido a la sobrecarga de la red que
supone su uso, no resulta muy adecuado usar
ping durante las
operaciones normales o en scripts automáticos.
DETALLES DE LOS PAQUETES
ICMP¶
Una cabecera IP sin opciones tiene un tamaño de 20 bytes. Un paquete ICMP
ECHO_REQUEST contiene una cantidad adicional de 8 bytes de cabecera ICMP
seguida por una cantidad arbitraria de datos. Cuando se especifica un
packetsize, éste indica el tamaño de esta
porción extra de datos (por defecto es 56). Por lo tanto, la cantidad de
datos recibidos dentro de un paquete IP del tipo ICMP ECHO_REPLY será
siempre 8 bytes mayor que el espacio de datos requerido (la cabecera ICMP).
Si el espacio de datos tiene un tamaño de al menos 8 bytes,
ping usa los primeros 8 bytes de este espacio para incluir
un registro de tiempo que utiliza en el cómputo de los tiempos de los
viajes de ida y vuelta de los paquetes. Si se especifican menos de 8 bytes, el
programa no proporcionará estos tiempos.
PAQUETES DUPLICADOS Y
DAÑADOS¶
Ping informará de los paquetes duplicados y dañados.
Nunca debe de aparecer ningún paquete duplicado. Éstos parecen
ocurrir por retrasmisiones inapropiadas a nivel de conexión. Los paquetes
duplicados pueden aparecer en muchas situaciones y rara vez (por no decir
nunca) son buena señal, aunque la aparición de niveles bajos de
duplicados no ha de ser siempre una señal de alarma.
Los paquetes dañados constituyen obviamente una causa seria de alarma y
normalmente indican que en alguna lugar del camino seguido por el paquete
ping (en la red o en los ordenadores) hay hardware
dañado.
INTENTAR DIFERENTES
PATRONES DE DATOS¶
La red no debería tratar a los paquetes de manera diferente en función
de los datos contenidos en la porción de datos. Por desgracia, se sabe
que ha habido problemas relaccionados con los datos en algunas redes, que han
permanecido ocultos durante largos períodos de tiempo. En muchas
ocasiones, el patrón problemático será aquel que no tiene
suficientes "transiciones", tales como todo unos o todo ceros. No es
necesario especificar un patrón de datos con todo ceros (por ejemplo) en
la línea de comandos porque el patrón que interesa está al
nivel de la unión de los datos, y la relación entre lo que tú
escribes y lo que transmiten los controladores puede ser complicada.
Esto quiere decir que si tienes un problema relacionado con datos probablemente
tendrás que hacer muchas pruebas para detectarlo. Si tienes suerte, es
posible que consigas encontrar un archivo que, o bien no se puede transmitir
por tu red, o que tarda mucho más en enviarse que otros archivos de
tamaño similar. En ese caso, puedes examinar este archivo en busca de
patrones repetidos que puedes comprobar usando la opción
-p de
ping.
DETALLES DEL TTL¶
El valor TTL de un paquete IP representa el número máximo de routers
IP que un paquete puede atravesar antes de ser deshechado. En el trabajo
diario, lo normal es que cada router en internet reste exactamente uno del
campo TTL
La especificación TCP/IP dice que el valor del campo TTL para los paquetes
TCP debe ser de 60, pero muchos sistemas usan valores más pequeños
(4.3 BSD usa 30, el 4.2 usaba 15).
El valor máximo posible para este campo es de 255, y la mayoría de los
sistemas Unix configuran el campo TTL de los paquetes ICMP ECHO_REQUEST para
un valor de 255. Por eso notarás que puedes hacer "ping" a
algunos ordenadores, aunque no puedas alcanzarlos con
telnet(1) o
ftp(1).
En una operación normal, ping muestra el valor ttl de los paquetes que
recibe. Cuando un sistema remoto recibe un paquete ping, puede hacer
cualquiera de estas tres cosas con el campo TTL en su respuesta:
- No cambiarlo; esto es lo que hacían los sistemas
Unix de Berkeley antes de la aparición del
4.3BSD-Tahoe En este caso, el valor TTL del
paquete recibido será de 255 menos el número de routers en el
camino desde el sistema remoto al
ordenador que envía el ping.
- Cambiarlo por cualquier otro valor. Algunas
máquinas usan el mismo valor para los paquetes ICMP que el que usan
para los paquetes TCP, por ejemplo 30 ó 60. Otros puede que usen
valores totalmente inesperados.
FALLOS (BUGS)¶
Muchos ordenadores y puertas de acceso ignoran la opción RECORD_ROUTE.
La longitud máxima de la cabecera IP resulta demasiado pequeña para
opciones como RECORD_ROUTE puedan resultar completamente útiles. Sin
embargo, no hay mucho que se pueda hacer sobre esto.
El ping masivo no se recomienda generalmente y sólo se debería hacer
este tipo de ping a una dirección en condiciones muy controladas.
VÉASE TAMBIÉN¶
netstat(1),
ifconfig(8),
routed(8)
HISTORIA¶
El comando
ping apareció en
4.3BSD.