Вопрос: Как Windows знает, имеет ли он доступ к Интернету, или если для подключения Wi-Fi требуется аутентификация в браузере?


В Windows 7 значок сети области уведомлений покажет индикатор ошибки, если нет доступа в Интернет wifi-err, и значок ошибки исчезнет после успешного подключения к Интернету. networking normal, Иногда, если для подключения WiFi требуется шаг аутентификации в браузере, например, во многих гостевых сетях в отелях или университетах, появляется следующий всплывающий пузырь, говорящий так: additional log on information may be required, click to open your browser

Как Windows знает, имеет ли он успешное подключение к Интернету?
 Предположительно, он проверяет некоторые онлайн-службы Microsoft, чтобы узнать, имеет ли он успешное соединение, перенаправляется на какую-либо другую страницу или вообще не получает ответа, но я нигде не видел, чтобы этот процесс или используемые службы документировались , Может ли кто-нибудь объяснить, как это работает? Я бы предпочел ответы, которые ссылаются на факты, а не на догадки, но если у вас есть действительно хорошо догадайтесь, тогда идите.

Этот вопрос был Суперпользовательский вопрос недели,
  Прочитано 16 мая 2011 г. запись в блоге для более подробной информации или представить свои собственные Вопрос недели.


130
2018-05-02 07:50


Источник


Если нужно проверить службу Microsoft, как она пройдет через шаг активации в браузере? Или я вас не понимаю? (+1 кстати, интересный вопрос) - slhck
@slhck: Это точка проверки: если он не может получить доступ к сервису должным образом, но его попытка некоторые ответа, он предполагает, что может быть шаг в браузере. Если ответа нет все, он предполагает, что есть только локальный доступ. Я просто не знаю, как именно этот процесс работает. Я обновил свой вопрос, чтобы быть немного более ясным (надеюсь). - nhinkle♦
@nhinkle У меня нет ПК с ОС Windows, но, возможно, кто-то может запустить Wireshark, чтобы посмотреть, что на самом деле делает машина в таком случае. - slhck
Когда индикатор ошибки говорит, что нет доступа в Интернет, откройте сетевой инструмент устранения неполадок. При запуске средства устранения неполадок вы можете четко увидеть шаг «Попытка подключения к Microsoft.com». Поэтому я предполагаю, что он использует сервис. - Mayank


Ответы:


После некоторого копания (огромное количество сетевых и интернет-сервисов в Windows поражает), я думаю, что нашел. Windows Vista и 7 имеют множество функций Network Awareness, одним из которых является индикатор состояния сетевого подключения, который выполняет тесты подключения, которые, в свою очередь, используются значком сетевого systray. Тест для интернет-подключения прост:

  1. NCSI пытается загрузить определенную страницу через HTTP (точнее: текстовый документ) и проверяет, можно ли ее восстановить.
  2. Если это не удастся, Windows сообщает «Нет доступа в Интернет».

Механизм также проверяет, находится ли домен, на котором размещен документ, на разрешенный ожидаемый IP-адрес. Таким образом, он может также принять надлежащий доступ в Интернет, если этот тест будет успешным, но документ не может быть восстановлен.

Причина, по которой он сообщает «Нет доступа к Интернету», когда вы еще не аутентифицировались в Hotspot, все же заключается в том, как работает Hotspot. Он блокирует все порты, кроме 80 и 443 (для HTTP и HTTPS, соответственно), которые перенаправляются на сервер аутентификации Hotspot и могут так или иначе входить в запросы DNS. Таким образом, NCSI не может ни разрешить домен, на котором размещен его тестовый файл, и даже если он не сможет достичь фактического файла, поскольку HTTP-трафик перенаправляется на сервер аутентификации.

Источник: http://technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx


89
2018-05-02 10:00



Точка доступа должна разрешить DNS, в противном случае любая попытка доступа к серверу по имени узла (а не по IP-адресу) потерпит неудачу с ошибкой типа «неспособность разрешить адрес». В зависимости от настройки хот-спота он может разрешать все имена по адресу своего сервера auth или может правильно разрешать имена и полагаться исключительно на перенаправление HTTP-соединений на сервер auth. Часть DNS-проверок, описанная в понравившемся документе, должна проверить, разрешает ли dns.msftncsi.com правильный адрес, а не разрешает ли он вообще. - Dave Sherohman
Это действительно правильно. Я обновил ответ, чтобы отразить это. - Tobias Plutat
Удивительная находка и хорошее описание того, как она работает! Если не появятся лучшие ответы, в ближайшее время появится щедрость. - nhinkle♦
Он также говорит No Internet access если вы находитесь за прокси;) - Oscar Mederos
Я не сомневаюсь, что это в основном правильное, но оно кажется неполным. Иногда у вас будет проблема с DNS, а значок подключения отображает всплывающее окно, которое указывает, что у вас есть доступ в Интернет, но этот DNS не работает. Я думаю, что перед шагом 1 (или, возможно, после шага 1) должен быть шаг, который заключается в попытке разрешить DNS. Если это удастся (но страница не загружается), вместо этого вы получите сообщение об ошибке DNS. - krowe2


Ниже приведены сведения о состоянии соединения обработать:

В следующем списке описано, как NCSI может связываться с веб-сайтом, чтобы определить, имеет ли сеть подключение к Интернету:

  1. Запрос на разрешение имен DNS dns.msftncsi.com

  2. Запрос HTTP для http://www.msftncsi.com/ncsi.txtвозвращение 200 OK и текст Microsoft NCSI

Это можно отключить с помощью параметра реестра. Если вы установили

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

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

Apple делает что-то очень похожее в iOS, чтобы обнаружить подключение к Интернету и возможные гостевые «WiFi» страницы входа и т. Д.


68
2018-05-02 10:51



Более новые (я думаю, Gingerbread и новее ...) версии Android тоже делают это ... они покажут значок Wi-Fi в белом, если они смогут подключиться к сети, и он станет зеленым, если он ударит по некоторым Google стр. Идея этого - то же самое. - TM.
разжег делает это также, как-то. Когда я подключился к Wi-Fi, он уведомил меня, что мне нужно открыть браузер и принять условия использования. Мне было интересно, как это произошло. - Kortuk
Так что если msftncsi.com упал, каждый компьютер Windows 7 не смог бы показать онлайн-сигнал? Это гениально! - liamzebedee


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

  1. DNS-запрос на сервер
  2. HTTP-запрос для известного контента

В дополнение к ответу Джеффа, я подозреваю:

3. Если HTTP-запрос перенаправляется на внешнюю Microsoft (или не возвращает ожидаемый контент), покажите сообщение на скриншоте.


8
2018-05-02 12:29





Для соединения, требующего дополнительной информации о регистрации, более вероятно определяется с помощью шага разрешения DNS, упомянутого Jeff, со следующими тремя сценариями:

  • Если система разрешает правильный адрес, соединение становится понятным. (Подключение к Интернету)
  • Если система решает dns-запрос, но не является правильным адресом, тогда существует перенаправление (возможный регистрационный журнал добавления)
  • Если система не разрешает запрос DNS, возникают проблемы с подключением к Интернету (соединение устанавливается в сеть / точку доступа, но без подключения к Интернету)

Я предполагаю, что запрос на:

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

это быстрый способ проверить, все ли соединение с Интернетом. После этого выполняются запросы DNS, чтобы определить полный статус соединения.


3
2018-05-04 23:16