Як Windows знає, чи має він доступ до Інтернету, чи для підключення Wi-Fi потрібна автентифікація в браузері?


132

У Windows 7 піктограма мережі повідомлень відображатиме індикатор помилки, якщо немає доступу до Інтернету wifi-помилка, а піктограма помилки зникає після успішного підключення до Інтернету мережа нормальна. Іноді, якщо для підключення Wi-Fi потрібен крок аутентифікації в браузері, як у багатьох гостьових мережах в готелях або університетах, з'являється наступний спливаючий міхур, який говорить так само: може знадобитися додаткова інформація про вхід, натисніть, щоб відкрити веб-переглядач

Як Windows знає, чи має він успішне підключення до Інтернету чи ні?
Імовірно, він перевіряє якусь інтернет-службу Microsoft, щоб побачити, чи має він успішне з'єднання, перенаправляється на якусь іншу сторінку чи взагалі не отримує жодної відповіді, але я ніде не бачив, щоб цей процес чи використовувані служби були задокументовані . Хтось може пояснити, як це працює? Я вважаю за краще відповіді, які стосуються фактів, а не просто здогадки, але якщо у вас є дійсно гарна здогадка, тоді перейдіть до цього.

Це запитання було питанням суперкористувача тижня .
Прочитайте запис в блозі 16 травня 2011 року, щоб отримати докладнішу інформацію або подати власне запитання тижня.


1
Якби перевірити службу Microsoft, як би вона пройшла крок активації браузера? Або я вас нерозумію? (+1 btw, цікаве запитання)
slhck

@slhck: У цьому справа її перевірки: якщо він не може отримати належний доступ до служби, але спроба отримує певну відповідь, передбачається, що може бути крок у веб-переглядачі. Якщо немає відповіді на всі , це передбачає , що є тільки локальний доступ. Я просто не впевнений, як саме працює цей процес. Я оновив своє питання, щоб бути трохи більш зрозумілим (сподіваюся).
nhinkle

@nhinkle У мене немає ПК з Windows, але, можливо, хтось може запустити Wireshark, щоб побачити, що насправді робить машина в такому випадку.
slhck

Коли індикатор помилки говорить про відсутність доступу до Інтернету, відкрийте інструмент усунення несправностей у мережі. Під час роботи засобу усунення несправностей ви чітко бачите крок "Спроба підключитися до Microsoft.com". Тому я здогадуюсь, що він використовує послугу.
Mayank

Відповіді:


91

Після деякого копання (велика кількість мережевих та Інтернет-сервісів у Windows вражає), я думаю, що знайшов. У Windows Vista та 7 є безліч функцій поінформованості про мережу, однією з яких є індикатор стану підключення до мережі, який виконує тести на підключення, які в свою чергу використовуються піктограмою мережевої системи. Тест на підключення до Інтернету простий:

  1. NCSI намагається завантажити певну сторінку через HTTP (точніше: текстовий документ) і перевіряє, чи можна її отримати.
  2. Якщо це не вдалося, Windows повідомляє про "відсутність доступу до Інтернету".

Механізм також перевіряє, чи домен документа, на якому розміщується документ, вирішує очікувану IP-адресу. Таким чином, він може також припускати належний доступ до Інтернету, якщо цей тест буде успішним, але документ не можна отримати.

Причина, коли вона повідомляє про "відсутність доступу до Інтернету", коли ви не пройшли автентифікацію на точці доступу, полягає в тому, як працює точка доступу. Він блокує всі порти крім 80 і 443 (для HTTP та HTTPS відповідно), які перенаправляються на сервер аутентифікації Hotspot і можуть так чи інакше зіпсуватись із запитами DNS. Таким чином, NCSI не може ні вирішити домен, на якому розміщений тестовий файл, і навіть якщо він не міг би дійти до фактичного файлу, оскільки трафік HTTP перенаправляється на сервер аутентифікації.

Джерело: http://technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx


