Differenza tra ping con e senza http: //


45

Sto cercando di eseguire il ping del mio sito Web http://www.example.com/e si risolve in un indirizzo IP sconosciuto e scade.

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

ma quando eseguo il ping example.comfunziona

Cosa mi sto perdendo qui?


32
Ciò che confonde qui è che il ping non dovrebbe nemmeno essere in grado di risolverlo come nome host, tanto meno inviare pacchetti ICMP falliti. Su quale sistema operativo / versione sei?
soffice

11
Chiedo scusa, ma ho votato in basso a causa di una combinazione di ragioni: nuovo utente con una domanda che contiene un URL al suo sito Web con output apparentemente falsificato da PING. Con tutti i diritti, questo è un tentativo di indirizzare il traffico verso l'URL. A meno che non possiamo scoprire quale sistema operativo ha una versione di PING che 1) sa cos'è un URL e 2) identifica il numero icmp_seq per ogni timeout.
Dawn Benton,


25
Alle persone che hanno effettuato il downvoting perché non sapevano che ci sono servizi DNS che dirottano ricerche fallite, non lo sapevano pinge getaddrinfo()e gli amici passano attraverso le barre, non sapevano che 56 data bytesè un valore predefinito comune, ecc .: Si prega di prendere questo come segno che i tuoi sforzi per conoscere meglio le cose prima di provare ad aiutare sarebbero apprezzati.
rakslice,

5
@ Ƭᴇcʜιᴇ007 I risultati del ping sono reali, vedo esattamente lo stesso quando eseguo il ping di un nome host non valido con TimeWarner Cable DNS su OS X.
Hunter Dolan,

Risposte:


107

Sto cercando di eseguire il ping del mio sito Web http://www.example.com/ e si risolve in un indirizzo IP sconosciuto e scade il timeout.

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

L'argomento da pingare è un nome host (o un indirizzo IP).

Quindi tutti i seguenti funzioneranno:

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

D'altro canto,

ping http://www.example.com/

non funzionerà poiché http://www.example.com/ è un URL Uniform Resource Locator (URL) non un nome host valido (sebbene parte di esso sia un nome host).

Un URL HTTP è composto da 4 parti:

  • Schema - sempre presente
  • Nome host - sempre presente
  • Path o Stem - sempre presente ma a volte è nullo
  • Parametri - facoltativi

Il ping normalmente non riconosce gli URL come un nome host di destinazione valido.

Note :

  • Non tutti gli URL hanno il formato sopra menzionato.

  • Un URL completo è costituito da un identificatore dello schema di denominazione seguito da una stringa il cui formato è una funzione dello schema di denominazione.

  • Il formato di un URL è definito nella specifica IETF Uniform Resource Locators (URL)


Dirottamento DNS

Un'eccezione a quanto sopra può verificarsi se il server DNS (che risolve i nomi host in indirizzi IP) è configurato per restituire un indirizzo IP valido anche se viene fornito un nome host non valido.

Questo può accadere se un ISP sta dirottando le tue query DNS.

Dalla risposta Perché il ping si sta risolvendo in un IP 198.105.254.228 per qualsiasi nome host casuale che scrivo? di Michael Hampton :

Stanno cercando di essere "utili" reindirizzando le richieste di domini inesistenti a un servizio white label che fornisce risultati di ricerca e pubblicità, da cui tutti tranne te ottengono una riduzione delle entrate.

Fortunatamente hanno una pagina delle preferenze in cui puoi presumibilmente disattivarla.


33

Quando si esegue il comando ping con una stringa che non è un indirizzo IP, è necessario innanzitutto risolvere l'indirizzo IP dell'host che si sta tentando di eseguire il ping.

Quando corri:

$ ping example.com

Il server DNS restituisce l'indirizzo IP del server che ospita il sito Web.

Tuttavia, quando si prefissa il protocollo e il percorso per creare un URL http standard che viene inviato al server DNS per essere risolto.

Quindi, invece del server DNS che trova il record example.com, cerca il record http://example.com/che non è un nome host valido.

Molti server DNS torneranno senza nulla. In tal caso, il comando ping si limiterà a generare un errore di risoluzione DNS.

Tuttavia, il server DNS restituisce l'indirizzo IP 123.456.789.000. L'indirizzo sembra essere un servizio di suggerimenti di Time Warner Cable per aiutare gli utenti che hanno sbagliato a digitare l'URL nel proprio browser.

Ma il comando ping lo prende alla lettera e crede che il nome host http://example.com/(che non è un nome host valido) si risolva nell'indirizzo 123.456.789.000.

Il motivo per cui il comando ping scade dopo ciò è perché 123.456.789.000non risponde alle richieste ICMP.


5
Vale la pena sottolineare che il dominio / ip effettivo è stato modificato dal bot della community. "123.456.789.000" era in origine l'indirizzo IP che il DNS di TWC ha eliminato quando si è tentato di risolvere un nome host inesistente.
Hunter Dolan,

1
Il bot non sa come effettuare modifiche automatiche; Direi che è una modifica suggerita da un utente anonimo.
Léo Lam,

La modifica è stata proposta da un utente anonimo e approvata da me e da un altro utente.
DavidPostill

21

Http: // sta per protocollo di trasferimento ipertestuale, il protocollo utilizzato per accedere alle pagine Web. Il ping di un server non utilizza HTTP, ma è invece costituito da un messaggio ICMP (Internet Control Message Protocol), quindi http: // non ha senso in questo contesto.


Direi che non è ovvio per qualcuno che non lo sa già, ma ora che conosci le informazioni dalla risposta di KJ4TIP, guarda l'output: Request timeout for icmp_seq 0puoi vedere l'ICMP lì, che significa sequenza ICMP 0, 1, 2 ...
Tyler Collier,

0

Perché dovresti usare 'ping' comunque. Non funzionerà se è presente un firewall che blocca il traffico "ping".

Secondo me se hai intenzione di testare un server web allora è meglio usare "telnet", quindi puoi testare l'host e la porta su cui dovrebbe essere in ascolto.

ad esempio: per testare il tuo web server telnet www.mywebserver.com 80 a schermo vuoto, digita 'get' quindi 'enter' e dovresti ottenere una pila di risposta http dal web server. ( es: HTTP / 1.1 400 Richiesta non valida ... )

Questo mi dice che non solo il server è "attivo", ma è anche in ascolto e risposta sulla porta 80. (Mi aspetterei anche che qualsiasi firewall lasci passare la porta 80 al mio server Web)

Allo stesso modo 'telnet' funziona anche per testare server di posta, ftp e qualsiasi altra cosa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.