Frage Warum dauert das Pingen nach Hostname länger als nach IP-Adresse?


Ich habe festgestellt, dass das Pingen nach Hostnamen langsamer ist als die Verwendung der IP-Adresse. Zum Beispiel in der Linux-Befehlszeile:

$ time ping google.com -c 1
PING google.com (150.101.213.160) 56(84) bytes of data.
64 bytes from 150.101.213.160: icmp_seq=1 ttl=61 time=14.4 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.425/14.425/14.425/0.000 ms

real    0m5.251s
user    0m0.003s
sys 0m0.005s

$ time ping 150.101.213.160 -c 1
PING 150.101.213.160 (150.101.213.160) 56(84) bytes of data.
64 bytes from 150.101.213.160: icmp_seq=1 ttl=61 time=14.5 ms

--- 150.101.213.160 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.537/14.537/14.537/0.000 ms

real    0m0.019s
user    0m0.001s
sys 0m0.004s

Ich dachte zunächst, dass der DNS-Server eine Weile braucht, um aufgelöst zu werden, aber wenn ich nach Hostnamen pinge, erscheint fast sofort die erste Zeile, die zeigt, dass die IP-Adresse bereits ermittelt wurde. Die Fünf-Sekunden-Pause ist nach dieser DNS-Auflösung, kurz bevor der (erste) Ping empfangen wird.


7
2018-05-15 12:39


Ursprung


Sind Sie wirklich besorgt über einen Unterschied von 0,100 ms und einen Systemunterschied von 0,001 Sekunden? Sie müssten diesen Test etwa tausend Mal wiederholen, um festzustellen, ob der Test schneller ist als der andere. - Ramhound
@Ramhound Nein, schau dir die Zeit am unteren Ende der Ausgabe an. Es sind 5 Sekunden. - Sparhawk
Sie haben den DNS-Cache vor jedem Test gelöscht, oder? Ansonsten ist dein Test ungültig. - Ramhound
@ Ramhound Ich bin mir nicht sicher, wie das geht. Ich habe es mehrere Male getestet, aber ich bin mir nicht sicher, ob der Cache für beide Arten von Tests gilt. - Sparhawk
Sie können den DNS-Cache löschen, indem Sie verwenden ipconfig. - Ramhound


Antworten:


Die Verzögerung wird verursacht durch ping Versuchen, die IP-Adresse wieder in einen Namen aufzulösen1, indem ich nach oben schaue 160.213.101.150.in-addr.arpa (Reverse-DNS).

Normalerweise die Antwort (ob Erfolg oder nxdomain) sollte sofort, aber es könnte sein, dass es nicht von Ihrem ISP zwischengespeichert wurde und die autoritativen Server für 213.101.150.in-addr.arpa hatten zu dieser Zeit Probleme.

Es kann auch durch falsche Konfiguration oder nur Fehler in bestimmten DNS-Servern verursacht werden. Wenn diese Verzögerung jedes Mal auftritt, kann es sein, dass Ihr DNS-Resolver die Antworten nicht richtig zwischenspeichert, wenn dies der Fall ist (selbst negative Antworten können zwischengespeichert werden).

Bei der Verwendung der ping von iputils, fügen Sie das hinzu -n Option, um Reverse-DNS-Lookups zu vermeiden.


1 Es ist ein Domainname oder ein Hostname, keine URL; Es gibt kein bestimmtes Protokoll oder Ressource an. http://google.com wäre eine URL. http://150.101.213.160 wäre auch eine URL.


13
2018-05-15 13:06



Der DNS-Server meines Internetdienstanbieters war sicherlich fehlerhaft, und das sind mehr Informationen für sie, denke ich. -n macht es fast sofort, aber ich verstehe immer noch nicht genau, warum der DNS-Server DNS umkehren müsste, da ich ihm den Domainnamen bereits gegeben habe? - Sparhawk
@Sparhawk: Weil ping bittet darum. Soweit DNS-Server betroffen sind, google.com. und 160.213.101.150.in-addr.arpa. sind absolut unabhängig - sie werden sogar von verschiedenen Organisationen delegiert - und es besteht keine Notwendigkeit, dass sie aufeinander verweisen. Zum Beispiel, wenn mail.example.com./A hat 1.2.3.4könnte es das sein 4.3.2.1.in-addr.arpa./PTR hat travis.example.com (tatsächlicher Name des Servers). Also, aus Bequemlichkeit, ping versucht, die IP-Adresse der Person, von der die ICMP-Antwort empfangen wurde, rückzuüberprüfen. (Es könnte sogar ein Router in der Mitte sein, der eine Fehlerantwort sendet.) - grawity
@Sparhawk: Auch - mehrere Domains können auf dieselbe IP-Adresse verweisen, und in seltenen Fällen kann der rDNS einer IP-Adresse sogar auf mehrere Domains verweisen. Daher wann pingBei einer umgekehrten Suche kann der DNS-Server keine Annahmen treffen, die auf Vorwärtssuchen basieren, die er gesehen hat, und umgekehrt. Das einzige, was es wiederverwenden kann, sind die im Cache gespeicherten Ergebnisse der genau dieselbe Abfrage. - grawity