Ping-Alternative für TCP?


12

Es ist eine häufige Aufgabe, die "Netzwerkqualität" zu überprüfen - Latenz, Anzahl der verworfenen Pakete usw. Ping hat jedoch eine Reihe von Nachteilen: - Es verwendet ICMP. Viele ISPs haben unterschiedliche Shaper für ICMP- und TCP-Datenverkehr, sodass "Ping" eine Latenz von 10 ms anzeigt, bei TCP-Verbindungen jedoch eine Latenz von über 1000 ms. - Es werden nur sehr wenige Pakete gesendet. Standardmäßig ein Paket pro Sekunde. Da das TCP-Protokoll den Verlust von Paketen toleriert (es funktioniert sehr gut, wenn die Hälfte der Pakete verloren geht - es ist normal), ist es absolut unklar, ob die Ping-Verbindung "30% Packet Loss" beendet oder ob es absolut normal ist.

Ist es also eine Alternative für Ping, das eine TCP-Verbindung anstelle von ICMP verwendet und die Qualität der Internetverbindung überprüft?


Ein Ping-Verlust von% 30 ist der Tod für jede andere Verbindung zwischen diesen Adressen. % 10 ist dem Tode nahe. % 1 ist wahrscheinlich das Limit, bevor Sie ernsthafte Probleme sehen.
Jonesome Reinstate Monica

Antworten:


14

Unabhängig von der Tatsache, dass TCP Probleme mit Paketverlust / Paketreihenfolge tolerieren kann, ist ein Ping-Verlust von 30% immer noch ziemlich signifikant, wenn die "Population" groß genug ist - dh mehr als 100 Pings.

Um die Frage zu beantworten, können Sie sich nmap ansehen. Ich bin mir sicher, dass Beispiele in Kürze einfluten werden :)

Noch wichtiger ist jedoch, dass Sie nicht nur eine Hin- und Rückfahrt wünschen, sondern auch die Leistung von Ihrem Computer zum Server und zurück bei jedem (möglichen) Sprung.

Sie können dies mit tracerouteausführen - die am häufigsten verwendete Version wird jedoch mit ICMP oder UDP ausgeführt, suchen Sie jedoch nach tcp traceroute- und starten Sie dort.

Hier sind einige lustige Tools, die Sie ausprobieren können, wenn Sie gerade dabei sind ...

Hier ist ein Beispiel mit 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

Ich habe stundenlang versucht, paketto zu finden, aber ich hatte den Namen und den größten Teil des Kontexts völlig vergessen. Danke für den Link!
Clee


3

