Częstym zadaniem jest sprawdzanie „jakości” sieci - opóźnienie, liczba odrzuconych pakietów itp. Ale „ping” ma wiele wad: - Używa ICMP. Wielu dostawców usług internetowych ma różne moduły kształtujące dla ruchu ICMP i TCP, więc „ping” pokaże 10 ms opóźnienia, ale połączenia TCP doświadczą 1000 ms +. - Wysyła bardzo małą liczbę pakietów. Domyślnie jeden pakiet na sekundę. Ponieważ protokół TCP toleruje utratę pakietów (może działać bardzo dobrze, gdy traci się połowę pakietów - to normalne), absolutnie nie jest jasne, czy ping zabija połączenie „30% utraty pakietu” ping, czy jest to absolutnie normalne.
Czy jest więc jakaś alternatywa dla ping, który używa połączenia TCP zamiast ICMP i sprawdza jakość połączenia z Internetem?
networking
tcp
grigoryvp
źródło
źródło
Odpowiedzi:
Niezależnie od tego, że TCP toleruje problemy z utratą pakietów / kolejnością pakietów, utrata ping w wysokości 30% jest nadal dość znacząca, jeśli „populacja” jest wystarczająco duża - tj. Ponad 100 pingów.
Ale aby odpowiedzieć na pytanie, możesz spojrzeć na nmap. Jestem pewien, że wkrótce pojawią się przykłady :)
Co ważniejsze, nie chcesz tylko czasu podróży w obie strony, naprawdę chcesz zobaczyć wydajność ze swojego komputera na serwer iz powrotem przy każdym (możliwym) przeskoku.
Możesz to zrobić za pomocą
traceroute
- jednak najczęściej spotykana wersja jest wykonywana przy użyciu ICMP lub UDP, ale szukajtcp traceroute
- i zacznij od tego.Oto kilka zabawnych narzędzi do wypróbowania, gdy jesteś przy tym ...
Oto przykład z
lft
...źródło
Netcat Power Tools opisuje, jak wykonać pingowanie TCP za pomocą netcat. W szczególności każdy niechciany pakiet ACK powinien zwrócić RST.
źródło
Osobiście jestem wielkim fanem mtr ( http://www.bitwizard.nl/mtr/ ), mtr jest klonem traceroute opartym na ncurses, który może pracować zarówno z icmp, jak i udp. Pokazuje słabe punkty w łączu do określonego hosta i jest w ten sposób nieinwazyjny.
Jeśli naprawdę chodzi o niektóre testy obciążenia, wybrałbym iperf (czyli klient / serwer).
źródło
W systemie Windows możesz użyć czegoś takiego jak tcping:
http://www.elifulkerson.com/projects/tcping.php
A dla Linuksa najlepsze narzędzie jest już wspomniano
hping
.źródło
Pakiety ICMP są generalnie dostarczane wolniej (jeśli w ogóle jest różnica), ponieważ większość sieci je deprioryzuje, szczególnie pakiety ping. Ogólnie rzecz biorąc, jeśli widzisz tak rozbieżne wyniki z odpowiedzi ICMP i TCP, problemem jest albo przeciążony serwer, albo określone kształtowanie TCP na zaporze ogniowej po drodze.
Należy zbadać
traceroute -P tcp
,tcptraceroute
,lft
i oczywiścietelnet
.źródło
mtr
w różnych lokalizacjach w sieci, a zauważysz dość często różne sieci mają problemy z dostarczaniem pakietów ICMP w różnych punktach.Możesz użyć aplikacji QoS do pomiaru tego rodzaju parametrów sieci. Na przykład:
NetPerf (www.netperf.org/netperf/): Netperf to punkt odniesienia, którego można użyć do pomiaru wydajności wielu różnych rodzajów sieci. Zapewnia testy zarówno jednokierunkowej przepustowości, jak i opóźnień od końca do końca. Środowiska obecnie mierzone przez netperf obejmują:
LUB
IPerf (sourceforge.net/projects/iperf) Iperf został opracowany przez NLANR / DAST jako nowoczesna alternatywa do pomiaru maksymalnej wydajności przepustowości TCP i UDP. Iperf umożliwia dostrajanie różnych parametrów i charakterystyk UDP. Iperf zgłasza przepustowość, opóźnienie jittera, utratę datagramów.
źródło
sprawdź hping, a następnie spójrz na bing
źródło
TCP nie może „tolerować” 50% utraty pakietów. Po prostu zatrzyma się, z prostego powodu: dostosowuje prędkość transmisji na podstawie utraty pakietów. Gdy pakiety zostaną utracone, należy je rozumieć jako zator. Jeśli upuścisz 50% pakietów (powiedzmy, z przypadkową regułą zapory) niezależnie od ruchu, zobaczysz coraz mniejszą przepustowość.
Ponadto wątpię, by dostawcy usług internetowych kształtowali ICMP w porównaniu z TCP. Niektórzy mogą to zrobić, ponieważ są naprawdę głupi ludzie, ale nie ma to większego sensu. Większość ukształtuje całe połączenie lub „ukształtuje się” z powodu przeciążenia. W obu przypadkach pakiety są zazwyczaj upuszczane losowo.
To powiedziawszy, możesz pingować za pomocą TCP, ale istnieje kilka zastrzeżeń. Pierwszym z nich jest po prostu wysłanie pakietu początkowego w połączeniu TCP, który wywoła odpowiedź z serwera z otwartym portem, ale będzie postrzegany jako próba połączenia. Idealnie byłoby, gdybyś mógł skorzystać z usługi „echo” (port TCP 7) ... ale tak naprawdę nie możesz, ponieważ jest teraz domyślnie wyłączony wszędzie. W każdym razie, jeśli możesz poprosić kogoś o włączenie go dla ciebie na maszynie, którą chcesz przetestować, program mógłby użyć tego, aby sprawdzić czas obchodzenia pakietów w połączeniu TCP.
To powiedziawszy, prawdopodobnie masz na komputerze polecenie „tracepath”; jest podobny do traceroute, ale nie używa TCP ani ICMP, ale UDP. W przypadku TCP istnieją różne narzędzia, możesz spróbować hping .
źródło
Alternatywą dla ping, możesz użyć „netstat”
Opcje: 1.netstat -antp 2.netstat -anup
-a = wszystko, -n = adres i numer portu lokalnego końca gniazda, -t = tcp, -p = program
-u = udp.
źródło