альтернатива ping для tcp?

12

Обычной задачей является проверка «качества» сети - задержки, количества сброшенных пакетов и т. Д. Но у «ping» есть ряд недостатков: - Он использует ICMP. Многие провайдеры имеют разные формирователи для трафика ICMP и TCP, поэтому «ping» будет показывать задержку 10 мс, но TCP-соединения будут иметь скорость более 1000 мс. - Он отправляет очень небольшое количество пакетов. По умолчанию один пакет каждую секунду. Так как протокол TCP допускает потерю пакетов (он может работать очень хорошо, если половина пакетов потеряна - это нормально), абсолютно неясно, уничтожает ли соединение ping «30% потери пакетов» или это абсолютно нормально.

Итак, есть ли альтернатива для ping, который использует TCP-соединение вместо ICMP и проверяет качество интернет-соединения?

grigoryvp
источник
Потеря пинга% 30 - это смерть для любого другого соединения между этими адресами. % 10 близок к смерти. % 1, вероятно, предел, прежде чем вы начнете видеть серьезные проблемы.
Jonesome Восстановить Монику

Ответы:

14

Независимо от того, что TCP может терпеть проблемы потери пакетов / упорядочения пакетов, потеря пинга в 30% все еще весьма значительна, если «популяция» достаточно велика, т. Е. Больше, чем, скажем, 100 пингов.

Но чтобы ответить на вопрос, вы можете взглянуть на nmap. Я уверен, что скоро появятся примеры :)

Что еще более важно, вы не хотите просто время в оба конца, вы действительно хотите видеть производительность от вашей машины до сервера и обратно при каждом (возможном) прыжке.

Вы можете сделать это с traceroute- однако наиболее часто встречающаяся версия этого делается с использованием ICMP или UDP, но ищите tcp traceroute- и начинайте там.

Вот несколько забавных инструментов, которые вы можете попробовать, пока вы на нем ...

Вот пример с lft...

 % lft -S 4.2.2.2

 Hop  LFT trace to vnsc-bak.sys.gtei.net (4.2.2.2):80/tcp
  1   ln-gateway.centergate.com (206.117.161.1) 0.5ms
  2   isi-acg.ln.net (130.152.136.1) 2.3ms
  3   isi-1-lngw2-atm.ln.net (130.152.180.21) 2.5ms
  4   gigabitethernet5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249) 3.0ms
  5   p6-0.lsanca1-cr6.bbnplanet.net (4.24.4.2) 3.4ms
  6   p6-0.lsanca2-br1.bbnplanet.net (4.24.5.49) 3.3ms
  7   p15-0.snjpca1-br1.bbnplanet.net (4.24.5.58) 10.9ms
  8   so-3-0-0.mtvwca1-br1.bbnplanet.net (4.24.7.33) 11.1ms
  9   p7-0.mtvwca1-dc-dbe1.bbnplanet.net (4.24.9.166) 11.0ms
 10   vlan40.mtvwca1-dc1-dfa1-rc1.bbnplanet.net (128.11.193.67) 11.1ms
 **   [neglected] no reply packets received from TTLs 11 through 20
 **   [4.2-3 BSD bug] the next gateway may errantly reply with reused TTLs
 21   [target] vnsc-bak.sys.gtei.net (4.2.2.2) 11.2ms
Ксеркс
источник
Я пытался найти пакетет в течение нескольких часов, но я полностью забыл имя и большую часть контекста. Спасибо за ссылку!
Кли
3

