Bagaimana Windows tahu apakah ia memiliki akses internet atau jika koneksi Wi-Fi memerlukan otentikasi dalam browser?

132

Di Windows 7, ikon jaringan area pemberitahuan akan menampilkan indikator kesalahan jika tidak ada akses internet wifi-err, dan ikon kesalahan hilang begitu ada koneksi yang berhasil ke internet jaringan normal. Terkadang, jika koneksi WiFi memerlukan langkah otentikasi dalam peramban, seperti pada banyak jaringan tamu di hotel atau universitas, maka gelembung sembulan berikut akan muncul, dengan mengatakan: informasi login tambahan mungkin diperlukan, klik untuk membuka browser Anda

Bagaimana Windows mengetahui apakah ia memiliki koneksi internet yang sukses atau tidak?
Mungkin ini sedang memeriksa beberapa layanan Microsoft online untuk melihat apakah ia memiliki koneksi yang sukses, akan diarahkan ke halaman lain, atau tidak mendapatkan respons sama sekali, tetapi saya belum melihat di mana pun bahwa proses ini atau layanan yang digunakan didokumentasikan . Adakah yang bisa menjelaskan cara kerjanya? Saya lebih suka jawaban yang merujuk pada fakta, daripada hanya menebak, tetapi jika Anda memiliki tebakan yang benar-benar bagus , maka lakukanlah.

Pertanyaan ini adalah Pertanyaan Pengguna Super Minggu Ini .
Baca entri blog 16 Mei 2011 untuk perincian lebih lanjut atau kirimkan Pertanyaan Anda Minggu Ini.

nhinkle
sumber
1
Jika ingin memeriksa layanan Microsoft, bagaimana cara melewati langkah aktivasi di-browser? Atau saya salah paham? (+1 btw, pertanyaan menarik)
slhck
@slhck: Itu titik itu memeriksa: jika tidak dapat mengakses layanan dengan benar, tapi upayanya mendapat beberapa respon, itu menganggap bahwa mungkin ada langkah di-browser. Jika tidak ada respons sama sekali , itu mengasumsikan hanya ada akses lokal. Saya hanya tidak yakin bagaimana tepatnya proses itu bekerja. Saya telah memperbarui pertanyaan saya menjadi sedikit lebih jelas (semoga).
nhinkle
@nhinkle Saya tidak punya PC Windows tetapi mungkin seseorang dapat menjalankan Wireshark untuk melihat apa yang sebenarnya dilakukan mesin dalam kasus seperti itu.
slhck
Ketika indikator kesalahan mengatakan bahwa tidak ada akses internet, buka pemecah masalah jaringan. Saat pemecah masalah berjalan, Anda dapat dengan jelas melihat langkah "Mencoba terhubung ke Microsoft.com". Jadi tebakan saya adalah menggunakan layanan.
Mayank

Jawaban:

91

Setelah beberapa penggalian (banyaknya jaringan dan layanan terkait Internet di Windows sangat mencengangkan), saya rasa saya menemukannya. Windows Vista dan 7 memiliki beragam fitur Network Awareness, salah satunya adalah Network Connectivity Status Indicator yang melakukan tes konektivitas yang pada gilirannya digunakan oleh ikon systray jaringan. Tes untuk konektivitas internet sederhana:

  1. NCSI mencoba memuat halaman tertentu melalui HTTP (lebih tepatnya: dokumen teks) dan menguji apakah dapat diambil.
  2. Jika itu tidak berhasil, Windows melaporkan "Tidak ada akses Internet".

Mekanisme ini juga memeriksa apakah domain yang di-host pada dokumen menyelesaikan ke alamat IP yang diharapkan. Jadi, itu mungkin juga menganggap akses internet yang tepat jika tes ini berhasil tetapi dokumen tidak dapat diambil.

Alasannya melaporkan "Tidak Ada Akses Internet" ketika Anda belum mengautentikasi pada Hotspot terletak pada cara kerja Hotspot. Ia memblokir semua port selain 80 dan 443 (masing-masing untuk HTTP dan HTTPS), yang dialihkan ke server otentikasi Hotspot dan mungkin mengacaukan permintaan DNS dengan satu atau lain cara. Dengan demikian, NCSI tidak dapat menyelesaikan domain tempat file uji di-host, dan bahkan jika itu tidak akan mencapai file yang sebenarnya karena lalu lintas HTTP diarahkan ke server Otentikasi.

Sumber: http://technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx

