Unterschied zwischen Ping mit und ohne http: //

46

Ich versuche, meine Website zu pingen. Die http://www.example.com/Auflösung erfolgt unter einer unbekannten IP-Adresse und es tritt eine Zeitüberschreitung auf.

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

aber wenn ich pinge klappt example.comes

Was ist es, was ich hier verpasse?

Saransh Singh
quelle
32
Was hier verwirrend ist, ist, dass Ping nicht einmal in der Lage sein sollte, das als Hostname aufzulösen, geschweige denn fehlgeschlagene ICMP-Pakete zu versenden. Auf welchem ​​Betriebssystem / welcher Version bist du?
flauschiger
11
Ich entschuldige mich, aber ich habe dies aus verschiedenen Gründen abgelehnt - neuer Nutzer mit einer Frage, die eine URL zu seiner Website mit scheinbar gefälschter Ausgabe von PING enthält. Mit allen Rechten ist dies ein Versuch, den Datenverkehr zur URL zu leiten. Es sei denn, wir können herausfinden, welches Betriebssystem eine PING-Version hat, die 1) eine URL kennt und 2) die icmp_seq-Nummer für jedes Zeitlimit identifiziert.
Dawn Benton
25
Für die Leute, die abstimmten, weil sie nicht wussten, dass es DNS-Dienste gibt, die fehlgeschlagene Lookups hijacken, nicht wussten pingund getaddrinfo()und Freunde durch Schrägstriche gehen, nicht wussten, dass dies 56 data byteseine übliche Standardeinstellung ist, etc .: Bitte nehmen Sie dies als Zeichen dass Sie sich bemühen, mehr über die Dinge zu lernen, bevor Sie versuchen zu helfen, wäre sehr dankbar.
Rakslice
5
@ Ƭᴇcʜιᴇ007 Die Ping-Ergebnisse sind real, ich sehe das gleiche, wenn ich einen ungültigen Hostnamen mit TimeWarner Cable DNS unter OS X pinge.
Hunter Dolan

Antworten:

108

Ich versuche, meine Website http://www.example.com/ zu pingen, und es wird in eine unbekannte IP-Adresse aufgelöst und es tritt eine Zeitüberschreitung auf.

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

Das Argument für Ping ist ein Hostname (oder eine IP-Adresse).

Folgendes wird also funktionieren:

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

Auf der anderen Seite,

ping http://www.example.com/

funktioniert nicht, da http://www.example.com/ eine HTTP- URL (Uniform Resource Locator) ist und kein gültiger Hostname (obwohl ein Teil davon ein Hostname ist).

Eine HTTP-URL besteht aus 4 Teilen:

  • Schema - immer vorhanden
  • Hostname - immer vorhanden
  • Pfad oder Stamm - immer vorhanden, aber manchmal null
  • Parameter - optional

Ping erkennt URLs normalerweise nicht als gültigen Zielhostnamen.

Anmerkungen :

  • Nicht alle URLs haben das oben genannte Format.

  • Eine vollständige URL besteht aus einem Namensschema-Bezeichner, gefolgt von einer Zeichenfolge, deren Format eine Funktion des Namensschemas ist.

  • Das Format einer URL ist in der IETF-Spezifikation Uniform Resource Locators (URL) definiert.


DNS-Hijacking

Eine Ausnahme von oben kann auftreten, wenn der DNS-Server (der Hostnamen in IP-Adressen auflöst) so konfiguriert ist, dass er eine gültige IP-Adresse zurückgibt, auch wenn ein ungültiger Hostname angegeben wird.

Dies kann passieren, wenn ein ISP Ihre DNS-Abfragen missbraucht.

Aus der Antwort Warum wird Ping für einen zufälligen Hostnamen, den ich eingebe, in eine IP 198.105.254.228 aufgelöst? von Michael Hampton :

Sie versuchen, "hilfreich" zu sein, indem sie Anfragen für nicht vorhandene Domains an einen White-Label-Service umleiten , der Suchergebnisse und Werbung bereitstellt, mit denen alle außer Ihnen Einnahmen erzielen.

