Обычной задачей является проверка «качества» сети - задержки, количества сброшенных пакетов и т. Д. Но у «ping» есть ряд недостатков: - Он использует ICMP. Многие провайдеры имеют разные формирователи для трафика ICMP и TCP, поэтому «ping» будет показывать задержку 10 мс, но TCP-соединения будут иметь скорость более 1000 мс. - Он отправляет очень небольшое количество пакетов. По умолчанию один пакет каждую секунду. Так как протокол TCP допускает потерю пакетов (он может работать очень хорошо, если половина пакетов потеряна - это нормально), абсолютно неясно, уничтожает ли соединение ping «30% потери пакетов» или это абсолютно нормально.
Итак, есть ли альтернатива для ping, который использует TCP-соединение вместо ICMP и проверяет качество интернет-соединения?
источник
Ответы:
Независимо от того, что TCP может терпеть проблемы потери пакетов / упорядочения пакетов, потеря пинга в 30% все еще весьма значительна, если «популяция» достаточно велика, т. Е. Больше, чем, скажем, 100 пингов.
Но чтобы ответить на вопрос, вы можете взглянуть на nmap. Я уверен, что скоро появятся примеры :)
Что еще более важно, вы не хотите просто время в оба конца, вы действительно хотите видеть производительность от вашей машины до сервера и обратно при каждом (возможном) прыжке.
Вы можете сделать это с
traceroute
- однако наиболее часто встречающаяся версия этого делается с использованием ICMP или UDP, но ищитеtcp traceroute
- и начинайте там.Вот несколько забавных инструментов, которые вы можете попробовать, пока вы на нем ...
Вот пример с
lft
...источник
Netcat Power Tools описывает, как сделать TCP Ping с Netcat . В частности, каждый незапрошенный пакет ACK должен возвращать RST.
источник
Лично я большой поклонник mtr ( http://www.bitwizard.nl/mtr/ ), mtr - это клон traceroute на основе ncurses, который может работать с использованием как icmp, так и udp. Он показывает слабые места в вашей ссылке на определенный хост и, таким образом, не навязчив.
Когда дело доходит до некоторых нагрузочных тестов, я бы использовал iperf (клиент / сервер).
источник
Для Windows вы можете использовать что-то вроде tcping:
http://www.elifulkerson.com/projects/tcping.php
А для Linux лучшая утилита, уже упоминалось,
hping
.источник
ICMP-пакеты обычно доставляются медленнее (если вообще есть разница), потому что большинство сетей их удаляют, особенно пинг-пакеты. Как правило, если вы видите такие разные результаты в ответах ICMP и TCP, проблема заключается либо в перегруженном сервере, либо в специфическом формировании TCP на брандмауэре.
Вы должны исследовать
traceroute -P tcp
,tcptraceroute
,lft
и, конечно жеtelnet
.источник
mtr
в разных точках сети, и вы заметите, что в разных сетях часто возникают проблемы с доставкой ICMP-пакетов в разные точки.Вы можете использовать какое-либо приложение QoS для измерения таких параметров сети. Например:
NetPerf (www.netperf.org/netperf/): Netperf является эталоном, который можно использовать для измерения производительности многих различных типов сетей. Он предоставляет тесты как для однонаправленной пропускной способности, так и для сквозной задержки. Среды, в настоящее время измеряемые Netperf, включают в себя:
ИЛИ
IPerf (sourceforge.net/projects/iperf) Iperf был разработан NLANR / DAST как современная альтернатива для измерения максимальной производительности полосы пропускания TCP и UDP. Iperf позволяет настраивать различные параметры и характеристики UDP. Iperf сообщает о пропускной способности, дрожании задержки, потере дейтаграмм.
источник
проверить hping, а затем взглянуть на Bing
источник
TCP не может "терпеть" потерю 50% пакетов. Он просто остановится по простой причине: он адаптирует свою скорость передачи в зависимости от потери пакетов. Когда пакеты потеряны, они, как понимают, указывают на перегрузку. Если вы отбрасываете 50% пакетов (скажем, с помощью правила случайного отбрасывания брандмауэра) независимо от трафика, он увидит постоянно снижающуюся пропускную способность.
Кроме того, я сомневаюсь, что интернет-провайдеры формируют ICMP против TCP. Кто-то может это сделать, поскольку есть действительно глупые люди, но это не имеет особого смысла. Большинство из них будет формировать целое соединение, или оно будет «формировать себя» из-за скопления. В любом случае пакеты обычно отбрасываются случайным образом.
Тем не менее, вы можете пропинговать с TCP, но есть несколько предостережений. Во-первых, просто отправьте исходный пакет по TCP-соединению, что вызовет ответ от сервера с открытым портом, но будет рассматриваться как попытка подключения. В идеале вы можете использовать службу "эхо" (TCP-порт 7) ... но на самом деле вы не можете, потому что теперь она везде отключена по умолчанию. В любом случае, если вы можете заставить кого-то включить его для вас на машине, которую вы хотите протестировать, программа может использовать это для проверки времени округления пакетов внутри TCP-соединения.
При этом, возможно, на вашем компьютере установлена команда «tracepath»; он похож на traceroute, но использует не TCP или ICMP, а UDP. Для TCP существуют различные утилиты, вы можете попробовать hping .
источник
В качестве альтернативы ping вы можете использовать 'netstat'
Опции: 1.netstat -antp 2.netstat -anup
-a = все, -n = адрес и номер порта локального конца сокета, -t = tcp, -p = программа
-u = выр.
источник