Diferença entre o ping com e sem http: //

42

Estou tentando fazer ping no meu site http://www.example.com/ e ele é resolvido para um endereço IP desconhecido e expira.

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 pingar example.com funciona

O que é que estou perdendo aqui?

    
por Saransh Singh 20.06.2015 / 23:45

4 respostas

105

Estou tentando fazer um ping no link do meu site e ele é resolvido para um endereço IP desconhecido e expira.

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

O argumento para ping é um hostname (ou um endereço IP).

Então, o seguinte irá funcionar:

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

Por outro lado,

ping http://www.example.com/

não funcionará porque o link é um HTTP Uniform Resource Locator (URL) não é um nome de host válido (embora parte dele seja um nome de host).

Um URL HTTP é composto de 4 partes:

  • Esquema - sempre presente
  • Hostname - sempre presente
  • Caminho ou haste - sempre presente, mas às vezes é nulo
  • Parâmetros - opcional

Normalmente, o Ping não reconhece URLs como um nome de host de destino válido.

Notas :

  • Nem todos os URLs têm o formato mencionado acima.

  • Um URL completo consiste em um especificador de esquema de nomenclatura seguido por um string cujo formato é uma função do esquema de nomenclatura.

  • O formato de uma URL é definido na especificação URL (Uniform Resource Locators) da IETF

DNS Hijacking

Uma exceção 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 é resolvido para um IP 198.105.254.228 para qualquer nome de host aleatório digitado? por < um href="https://superuser.com/users/144961/michael-hampton"> Michael Hampton :

They are trying to be "helpful" by redirecting requests for nonexistent domains to a white label service that provides search results and advertising, from which everyone but you gets a cut of the revenue.

Fortunately they do have a preferences page where you can supposedly turn it off.

    
por 20.06.2015 / 23:56
31

Quando você executa o comando ping com uma string que não é um endereço IP, primeiro ele precisa resolver o endereço IP do host em que você está tentando executar o 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ê prefixar o protocolo e o caminho para criar uma URL http padrão, tudo é enviado ao servidor DNS para ser resolvido.

Então, em vez de o servidor DNS encontrar o registro de example.com , ele procura o registro http://example.com/ , que não é um nome de host válido.

Muitos servidores DNS retornarão sem nada. Nesse caso, o comando ping irá apenas errar com 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ão da Time Warner Cable para ajudar os usuários que digitaram incorretamente o URL no navegador.

Mas o comando ping considera isso literalmente e acredita que o nome do host http://example.com/ (que não é um nome de host válido) resolve o endereço 123.456.789.000 .

A razão pela qual o comando ping expirou depois disso é porque 123.456.789.000 não responde às solicitações ICMP.

    
por 21.06.2015 / 18:24
20

O http: // significa protocolo de transferência de hipertexto, o protocolo usado para acessar páginas da web. Executar ping em um servidor não usa HTTP, mas consiste em uma mensagem ICMP (protocolo de mensagem de controle da Internet), portanto, o http: // não faz sentido nesse contexto.

    
por 20.06.2015 / 23:54
0

Por que você usaria o 'ping' de qualquer maneira? Não vai funcionar se houver um firewall bloqueando o tráfego de 'ping'.

Na minha opinião, se você vai testar um servidor web, é melhor usar 'telnet', então você pode testar o host e a porta em que ele deveria estar escutando.

por exemplo: Para testar seu servidor da web telnet www.mywebserver.com 80 na tela em branco, digite 'get' e depois 'enter' e você deve obter uma pilha de respostas http do servidor web. ( por exemplo: HTTP / 1.1 400 Solicitação 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 qualquer firewall para deixar a porta 80 através do meu servidor web)

Similarmente, 'telnet' também funciona para testar servidores de email, ftp e praticamente qualquer outra coisa.

    
por 01.07.2015 / 07:30

Tags