Perbedaan antara melakukan ping dengan dan tanpa http: //

46

Saya mencoba untuk melakukan ping ke situs web saya http://www.example.com/dan ini akan teratasi dengan alamat IP yang tidak dikenal dan waktu habis.

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

tetapi ketika saya ping example.comitu berfungsi

Apa yang saya lewatkan di sini?

Saransh Singh
sumber
32
Yang membingungkan di sini adalah ping seharusnya tidak dapat menyelesaikannya sebagai nama host, apalagi mengirim paket ICMP yang gagal. OS / versi apa yang Anda pakai?
lembut
11
Saya minta maaf, tetapi saya menolaknya karena kombinasi alasan - pengguna baru dengan satu pertanyaan yang berisi URL ke situs web mereka dengan hasil yang tampaknya dipalsukan dari PING. Dengan segala hak, itu merupakan upaya untuk mengarahkan lalu lintas ke URL. Kecuali kita dapat mengetahui sistem operasi mana yang memiliki versi PING yang 1) mengetahui apa URL itu, dan 2) mengidentifikasi nomor icmp_seq untuk setiap kali keluar.
Dawn Benton
25
Untuk orang-orang yang downvoted karena mereka tidak tahu ada layanan DNS yang membajak pencarian gagal, tidak tahu pingdan getaddrinfo()dan teman-teman melewati garis miring, tidak tahu itu 56 data bytesadalah standar umum, dll.: Harap ambil ini sebagai tanda bahwa upaya Anda untuk mempelajari lebih banyak hal sebelum mencoba membantu akan dihargai.
rakslice
5
@ Ƭᴇcʜιᴇ007 Hasil ping adalah nyata, saya melihat persis sama ketika saya ping nama host valid dengan timewarner kabel DNS pada OS X.
Hunter Dolan

Jawaban:

108

Saya mencoba untuk melakukan ping ke situs web saya http://www.example.com/ dan ini akan teratasi dengan alamat IP yang tidak dikenal dan waktu habis.

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

Argumen untuk melakukan ping adalah nama host (atau alamat IP).

Jadi yang berikut semuanya akan berfungsi:

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

Di samping itu,

ping http://www.example.com/

tidak akan berfungsi karena http://www.example.com/ adalah HTTP Uniform Resource Locator (URL) bukan nama host yang valid (meskipun sebagian darinya adalah nama host).

URL HTTP terdiri dari 4 bagian:

  • Skema - selalu ada
  • Nama host - selalu ada
  • Path atau Stem - selalu ada tetapi terkadang nol
  • Parameter - opsional

Ping biasanya tidak akan mengenali URL sebagai nama host tujuan yang valid.

Catatan :

  • Tidak semua URL memiliki format yang disebutkan di atas.

  • URL lengkap terdiri dari specifier skema penamaan diikuti oleh string yang formatnya adalah fungsi dari skema penamaan.

  • Format URL didefinisikan dalam spesifikasi IETF Uniform Resource Locators (URL)


Pembajakan DNS

Pengecualian untuk hal di atas dapat terjadi jika server DNS (yang menyelesaikan nama host ke alamat IP) dikonfigurasi untuk mengembalikan alamat IP yang valid bahkan jika nama host yang tidak valid diberikan.

Ini bisa terjadi jika ISP membajak permintaan DNS Anda.

Dari jawaban Mengapa ping menyelesaikan ke IP 198.105.254.228 untuk setiap nama host acak yang saya ketik? oleh Michael Hampton :

Mereka mencoba menjadi "membantu" dengan mengarahkan permintaan untuk domain yang tidak ada ke layanan label putih yang menyediakan hasil pencarian dan iklan, dari mana setiap orang kecuali Anda mendapat potongan dari pendapatan.

Untungnya mereka memiliki halaman preferensi di mana Anda seharusnya dapat mematikannya.

DavidPostill
sumber
33

Ketika Anda menjalankan perintah ping dengan string yang bukan alamat IP, pertama-tama perlu untuk menyelesaikan alamat IP dari host yang Anda coba ping.

Ketika Anda menjalankan:

$ ping example.com

Server DNS mengembalikan alamat IP server yang menjadi tuan rumah situs web.

Namun ketika Anda awalan protokol dan jalur untuk membuat URL http standar yang semuanya dikirim ke server DNS untuk diselesaikan.

Jadi alih-alih server DNS menemukan catatan untuk example.commencari catatan http://example.com/yang bukan nama host yang valid.

Banyak server DNS akan kembali tanpa apa-apa. Dalam hal ini perintah ping hanya akan kesalahan dengan kesalahan resolusi DNS.

Namun server DNS Anda mengembalikan alamat IP 123.456.789.000. Alamat tersebut tampaknya merupakan layanan saran oleh Time Warner Cable untuk membantu pengguna yang salah ketik url di browser mereka.

Tetapi perintah ping mengambil ini secara harfiah dan percaya bahwa nama host http://example.com/(yang bukan nama host yang valid) menyelesaikan ke alamat 123.456.789.000.

Alasan perintah ping habis setelah itu adalah karena 123.456.789.000tidak menanggapi permintaan ICMP.

Hunter Dolan
sumber
5
Layak untuk menunjukkan bahwa domain / ip yang sebenarnya telah diedit oleh bot Komunitas. "123.456.789.000" pada awalnya adalah alamat IP yang dibuang oleh TWC DNS ketika Anda mencoba untuk menyelesaikan nama host yang tidak ada.
Hunter Dolan
1
Bot tidak tahu bagaimana cara mengedit otomatis; Saya akan mengatakan itu adalah suntingan yang disarankan oleh pengguna anonim.
Léo Lam
Hasil pengeditan diajukan oleh pengguna anonim dan disetujui oleh saya dan pengguna lain.
DavidPostill
21

Http: // adalah singkatan dari hyper text transfer protocol, protokol yang digunakan untuk mengakses halaman web. Melakukan ping ke server tidak menggunakan HTTP, tetapi sebaliknya terdiri dari pesan ICMP (internet control message protocol), sehingga http: // tidak masuk akal dalam konteks ini.

KJ4TIP
sumber
Saya akan mengatakan itu tidak jelas bagi seseorang yang belum tahu, tetapi sekarang setelah Anda mengetahui info dari jawaban KJ4TIP, lihat hasilnya: Request timeout for icmp_seq 0Anda dapat melihat ICMP di sana, artinya ICMP urutan 0, 1, 2 ...
Tyler Collier
0

Mengapa Anda menggunakan 'ping'? Ini tidak akan berfungsi jika ada firewall dengan cara memblokir traffic 'ping'.

Menurut pendapat saya jika Anda akan menguji server web maka lebih baik menggunakan 'telnet', maka Anda dapat menguji host dan port yang seharusnya didengarkan.

misal: Untuk menguji server web Anda, telnet www.mywebserver.com 80 di layar kosong, ketikkan 'get' lalu 'enter' dan Anda harus mendapatkan setumpuk respons http kembali dari server web. ( mis: Permintaan Buruk HTTP / 1.1 400 ... )

Ini memberitahu saya bahwa tidak hanya servernya yang 'naik' tetapi juga mendengarkan dan merespons pada port 80. (Saya juga berharap ada firewall untuk membiarkan port 80 sampai ke server web saya)

Demikian pula 'telnet' juga berfungsi untuk menguji server mail, ftp dan apa saja.

MattW
sumber