Glücklicherweise haben sie eine Einstellungsseite, auf der Sie sie abschalten können.

DavidPostill
quelle
33

Wenn Sie den Befehl ping mit einer Zeichenfolge ausführen, die keine IP-Adresse ist, muss zuerst die IP-Adresse des Hosts aufgelöst werden, den Sie anpingen möchten.

Wenn du rennst:

$ ping example.com

Der DNS-Server gibt die IP-Adresse des Servers zurück, auf dem sich die Website befindet.

Wenn Sie jedoch das Protokoll und den Pfad voranstellen, um eine standardmäßige http-URL zu erstellen, die alle zur Auflösung an den DNS-Server gesendet werden.

Anstelle des DNS-Servers, der den Eintrag dafür findet example.com, sucht er nach dem Eintrag, http://example.com/der kein gültiger Hostname ist.

Viele DNS-Server werden mit nichts zurückkehren. In diesem Fall tritt beim Ping-Befehl nur ein DNS-Auflösungsfehler auf.

Ihr DNS-Server gibt jedoch die IP-Adresse zurück 123.456.789.000. Die Adresse scheint ein Vorschlagsdienst von Time Warner Cable zu sein, der Benutzern hilft, die die URL in ihrem Browser falsch eingegeben haben.

Der Befehl ping nimmt dies jedoch wörtlich und geht davon aus, dass der Hostname http://example.com/(der kein gültiger Hostname ist) in die Adresse aufgelöst wird 123.456.789.000.

Der Grund, warum der Ping-Befehl danach abläuft, ist, dass er 123.456.789.000nicht auf ICMP-Anforderungen reagiert.

Hunter Dolan
quelle
5
Es sei darauf hingewiesen, dass die tatsächliche Domain / IP-Adresse vom Community-Bot bearbeitet wurde. "123.456.789.000" war ursprünglich die IP-Adresse, die der DNS von TWC ausgegeben hatte, als Sie versuchten, einen nicht vorhandenen Hostnamen aufzulösen.
Hunter Dolan
1
Der Bot weiß nicht, wie er automatische Änderungen vornimmt. Ich würde sagen, es ist eine Bearbeitung, die von einem anonymen Benutzer vorgeschlagen wurde.
Léo Lam
Die Bearbeitung wurde von einem anonymen Benutzer vorgeschlagen und von mir und einem anderen Benutzer genehmigt.
DavidPostill
21

Das http: // steht für Hyper Text Transfer Protocol, das Protokoll für den Zugriff auf Webseiten. Das Pingen eines Servers verwendet kein HTTP, sondern besteht aus einer ICMP-Nachricht (Internet Control Message Protocol), sodass http: // in diesem Kontext keinen Sinn ergibt.

KJ4TIP
quelle
Ich würde sagen, es ist für jemanden, der es noch nicht kennt, nicht offensichtlich, aber jetzt, da Sie die Informationen aus der Antwort von KJ4TIP kennen, sehen Sie sich die Ausgabe an: Request timeout for icmp_seq 0Sie können dort den ICMP sehen, dh die ICMP-Sequenz 0, 1, 2 ...
Tyler Collier
0

Warum würdest du sowieso 'ping' benutzen? Es funktioniert nicht, wenn eine Firewall den Ping-Verkehr blockiert.

Wenn Sie einen Webserver testen möchten, ist es meiner Meinung nach besser, "Telnet" zu verwenden, dann können Sie den Host und den Port testen, den er abhören soll.

Beispiel: Um Ihren Webserver telnet www.mywebserver.com 80 auf dem leeren Bildschirm zu testen, geben Sie 'get' und dann 'enter' ein und Sie sollten einen Stapel http-Antworten vom Webserver erhalten. ( zB: HTTP / 1.1 400 Bad Request ... )

Dies sagt mir, dass nicht nur der Server "hochgefahren" ist, sondern auch Port 80 überwacht und antwortet. (Ich würde auch erwarten, dass Firewalls Port 80 zu meinem Webserver durchlassen.)

In ähnlicher Weise funktioniert 'telnet' auch zum Testen von Mailservern, FTP und so ziemlich allem anderen.

MattW
quelle