Estou tentando http://www.example.com/
executar ping no meu site e ele resolve para um endereço IP desconhecido e atinge o tempo limite.
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
mas quando eu sigo example.com
ele funciona
O que é que eu estou perdendo aqui?
ping
egetaddrinfo()
e amigos passam por barras, não sabia que56 data bytes
é um padrão comum, etc .: Por favor, tome isso como um sinal que seus esforços para aprender mais sobre as coisas antes de tentar ajudar seriam apreciados.Respostas:
Estou tentando executar ping no meu site http://www.example.com/ e ele resolve para um endereço IP desconhecido e atinge o tempo limite.
O argumento para executar ping é um nome de host (ou um endereço IP).
Portanto, o seguinte funcionará:
Por outro lado,
não funcionará, pois http://www.example.com/ é um URL (URL) não um nome de host válido (embora parte dele seja um nome de host).
Um URL HTTP é composto de 4 partes:
O ping normalmente não reconhece URLs como um nome de host de destino válido.
Notas :
Nem todos os URLs têm o formato mencionado acima.
Uma URL completa consiste em um especificador de esquema de nomeação seguido por uma sequência cujo formato é uma função do esquema de nomeação.
O formato de um URL é definido na especificação IETF Uniform Resource Locator (URL)
Seqüestro de DNS
Uma exceção ao acima pode ocorrer se o servidor DNS (que resolve nomes de host para endereços IP) estiver configurado para retornar um endereço IP válido, mesmo que um nome de host inválido seja fornecido.
Isso pode acontecer se um ISP estiver seqüestrando suas consultas DNS.
Da resposta Por que o ping está resolvendo para um IP 198.105.254.228 para qualquer nome de host aleatório digitado? de Michael Hampton :
fonte
Quando você executa o comando ping com uma sequência que não é um endereço IP, ele primeiro precisa resolver o endereço IP do host que você está tentando executar ping.
Quando você executa:
$ ping example.com
O servidor DNS retorna o endereço IP do servidor que hospeda o site.
No entanto, quando você prefixa o protocolo e o caminho para criar um URL http padrão que é todo enviado ao servidor DNS para ser resolvido.
Portanto, em vez de o servidor DNS encontrar o registro,
example.com
ele procura pelo registrohttp://example.com/
que não é um nome de host válido.Muitos servidores DNS retornarão sem nada. Nesse caso, o comando ping apresentará um erro de resolução de DNS.
No entanto, seu servidor DNS retorna o endereço IP
123.456.789.000
. O endereço parece ser um serviço de sugestões da Time Warner Cable para ajudar os usuários que digitaram incorretamente o URL no navegador.Mas o comando ping leva isso literalmente e acredita que o nome do host
http://example.com/
(que não é um nome de host válido) resolve para o endereço123.456.789.000
.A razão pela qual o comando ping atinge o tempo limite depois disso é porque
123.456.789.000
não responde às solicitações do ICMP.fonte
O http: // significa protocolo de transferência de hipertexto, o protocolo usado para acessar páginas da web. O ping de um servidor não usa HTTP, mas consiste em uma mensagem ICMP (Internet Control Message Protocol), portanto, o http: // não faz sentido nesse contexto.
fonte
Request timeout for icmp_seq 0
Você pode ver o ICMP lá, significando a sequência 0, 1, 2 do ICMP ...Por que você usaria 'ping' de qualquer maneira. Não funcionará se houver um firewall que bloqueie o tráfego 'ping'.
Na minha opinião, se você for testar um servidor Web, é melhor usar o 'telnet', então você pode testar o host e a porta em que ele deve estar ouvindo.
por exemplo: Para testar seu servidor web telnet www.mywebserver.com 80 na tela em branco, digite 'get' e depois 'enter' e você deverá obter uma pilha de respostas http do servidor web. ( por exemplo: Solicitação HTTP / 1.1 400 incorreta ... )
Isso me diz que não apenas o servidor está 'ativo', mas também está ouvindo e respondendo na porta 80. (Eu também esperaria que todos os firewalls deixassem a porta 80 passar para o meu servidor da web)
Da mesma forma, 'telnet' também funciona para testar servidores de correio, ftp e praticamente qualquer outra coisa.
fonte