Лично я большой поклонник mtr ( http://www.bitwizard.nl/mtr/ ), mtr - это клон traceroute на основе ncurses, который может работать с использованием как icmp, так и udp. Он показывает слабые места в вашей ссылке на определенный хост и, таким образом, не навязчив.

Когда дело доходит до некоторых нагрузочных тестов, я бы использовал iperf (клиент / сервер).

АМО-ej1
источник
Кроме того, есть GTK-вариант MTR для всех, кто заинтересован
Кент Фредрик,
2

Для Windows вы можете использовать что-то вроде tcping:
http://www.elifulkerson.com/projects/tcping.php

А для Linux лучшая утилита, уже упоминалось, hping.

# hping -S -p 80 www.sunet.se
HPING www.sunet.se (eth0 192.36.171.155): S set, 40 headers + 0 data bytes
len=46 ip=192.36.171.155 ttl=59 DF id=0 sport=80 flags=SA seq=0 win=5840 rtt=0.7 ms
len=46 ip=192.36.171.155 ttl=59 DF id=0 sport=80 flags=SA seq=1 win=5840 rtt=0.7 ms
len=46 ip=192.36.171.155 ttl=59 DF id=0 sport=80 flags=SA seq=2 win=5840 rtt=0.6 ms
^C
--- www.sunet.se hping statistic ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.7/0.7 ms
Маттиас Анберг
источник
1

ICMP-пакеты обычно доставляются медленнее (если вообще есть разница), потому что большинство сетей их удаляют, особенно пинг-пакеты. Как правило, если вы видите такие разные результаты в ответах ICMP и TCP, проблема заключается либо в перегруженном сервере, либо в специфическом формировании TCP на брандмауэре.

Вы должны исследовать traceroute -P tcp, tcptraceroute, lftи, конечно же telnet.

Алекс Дж
источник
Определите «медленнее». Ваш ответ неверный. Обесцвеченные пакеты не "заметно замедляются", они просто с большей вероятностью будут отброшены. Это приводит к тому, что поток выглядит медленнее, поскольку для TCP, например, это приводит к увеличению числа повторных передач, но один пакет не замедляется, или, если это так, лишь незначительно. Обратите внимание, что это повлияет только на медленные соединения, например, на конечные точки DSL; в самом Интернете слишком много нужно, чтобы кто-то занимался фильтрацией таких пакетов, если только они не вынуждены это делать.
niXar
1
Конечно, сказать «медленнее» было ленивым, «больше шансов быть отброшенным» - это точно. В сети это тоже не редкость, просто настройте некоторые из них mtrв разных точках сети, и вы заметите, что в разных сетях часто возникают проблемы с доставкой ICMP-пакетов в разные точки.
Алекс Дж
1

Вы можете использовать какое-либо приложение QoS для измерения таких параметров сети. Например:

NetPerf (www.netperf.org/netperf/): Netperf является эталоном, который можно использовать для измерения производительности многих различных типов сетей. Он предоставляет тесты как для однонаправленной пропускной способности, так и для сквозной задержки. Среды, в настоящее время измеряемые Netperf, включают в себя:

* TCP and UDP via BSD Sockets for both IPv4 and IPv6
* DLPI
* Unix Domain Sockets
* SCTP for both IPv4 and IPv6 

ИЛИ

IPerf (sourceforge.net/projects/iperf) Iperf был разработан NLANR / DAST как современная альтернатива для измерения максимальной производительности полосы пропускания TCP и UDP. Iperf позволяет настраивать различные параметры и характеристики UDP. Iperf сообщает о пропускной способности, дрожании задержки, потере дейтаграмм.


источник
1

проверить hping, а затем взглянуть на Bing

Мэтью
источник
hping это хорошо, но для этого нужен winpcap. Кажется, pcap - единственный способ, которым Windows может использовать такие инструменты?
Григорьев
Фу ... не знал этого. Это ограничивает возможности оборудования HP - программное обеспечение для объединения интерфейсов HP, похоже, использует некоторые библиотеки winpcap. - Я узнал об этом при попытке установить wireshark.
Мэтью
1

TCP не может "терпеть" потерю 50% пакетов. Он просто остановится по простой причине: он адаптирует свою скорость передачи в зависимости от потери пакетов. Когда пакеты потеряны, они, как понимают, указывают на перегрузку. Если вы отбрасываете 50% пакетов (скажем, с помощью правила случайного отбрасывания брандмауэра) независимо от трафика, он увидит постоянно снижающуюся пропускную способность.

Кроме того, я сомневаюсь, что интернет-провайдеры формируют ICMP против TCP. Кто-то может это сделать, поскольку есть действительно глупые люди, но это не имеет особого смысла. Большинство из них будет формировать целое соединение, или оно будет «формировать себя» из-за скопления. В любом случае пакеты обычно отбрасываются случайным образом.

Тем не менее, вы можете пропинговать с TCP, но есть несколько предостережений. Во-первых, просто отправьте исходный пакет по TCP-соединению, что вызовет ответ от сервера с открытым портом, но будет рассматриваться как попытка подключения. В идеале вы можете использовать службу "эхо" (TCP-порт 7) ... но на самом деле вы не можете, потому что теперь она везде отключена по умолчанию. В любом случае, если вы можете заставить кого-то включить его для вас на машине, которую вы хотите протестировать, программа может использовать это для проверки времени округления пакетов внутри TCP-соединения.

При этом, возможно, на вашем компьютере установлена ​​команда «tracepath»; он похож на traceroute, но использует не TCP или ICMP, а UDP. Для TCP существуют различные утилиты, вы можете попробовать hping .

niXar
источник
0

В качестве альтернативы ping вы можете использовать 'netstat'

Опции: 1.netstat -antp 2.netstat -anup

-a = все, -n = адрес и номер порта локального конца сокета, -t = tcp, -p = программа

-u = выр.

гусеница
источник