Es una tarea común verificar la 'calidad' de la red: latencia, número de paquetes descartados, etc. Pero 'ping' tiene una serie de inconvenientes: - Utiliza ICMP. Muchos ISP tienen diferentes modeladores para el tráfico ICMP y TCP, por lo que 'ping' mostrará una latencia de 10 ms, pero las conexiones TCP experimentarán más de 1000 ms. - Envía una cantidad muy pequeña de paquetes. Por defecto, un paquete por segundo. Dado que el protocolo TCP tolera la pérdida de paquetes (puede funcionar muy bien si la mitad de los paquetes se pierden, es normal), no está absolutamente claro si la conexión de "30% de pérdida de paquetes" de ping o si es absolutamente normal.
Entonces, ¿hay alguna alternativa para hacer ping que use la conexión TCP en lugar de ICMP y verifique la calidad de la conexión a Internet?
fuente
Respuestas:
Independientemente del hecho de que TCP puede tolerar problemas de pérdida de paquetes / orden de paquetes, una pérdida de ping del 30% sigue siendo bastante significativa si la "población" es lo suficientemente grande, es decir, más de 100 pings.
Pero para responder la pregunta, puede mirar nmap. Estoy seguro de que los ejemplos se inundarán en breve :)
Sin embargo, lo más importante es que no desea solo un tiempo de ida y vuelta, realmente desea ver el rendimiento de su máquina al servidor y viceversa en cada (posible) salto.
Puede hacer esto con
traceroute
, sin embargo, la versión más común de esto se hace usando ICMP o UDP, pero busquetcp traceroute
, y comience allí.Aquí hay algunas herramientas divertidas para probar mientras lo hace ...
Aquí hay un ejemplo con
lft
...fuente
Netcat Power Tools describe cómo hacer TCP Ping con netcat. Específicamente, cada paquete ACK no solicitado debe devolver RST.
fuente
Personalmente soy un gran admirador de mtr ( http://www.bitwizard.nl/mtr/ ), mtr es un clon de traceroute basado en ncurses que puede funcionar usando icmp y udp. Le muestra los puntos débiles en su enlace a un determinado host y de esa manera no es intrusivo.
Cuando realmente se trata de algunas pruebas de carga, iría con iperf (que es cliente / servidor).
fuente
Para Windows puede usar algo como tcping:
http://www.elifulkerson.com/projects/tcping.php
Y para Linux está, ya se ha mencionado la mejor utilidad,
hping
.fuente
Los paquetes ICMP generalmente se entregan más lentamente (si es que hay alguna diferencia), porque la mayoría de las redes los priorizan, especialmente los paquetes ping. En general, si observa resultados tan divergentes de las respuestas ICMP y TCP, el problema es un servidor sobrecargado o una configuración TCP específica en un firewall en el camino.
Debe investigar
traceroute -P tcp
,tcptraceroute
,lft
y, por supuestotelnet
.fuente
mtr
en varias ubicaciones en la red y notará que muchas redes tienen problemas para entregar paquetes ICMP en varios puntos.Podría usar alguna aplicación de QoS para medir este tipo de parámetros de red. Por ejemplo:
NetPerf (www.netperf.org/netperf/): Netperf es un punto de referencia que se puede utilizar para medir el rendimiento de muchos tipos diferentes de redes. Proporciona pruebas para el rendimiento unidirecitonal y la latencia de extremo a extremo. Los entornos actualmente medibles por netperf incluyen:
O
IPerf (sourceforge.net/projects/iperf) Iperf fue desarrollado por NLANR / DAST como una alternativa moderna para medir el rendimiento máximo de ancho de banda TCP y UDP. Iperf permite el ajuste de varios parámetros y características UDP. Iperf informa de ancho de banda, jitter de retraso, pérdida de datagramas.
fuente
echa un vistazo a hping y luego echa un vistazo a bing
fuente
TCP no puede "tolerar" la pérdida de paquetes del 50%. Simplemente se detendrá, por una simple razón: adapta su velocidad de transmisión en función de la pérdida de paquetes. Cuando se pierden paquetes, se entiende que indican congestión. Si descarta el 50% de los paquetes (por ejemplo, con una regla de firewall de eliminación aleatoria ) independientemente del tráfico, verá una disponibilidad de ancho de banda cada vez menor.
Además, dudo que los ISP formen ICMP vs TCP. Algunos podrían hacerlo, ya que hay algunas personas realmente estúpidas, pero no tiene mucho sentido hacerlo. La mayoría dará forma a toda la conexión, o se "formará a sí misma" debido a la congestión. En cualquier caso, los paquetes generalmente se descartan al azar.
Dicho esto, puede hacer ping con TCP, pero hay varias advertencias. El primero es enviar el paquete inicial en una conexión TCP, lo que generará una respuesta de un servidor con un puerto abierto, pero se verá como un intento de conexión. Idealmente, podría usar el servicio "echo" (puerto TCP 7) ... pero en realidad no puede porque ahora está deshabilitado por defecto en todas partes. De todos modos, si puede hacer que alguien lo habilite para usted en la máquina que desea probar, un programa podría usarlo para verificar el tiempo de respuesta para los paquetes dentro de una conexión TCP.
Dicho esto, probablemente tengas el comando "tracepath" instalado en tu máquina; es similar a traceroute pero no usa TCP o ICMP, sino UDP. Para TCP hay varias utilidades disponibles, puede intentar hping .
fuente
La alternativa al ping, puede usar 'netstat'
Opciones: 1.netstat -antp 2.netstat -anup
-a = todos, -n = Dirección y número de puerto del extremo local del socket, -t = tcp, -p = programa
-u = udp.
fuente