Différence entre ping avec et sans http: //

46

J'essaye de cingler mon site Web http://www.example.com/et il résout en une adresse IP inconnue et expire.

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

mais quand je ping example.comça marche

Qu'est-ce que je manque ici?

Saransh Singh
la source
32
Ce qui est déroutant ici, c'est que ping ne devrait même pas être capable de résoudre cela en tant que nom d'hôte, et encore moins d'envoyer des paquets ICMP ayant échoué. Sur quel OS / version êtes-vous?
moelleux
11
Je m'excuse, mais j'ai rejeté cette proposition pour diverses raisons: nouvel utilisateur avec une question contenant une URL vers son site Web avec une sortie apparemment faussée de PING. Par tous les droits, c'est une tentative de générer du trafic vers l'URL. Sauf si nous pouvons savoir quel système d'exploitation possède une version de PING qui 1) sait ce qu'est une URL et 2) identifie le numéro icmp_seq pour chaque arrêt.
Dawn Benton
25
Pour les gens qui downvoted parce qu'ils ne savaient savent pas qu'il existe des services DNS qui détournent recherches ratées, n'a pas pinget getaddrinfo()et les amis passent par des barres obliques, ne savait pas que 56 data bytesest un défaut commun, etc .: S'il vous plaît prendre cela comme un signe que vos efforts pour en apprendre davantage sur les choses avant d'essayer d'aider seraient appréciés.
Rakslice
5
@ Ƭᴇcʜιᴇ007 Les résultats du ping sont réels, je vois exactement la même chose quand je lance un ping sur un nom d'hôte invalide avec TimeWarner Cable DNS sur OS X.
Hunter Dolan

Réponses:

108

J'essaye de cingler mon site Web http://www.example.com/ et cela résout en une adresse IP inconnue et expire.

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

L'argument de ping est un nom d'hôte (ou une adresse IP).

Donc, tout ce qui suit fonctionnera:

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

D'autre part,

ping http://www.example.com/

ne fonctionnera pas car http://www.example.com/ est une URL (Uniform Resource Locator) HTTP pas un nom d'hôte valide (même si une partie de celui-ci est un nom d'hôte).

Une URL HTTP est composée de 4 parties:

  • Scheme - toujours présent
  • Nom d'hôte - toujours présent
  • Path ou Stem - toujours présent mais parfois nul
  • Paramètres - optionnel

Normalement, Ping ne reconnaîtra pas les URL en tant que nom d’hôte de destination valide.

Notes :

  • Toutes les URL n'ont pas le format mentionné ci-dessus.

  • Une URL complète consiste en un spécificateur de schéma de dénomination suivi d'une chaîne dont le format est fonction du schéma de dénomination.

  • Le format d'une URL est défini dans la spécification IETF Uniform Resource Locators (URL)


Détournement de DNS

Une exception à ce qui précède peut se produire si le serveur DNS (qui résout les noms d’hôte en adresses IP) est configuré pour renvoyer une adresse IP valide même si un nom d’hôte non valide est fourni.

Cela peut arriver si un fournisseur de services Internet pirate vos requêtes DNS.

De la réponse Pourquoi le ping est-il résolu en IP 198.105.254.228 pour tout nom d’hôte aléatoire que je tape? par Michael Hampton :

Ils essaient d'être "utiles" en redirigeant les demandes de domaines inexistants vers un service en marque blanche fournissant des résultats de recherche et de la publicité, à partir duquel tout le monde, sauf vous, obtient une part de votre revenu.

Heureusement, ils ont une page de préférences sur laquelle vous pouvez supposément l’activer.

DavidPostill
la source
33

Lorsque vous exécutez la commande ping avec une chaîne qui n'est pas une adresse IP, elle doit d'abord résoudre l'adresse IP de l'hôte sur lequel vous tentez d'effectuer une commande ping.

Quand tu cours:

$ ping example.com

Le serveur DNS renvoie l'adresse IP du serveur qui héberge le site Web.

Toutefois, lorsque vous préfixez le protocole et le chemin d'accès, vous créez une URL http standard qui est entièrement envoyée au serveur DNS pour être résolue.

Ainsi, au lieu que le serveur DNS trouve l’enregistrement, example.comil recherche l’enregistrement http://example.com/qui n’est pas un nom d’hôte valide.

Beaucoup de serveurs DNS reviendront sans rien. Dans ce cas, la commande ping générera une erreur de résolution DNS.

Cependant, votre serveur DNS renvoie l'adresse IP 123.456.789.000. L’adresse semble être un service de suggestion de Time Warner Cable pour aider les utilisateurs qui ont mal entré l’URL dans leur navigateur.

Mais la commande ping prend cela à la lettre et croit que le nom d’hôte http://example.com/(qui n’est pas un nom d’hôte valide) est résolu en adresse 123.456.789.000.

La raison pour laquelle la commande ping expire après cela est parce 123.456.789.000que ne répond pas aux demandes ICMP.

Hunter Dolan
la source
5
Il est intéressant de noter que le domaine / ip a été édité par le bot communautaire. "123.456.789.000" était à l'origine l'adresse IP que le DNS de TWC a indiquée lorsque vous avez tenté de résoudre un nom d'hôte inexistant.
Hunter Dolan
1
Le bot ne sait pas comment faire des modifications automatiques; Je dirais que c'est une modification suggérée par un utilisateur anonyme.
Léo Lam
La modification a été proposée par un utilisateur anonyme et approuvée par moi-même et un autre utilisateur.
DavidPostill
21

Le http: // signifie Hyper Text Transfer Protocol, le protocole utilisé pour accéder aux pages Web. L'envoi d'une requête ping à un serveur n'utilise pas HTTP, mais consiste en un message ICMP (Internet Control Message Protocol). Par conséquent, http: // n'a pas de sens dans ce contexte.

KJ4TIP
la source
Je dirais que ce n'est pas évident pour quelqu'un qui ne le sait pas déjà, mais maintenant que vous connaissez les informations de la réponse de KJ4TIP, regardez le résultat: Request timeout for icmp_seq 0vous pouvez voir l'ICMP, ce qui signifie séquence ICMP 0, 1, 2 ...
Tyler Collier
0

Pourquoi voudriez-vous utiliser 'ping' de toute façon? Cela ne fonctionnera pas s'il existe un pare-feu bloquant le trafic "ping".

À mon avis, si vous allez tester un serveur Web, il est préférable d'utiliser "telnet", vous pouvez alors tester l'hôte et le port sur lequel il doit écouter.

Exemple: pour tester votre serveur Web telnet sur l'écran vide, tapez 'get' puis 'enter' et vous devriez obtenir une pile de réponses http à partir du serveur Web. ( par exemple: HTTP / 1.1 400 Bad Request ... )

Cela me dit que non seulement le serveur est "en place", mais qu'il écoute et répond également sur le port 80. (J'attendrais également des pare-feu de laisser le port 80 traverser mon serveur Web)

De même, «telnet» fonctionne également pour tester les serveurs de messagerie, ftp et à peu près tout le reste.

MattW
la source