Tobias Plutat
sumber
13
Hotspot harus mengizinkan DNS, jika tidak ada upaya untuk mengakses server dengan nama host (bukan oleh alamat IP) akan gagal dengan kesalahan tipe "tidak dapat menyelesaikan alamat". Bergantung pada pengaturan hotspot, ia dapat menyelesaikan semua nama ke alamat server auth atau dapat menyelesaikan nama dengan benar dan hanya mengandalkan pengalihan koneksi http (s) ke server auth. Bagian DNS dari pemeriksaan yang dijelaskan dalam dokumen yang disukai adalah untuk memverifikasi bahwa dns.msftncsi.com menyelesaikan ke alamat yang benar, bukan apakah itu menyelesaikan sama sekali.
Dave Sherohman
1
Itu memang benar. Saya memperbarui jawaban untuk mencerminkan hal itu.
Tobias Plutat
Temuan luar biasa, dan deskripsi yang bagus tentang cara kerjanya! Jika tidak ada jawaban yang lebih baik muncul, ada karunia segera hadir.
nhinkle
Ia juga mengatakan No Internet accessjika Anda berada di belakang proxy;)
Oscar Mederos
1
Saya tidak ragu bahwa ini sebagian besar benar tetapi tampaknya tidak lengkap. Terkadang, Anda akan memiliki masalah dengan DNS dan ikon konektivitas akan menampilkan sembulan yang menunjukkan bahwa Anda memiliki akses internet tetapi DNS gagal. Saya pikir harus ada langkah sebelum langkah 1 (atau mungkin setelah langkah 1) yaitu mencoba untuk menyelesaikan DNS. Jika itu berhasil (tetapi halaman tidak memuat) maka Anda mendapatkan pesan kesalahan DNS.
krowe2
69

Berikut adalah detail proses penentuan status koneksi :

Daftar berikut ini menjelaskan bagaimana NCSI dapat berkomunikasi dengan situs Web untuk menentukan apakah suatu jaringan memiliki konektivitas Internet:

  1. Permintaan resolusi nama DNS untuk dns.msftncsi.com

  2. Permintaan HTTP untuk http://www.msftncsi.com/ncsi.txtmengembalikan 200 OK dan teksMicrosoft NCSI

Ini dapat dinonaktifkan dengan pengaturan registri. Jika Anda mengatur

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
     NlaSvc\Parameters\Internet\EnableActiveProbing

untuk 0, Windows tidak akan lagi menyelidiki konektivitas internet.

Apple melakukan sesuatu yang sangat mirip di iOS untuk mendeteksi konektivitas internet dan kemungkinan halaman wifi "login" hotel, dll.

Jeff Atwood
sumber
1
Versi Android yang lebih baru (saya pikir Gingerbread dan yang lebih baru ...) juga melakukan ini ... mereka akan menampilkan ikon wifi berwarna putih jika mereka dapat terhubung ke jaringan, dan itu akan berubah menjadi hijau jika dapat menekan beberapa host yang dihosting oleh google halaman. Gagasan di baliknya adalah sama.
TM.
kindle melakukan ini juga, Entah bagaimana. Ketika saya terhubung ke wifi, itu memberi tahu saya bahwa saya perlu membuka browser saya dan menerima ketentuan penggunaan. Saya bertanya-tanya bagaimana ini terjadi juga.
Kortuk
3
Jadi jika msftncsi.com turun, setiap komputer Windows 7 tidak akan dapat menampilkan sinyal online? Itu jenius!
liamzebedee
8

Seperti kata Jeff, untuk mendeteksi koneksi Internet, Windows akan melakukan:

  1. Permintaan DNS ke server
  2. Permintaan HTTP untuk konten yang dikenal

Selain jawaban Jeff, saya curiga:

3. Jika permintaan HTTP dialihkan ke Microsoft di luar (atau tidak mengembalikan konten yang diharapkan), tunjukkan pesan di tangkapan layar Anda.

Macke
sumber
3

Untuk koneksi yang memerlukan informasi logon tambahan lebih mungkin ditentukan melalui langkah resolusi DNS yang disebutkan oleh Jeff dengan tiga skenario berikut yang terjadi:

  • Jika sistem menyelesaikan alamat yang benar, koneksi menjadi jelas. (Konektivitas internet)
  • Jika sistem menyelesaikan permintaan dns tetapi bukan alamat yang benar maka ada arahan ulang (kemungkinan tambahan informasi login diperlukan)
  • Jika sistem tidak menyelesaikan permintaan dns, ada masalah konektivitas internet (koneksi terhubung ke jaringan / jalur akses tetapi tidak ada konektivitas internet)

Saya berasumsi bahwa permintaan untuk:

http://www.msftncsi.com/ncsi.txt

adalah cara cepat untuk menguji apakah koneksi ke internet semuanya jelas. Setelah itu, permintaan dns dijalankan untuk menentukan status penuh koneksi.

James Mertz
sumber