Różnica między pingowaniem zi bez http: //

46

Próbuję wysłać polecenie ping do mojej witryny, http://www.example.com/która rozwiązuje problem z nieznanym adresem IP i upłynął limit czasu.

PING http://www.example.com/ (198.105.254.228): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

ale kiedy pinguję, example.comto działa

Czego tu brakuje?

Saransh Singh
źródło
32
Mylące jest tutaj to, że ping nie powinien być nawet w stanie rozpoznać tego jako nazwy hosta, a tym bardziej wysyłania nieudanych pakietów ICMP. W jakim systemie operacyjnym / wersji korzystasz?
puszysty
11
Przepraszam, ale głosowałem za tym z różnych powodów - nowy użytkownik z jednym pytaniem zawierającym adres URL do swojej witryny z pozornie sfałszowanymi danymi wyjściowymi z PING. Według wszelkich praw jest to próba zwiększenia ruchu do adresu URL. Chyba że możemy dowiedzieć się, który system operacyjny ma wersję PING, która 1) wie, co to jest adres URL, i 2) identyfikuje numer icmp_seq za każdym razem.
Dawn Benton
25
Do ludzi, którzy downvoted, bo nie wiedzą, że nie są to usługi DNS Hijack nieudanych wyszukiwań, nie wiedział pingi getaddrinfo()i przyjaciele przechodzą przez ukośniki, nie wiedział, że 56 data bytesjest to wspólny domyślną itp .: proszę wziąć to jako znak docenione zostaną twoje wysiłki, aby dowiedzieć się więcej na ten temat, zanim spróbujesz pomóc.
rakslice
5
@ Ƭᴇcʜιᴇ007 Wyniki pingowania są prawdziwe, widzę dokładnie to samo, gdy pinguję niepoprawną nazwę hosta za pomocą TimeWarner Cable DNS w OS X.
Hunter Dolan

Odpowiedzi:

108

Próbuję wysłać polecenie ping do mojej witryny http://www.example.com/, która rozwiązuje problem z nieznanym adresem IP i upłynął limit czasu.

PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0

Argumentem pingowanym jest nazwa hosta (lub adres IP).

Więc następujące będą działać:

ping example.com
ping www.example.com
ping 127.0.0.1

Z drugiej strony,

ping http://www.example.com/

nie będzie działać, ponieważ http://www.example.com/ to URL Uniform Resource Locator (URL), a nie poprawna nazwa hosta (chociaż jego część to nazwa hosta).

Adres URL HTTP składa się z 4 części:

  • Schemat - zawsze obecny
  • Nazwa hosta - zawsze obecna
  • Ścieżka lub trzon - zawsze obecny, ale czasami jest zerowy
  • Parametry - opcjonalne

Ping zwykle nie rozpoznaje adresów URL jako prawidłowej docelowej nazwy hosta.

Uwagi :

  • Nie wszystkie adresy URL mają format wspomniany powyżej.

  • Pełny adres URL składa się ze specyfikatora schematu nazewnictwa, po którym następuje ciąg znaków, którego format jest funkcją schematu nazewnictwa.

  • Format adresu URL jest zdefiniowany w specyfikacji IETF Uniform Resource Locators (URL)


Przejęcie DNS

Wyjątek od powyższego może się zdarzyć, jeśli serwer DNS (który przekształca nazwy hostów na adresy IP) jest skonfigurowany do zwracania prawidłowego adresu IP, nawet jeśli podano niepoprawną nazwę hosta.

Może się to zdarzyć, jeśli ISP przejmuje kontrolę nad zapytaniami DNS.

Z odpowiedzi Dlaczego ping zmienia się na IP 198.105.254.228 dla dowolnej losowej nazwy hosta, którą wpisuję? autor: Michael Hampton :