13
Точка доступу повинна дозволити DNS, інакше будь-яка спроба отримати доступ до сервера за іменем хоста (а не за IP-адресою) не вдасться із помилкою типу "не в змозі вирішити адресу". Залежно від налаштування точки доступу, він може вирішити всі імена за адресою свого автентичного сервера або він може розв’язати імена правильно та покладатися виключно на перенаправлення з'єднань http (s) на сервер аутентифікації. Частина DNS перевірок, описаних у вподобаному документі, полягає в тому, щоб перевірити, чи dns.msftncsi.com відповідає правильній адресі, а не чи вирішується вона взагалі.
Дейв Шерохман

1
Це дійсно правильно. Я оновив відповідь, щоб це відобразити.
Тобіас Плутат

Дивовижна знахідка та хороший опис того, як це працює! Якщо кращих відповідей не з’явиться, незабаром на вас чекає щедрість.
nhinkle

Там же сказано, No Internet accessякщо ви
стоїте

1
Я не сумніваюся, що це здебільшого правильно, але це здається неповним. Іноді у вас виникнуть проблеми з DNS, і піктограма підключення покаже спливаюче вікно, яке вказує на те, що у вас є доступ до Інтернету, але DNS не працює. Я думаю, що повинен бути крок до кроку 1 (або, можливо, після кроку 1), який полягає в тому, що він намагається вирішити DNS. Якщо це вдається (але сторінка не завантажується), ви отримаєте повідомлення про помилку DNS.
krowe2

69

Ось деталі процесу визначення стану з'єднання :

У наступному списку описано, як NCSI може спілкуватися з веб-сайтом, щоб визначити, чи є в мережі підключення до Інтернету:

  1. Запит на вирішення імені DNS dns.msftncsi.com

  2. HTTP-запит на http://www.msftncsi.com/ncsi.txtповернення 200 ОК та текстMicrosoft NCSI

Це можна відключити за допомогою параметра реєстру. Якщо ви встановите

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

до 0, Windows більше не буде шукати підключення до Інтернету.

Apple робить щось дуже схоже в iOS, щоб виявити підключення до Інтернету та можливі можливості готелю "увійти" на wifi сторінки тощо


1
Новіші (я думаю, пряники та новіші ...) версії Android також це роблять ... вони покажуть значок wifi білого кольору, якщо вони зможуть підключитися до мережі, і він стане зеленим, якщо він може потрапити на якийсь google-розміщений сторінки. Ідея за нею однакова.
ТМ.

розпал робить це теж, якось. Коли я підключився до wifi, він повідомив, що мені потрібно відкрити браузер і прийняти умови використання. Мені було цікаво, як це також сталося.
Кортук

3
Отже, якщо msftncsi.com знизився, кожен комп’ютер Windows 7 не міг би показувати онлайн-сигнал? Це геній!
liamzebedee

8

Як сказав Джефф, для виявлення підключення до Інтернету Windows зробить:

  1. Запит DNS на сервер
  2. HTTP-запит на відомий вміст

Окрім відповіді Джеффа, я підозрюю:

3. Якщо запит HTTP буде переспрямовано на зовнішній Microsoft (або не повертає очікуваного вмісту), покажіть повідомлення на екрані екрана.


3

Для з'єднання, що потребує додаткової реєстрації інформації, швидше за все, визначається через етап вирішення DNS, згаданий Джеффом, з наступними трьома сценаріями:

  • Якщо система вирішила правильну адресу, з'єднання все зрозуміло. (Підключення до Інтернету)
  • Якщо система вирішує dns-запит, але не є правильною адресою, то є повторний прямий (можливий журнал додавання інформації, необхідної)
  • Якщо система не вирішує запит dns, виникають проблеми з підключенням до Інтернету (встановлення підключення до мережі / точки доступу, але немає підключення до Інтернету)

Я припускаю, що запит на:

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

це швидкий спосіб перевірити, чи все в мережі Інтернет чітке. Після цього запускаються запити dns для визначення повного статусу з'єднання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.