Ich persönlich bin ein großer Fan von mtr ( http://www.bitwizard.nl/mtr/ ), mtr ist ein ncurses-basierter Traceroute-Klon, der sowohl mit icmp als auch mit udp funktionieren kann. Es zeigt Ihnen die Schwachstellen in Ihrem Link zu einem bestimmten Host und ist auf diese Weise nicht aufdringlich.

Wenn es wirklich um einige Auslastungstests geht, würde ich mit Iperf (das ist Client / Server) gehen.


Außerdem gibt es eine GTK-Variante von MTR für alle Interessierten
Kent Fredric

2

Für Windows können Sie so etwas wie tcping verwenden:
http://www.elifulkerson.com/projects/tcping.php

Und für Linux ist, wie bereits erwähnt, das beste Dienstprogramm 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-Pakete werden in der Regel langsamer zugestellt (wenn überhaupt ein Unterschied besteht), da die meisten Netzwerke diese Priorität verlieren, insbesondere Ping-Pakete. Wenn bei ICMP- und TCP-Antworten solche unterschiedlichen Ergebnisse auftreten, liegt das Problem im Allgemeinen entweder an einem überlasteten Server oder an einer bestimmten TCP-Shaping-Funktion an einer Firewall.

Sie sollten untersuchen traceroute -P tcp, tcptraceroute, lftund natürlich telnet.


Definieren Sie "langsamer". Deine Antwort ist falsch. Depriorisierte Pakete werden nicht merklich "verlangsamt", sondern eher verworfen. Dies führt dazu, dass der Datenfluss langsamer erscheint, da beispielsweise bei TCP mehr Neuübertragungen erfolgen, ein einzelnes Paket jedoch nicht oder nur geringfügig verlangsamt wird. Beachten Sie, dass dies nur langsame Verbindungen betrifft, z. B. DSL-Endpunkte. Im Internet selbst ist zu viel los, als dass sich jemand die Mühe machen könnte, solche Pakete zu filtern, es sei denn, er ist dazu gezwungen.
niXar

1
Sicher, "langsamer" zu sagen war faul, "eher fallen gelassen werden" ist richtig. Es ist auch keine Seltenheit im Netz. Richten Sie einfach einige mtran verschiedenen Orten im Netz ein, und Sie werden feststellen, dass in verschiedenen Netzwerken häufig Probleme bei der Zustellung von ICMP-Paketen an verschiedenen Stellen auftreten.
Alex J

1

Sie könnten eine QoS-Anwendung verwenden, um diese Art von Netzwerkparametern zu messen. Beispielsweise:

NetPerf (www.netperf.org/netperf/): Netperf ist ein Benchmark, mit dem die Leistung vieler verschiedener Netzwerktypen gemessen werden kann. Es bietet Tests sowohl für den unidirektionalen Durchsatz als auch für die End-to-End-Latenz. Die von netperf derzeit messbaren Umgebungen umfassen:

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

ODER

IPerf (sourceforge.net/projects/iperf) Iperf wurde von NLANR / DAST als moderne Alternative zur Messung der maximalen TCP- und UDP-Bandbreitenleistung entwickelt. Mit Iperf können verschiedene Parameter und UDP-Eigenschaften eingestellt werden. Iperf meldet Bandbreite, Verzögerungsjitter, Datagrammverlust.


1

check out hping und schau dir dann bing an


hping ist gut, erfordert aber winpcap. Scheint pcap die einzige Möglichkeit zu sein, wie Windows solche Tools verwenden kann?
grigoryvp

Yuck ... Wusste das nicht. Das schadet der HP Hardware - die HP Interface-Teaming-Software scheint einige winpcap-Bibliotheken zu verwenden. - Ich habe das herausgefunden, als ich versucht habe, wireshark zu installieren.
Matthew

1

TCP kann 50% Paketverlust nicht "tolerieren". Es wird aus einem einfachen Grund einfach zum Stillstand kommen: Es passt seine Übertragungsgeschwindigkeit basierend auf dem Verlust von Paketen an. Wenn Pakete verloren gehen, deuten sie auf eine Überlastung hin. Wenn Sie 50% der Pakete löschen (z. B. mit einer zufälligen Firewall-Regel), unabhängig vom Datenverkehr, wird die Verfügbarkeit der Bandbreite immer geringer.

Außerdem bezweifle ich, dass ISPs ICMP vs. TCP formen. Einige mögen es tun, da es einige wirklich dumme Leute gibt, aber es macht nicht viel Sinn, dies zu tun. Die meisten formen die gesamte Verbindung, oder sie "formen sich selbst" aufgrund von Überlastung. In beiden Fällen werden Pakete normalerweise zufällig verworfen.

Abgesehen davon können Sie mit TCP pingen, aber es gibt mehrere Vorbehalte. Das erste ist, einfach das erste Paket in einer TCP-Verbindung zu senden, was eine Antwort von einem Server mit einem offenen Port auslöst, aber als Verbindungsversuch angesehen wird. Im Idealfall können Sie den "Echo" -Dienst (TCP-Port 7) verwenden. Dies ist jedoch nicht möglich, da er jetzt standardmäßig überall deaktiviert ist. Wenn Sie jemanden dazu bringen können, es auf dem zu testenden Computer für Sie zu aktivieren, könnte ein Programm dies verwenden, um die Umlaufzeit für Pakete innerhalb einer TCP-Verbindung zu überprüfen.

Davon abgesehen haben Sie wahrscheinlich den Befehl "tracepath" auf Ihrem Computer installiert. Es ähnelt Traceroute, verwendet jedoch weder TCP noch ICMP, sondern UDP. Für TCP gibt es verschiedene Dienstprogramme, Sie können versuchen, HPING .


0

Die Alternative zu Ping können Sie "netstat" verwenden

Optionen: 1.netstat -antp 2.netstat -anup

-a = alle, -n = Adresse und Portnummer des lokalen Endes des Sockets, -t = TCP, -p = Programm

-u = udp

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.