Starają się być „pomocni”, przekierowując żądania dotyczące nieistniejących domen do usługi białej etykiety, która zapewnia wyniki wyszukiwania i reklamy, z których wszyscy oprócz Ciebie otrzymują cięcia przychodów.

Na szczęście mają stronę preferencji, na której można ją rzekomo wyłączyć.

DavidPostill
źródło
33

Po uruchomieniu polecenia ping z ciągiem, który nie jest adresem IP, najpierw musi rozwiązać adres IP hosta, który próbujesz pingować.

Kiedy biegniesz:

$ ping example.com

Serwer DNS zwraca adres IP serwera, który hostuje witrynę.

Jednak po prefiksie protokołu i ścieżki do utworzenia standardowego adresu URL http, który jest wysyłany do serwera DNS w celu rozwiązania.

Zamiast więc serwera DNS znajdującego rekord example.com, szuka on rekordu, http://example.com/który nie jest prawidłową nazwą hosta.

Wiele serwerów DNS powróci bez niczego. W takim przypadku polecenie ping po prostu wyskoczy z błędem rozpoznawania DNS.

Jednak Twój serwer DNS zwraca adres IP 123.456.789.000. Adres wydaje się być usługą sugerowaną przez Time Warner Cable, aby pomóc użytkownikom, którzy źle wpisali adres URL w przeglądarce.

Ale polecenie ping bierze to dosłownie i uważa, że http://example.com/nazwa hosta (która nie jest prawidłową nazwą hosta) rozwiązuje adres 123.456.789.000.

Przyczyną przekroczenia limitu czasu polecenia ping jest 123.456.789.000brak odpowiedzi na żądania ICMP.

Hunter Dolan
źródło
5
Warto zauważyć, że rzeczywista domena / ip została zredagowana przez bota Community. „123.456.789.000” był pierwotnie adresem IP, który DNS TWC wyrzucił, gdy próbowałeś rozwiązać nieistniejącą nazwę hosta.
Hunter Dolan,
1
Bot nie wie, jak dokonywać automatycznych zmian; Powiedziałbym, że jest to zmiana zaproponowana przez anonimowego użytkownika.
Léo Lam
Edycja została zaproponowana przez anonimowego użytkownika i zatwierdzona przeze mnie i innego użytkownika.
DavidPostill
21

Http: // oznacza protokół przesyłania hipertekstu, protokół używany do uzyskiwania dostępu do stron internetowych. Pingowanie serwera nie korzysta z HTTP, ale zamiast tego składa się z komunikatu ICMP (protokół wiadomości kontroli Internetu), więc http: // nie ma sensu w tym kontekście.

KJ4TIP
źródło
Powiedziałbym, że nie jest to oczywiste dla kogoś, kto jeszcze nie wie, ale teraz, gdy znasz informacje z odpowiedzi KJ4TIP, spójrz na wynik: Request timeout for icmp_seq 0Możesz tam zobaczyć ICMP, co oznacza sekwencję ICMP 0, 1, 2 ...
Tyler Collier,
0

Dlaczego i tak używałbyś „ping”. Nie zadziała, jeśli zapora sieciowa blokuje ruch „ping”.

Moim zdaniem, jeśli zamierzasz przetestować serwer WWW, lepiej użyć „telnet”, to możesz przetestować hosta i port, na którym powinien nasłuchiwać.

np .: Aby przetestować serwer internetowy telnet www.mywebserver.com 80 na pustym ekranie, wpisz „get”, a następnie „enter”. Powinieneś otrzymać stos odpowiedzi HTTP z serwera. ( np .: HTTP / 1.1 400 Bad Request ... )

Mówi mi to, że serwer jest nie tylko „włączony”, ale także nasłuchuje i odpowiada na porcie 80. (Spodziewałbym się również, że wszelkie zapory ogniowe przepuszczą port 80 na mój serwer)

Podobnie „telnet” działa również w celu testowania serwerów pocztowych, ftp i wszystkiego innego.

MattW
źródło