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?
ping
etgetaddrinfo()
et les amis passent par des barres obliques, ne savait pas que56 data bytes
est 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.Réponses:
J'essaye de cingler mon site Web http://www.example.com/ et cela résout en une adresse IP inconnue et expire.
L'argument de ping est un nom d'hôte (ou une adresse IP).
Donc, tout ce qui suit fonctionnera:
D'autre part,
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:
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 :
la source
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.com
il recherche l’enregistrementhttp://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 adresse123.456.789.000
.La raison pour laquelle la commande ping expire après cela est parce
123.456.789.000
que ne répond pas aux demandes ICMP.la source
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.
la source
Request timeout for icmp_seq 0
vous pouvez voir l'ICMP, ce qui signifie séquence ICMP 0, 1, 2 ...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.
la source