Skąd system Windows wie, czy ma dostęp do Internetu, czy połączenie Wi-Fi wymaga uwierzytelnienia w przeglądarce?

132

W systemie Windows 7 ikona sieci w obszarze powiadomień pokaże wskaźnik błędu, jeśli nie ma dostępu do Internetu wifi-err, a ikona błędu zniknie po udanym połączeniu z Internetem sieć normalna. Czasami, jeśli połączenie Wi-Fi wymaga kroku uwierzytelniania w przeglądarce, jak w wielu sieciach gości w hotelach lub na uniwersytetach, pojawia się następujący wyskakujący okienko z napisem: mogą być wymagane dodatkowe informacje dotyczące logowania, kliknij, aby otworzyć przeglądarkę

Skąd system Windows wie, czy ma udane połączenie internetowe?
Prawdopodobnie sprawdza jakąś internetową usługę Microsoft, aby sprawdzić, czy ma udane połączenie, zostaje przekierowany na inną stronę lub nie otrzymuje żadnej odpowiedzi, ale nigdzie nie widziałem, aby ten proces lub używane usługi były udokumentowane . Czy ktoś może wyjaśnić, jak to działa? Wolałbym odpowiedzi odnoszące się do faktów, a nie tylko zgadywania, ale jeśli masz naprawdę dobre domysły, to idź.

To pytanie było pytaniem superużytkownika tygodnia .
Przeczytaj wpis na blogu z 16 maja 2011 r., Aby uzyskać więcej informacji, lub prześlij własne pytanie tygodnia.

nhinkle
źródło
1
Gdyby miał sprawdzić usługę Microsoft, w jaki sposób przejdzie ona przez etap aktywacji w przeglądarce? A może źle cię rozumiem? (+1 btw, ciekawe pytanie)
slhck
@slhck: Właśnie o to chodzi: jeśli nie może uzyskać prawidłowego dostępu do usługi, ale jej próba otrzymuje pewną odpowiedź, zakłada, że ​​może to być krok w przeglądarce. Jeśli nie ma odpowiedzi na wszystko , zakłada nie tylko lokalny dostęp. Po prostu nie jestem pewien, jak dokładnie ten proces działa. Zaktualizowałem moje pytanie, aby było bardziej jasne (mam nadzieję).
nhinkle
@nhinkle Nie mam komputera z systemem Windows, ale może ktoś może odpalić Wireshark, aby zobaczyć, co faktycznie robi maszyna w takim przypadku.
slhck
Gdy wskaźnik błędu mówi, że nie ma dostępu do Internetu, otwórz narzędzie do rozwiązywania problemów z siecią. Podczas działania narzędzia do rozwiązywania problemów wyraźnie widać krok „Próba połączenia z Microsoft.com”. Domyślam się, że korzysta z usługi.
Mayank

Odpowiedzi:

91

Po pewnym kopaniu (sama liczba usług sieciowych i internetowych w systemie Windows jest zdumiewająca), myślę, że ją znalazłem. Systemy Windows Vista i 7 mają wiele funkcji rozpoznawania sieci, z których jedną jest Wskaźnik stanu łączności sieciowej, który wykonuje testy łączności, które z kolei są używane przez ikonę systemu sieciowego. Test łączności z Internetem jest prosty:

  1. NCSI próbuje załadować określoną stronę przez HTTP (a dokładniej: dokument tekstowy) i sprawdza, czy można ją odzyskać.
  2. Jeśli to się nie powiedzie, system Windows zgłasza komunikat „Brak dostępu do Internetu”.

Mechanizm sprawdza również, czy domena, na której znajduje się dokument, rozpoznaje oczekiwany adres IP. Może więc również zakładać odpowiedni dostęp do Internetu, jeśli test się powiedzie, ale dokumentu nie można odzyskać.

Powód, dla którego zgłasza „Brak dostępu do Internetu”, gdy nie został jeszcze uwierzytelniony w Hotspocie, leży w sposobie działania Hotspot. Blokuje wszystkie porty oprócz 80 i 443 (odpowiednio dla HTTP i HTTPS), które są przekierowywane do serwera uwierzytelniającego Hotspot i mogą w ten czy inny sposób zadzierać z żądaniami DNS. W ten sposób NCSI nie może rozwiązać domeny, na której znajduje się plik testowy, a nawet gdyby nie mógł, nie dotarłby do rzeczywistego pliku, ponieważ ruch HTTP jest przekierowywany do serwera uwierzytelniania.

Źródło: http://technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx

Tobias Plutat
źródło
13
Punkt aktywny musiałby zezwalać na DNS, w przeciwnym razie próba uzyskania dostępu do serwera za pomocą nazwy hosta (a nie adresu IP) zakończy się niepowodzeniem z błędem typu „nie można rozwiązać adresu”. W zależności od konfiguracji hotspotu może rozwiązać wszystkie nazwy na adres swojego serwera uwierzytelniania lub może poprawnie rozwiązać nazwy i polegać wyłącznie na przekierowaniu połączeń http (s) na serwer uwierzytelniania. Część kontroli DNS opisana w polubionym dokumencie ma na celu sprawdzenie, czy dns.msftncsi.com rozpoznaje poprawny adres, a nie czy w ogóle.
Dave Sherohman
1
To jest rzeczywiście poprawne. Zaktualizowałem odpowiedź, aby to odzwierciedlić.
Tobias Plutat
Niesamowite znalezisko i dobry opis tego, jak to działa! Jeśli nie pojawią się lepsze odpowiedzi, wkrótce otrzymasz nagrodę.
nhinkle
Mówi także, No Internet accessjeśli masz za sobą pełnomocnika;)
Oscar Mederos,
1
Nie wątpię, że jest to w większości poprawne, ale wydaje się niepełne. Czasami wystąpi problem z DNS, a ikona łączności wyświetli wyskakujące okienko wskazujące, że masz dostęp do Internetu, ale DNS nie działa. Myślę, że musi być krok przed krokiem 1 (lub ewentualnie po kroku 1), czyli próba rozwiązania DNS. Jeśli to się powiedzie (ale strona się nie ładuje), zamiast tego pojawia się komunikat o błędzie DNS.
krowe2
69

Oto szczegóły procesu określania statusu połączenia :

Poniższa lista opisuje, w jaki sposób NCSI może komunikować się z witryną sieci Web w celu ustalenia, czy sieć ma połączenie z Internetem:

  1. Żądanie rozpoznania nazwy DNS z dns.msftncsi.com

  2. Żądanie HTTP o http://www.msftncsi.com/ncsi.txtzwrócenie 200 OK i tekstuMicrosoft NCSI

Można to wyłączyć za pomocą ustawienia rejestru. Jeśli ustawisz

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

aby 0system Windows nie sondować dla łączności internetowej.

Apple robi coś bardzo podobnego w iOS, aby wykryć łączność z Internetem i możliwe strony logowania do hotelu, itp.

Jeff Atwood
źródło
1
Nowsze (myślę, że Gingerbread i nowsze ...) wersje Androida również to robią ... pokażą ikonę Wi-Fi na biało, jeśli mogą połączyć się z siecią, a zmieni kolor na zielony, jeśli trafi na niektóre hostowane przez Google strona. Pomysł jest taki sam.
TM.
rozpał też to robi, jakoś. Kiedy podłączyłem się do Wi-Fi, powiadomiło mnie, że muszę otworzyć przeglądarkę i zaakceptować warunki użytkowania. Zastanawiałem się, jak do tego doszło.
Kortuk
3
Więc jeśli msftncsi.com ulegnie awarii, każdy komputer z systemem Windows 7 nie będzie w stanie pokazać sygnału online? To geniusz!
liamzebedee
8

Jak powiedział Jeff, aby wykryć połączenie z Internetem, system Windows wykona:

  1. Żądanie DNS do serwera
  2. Żądanie HTTP dla znanej treści

Oprócz odpowiedzi Jeffa podejrzewam:

3) Jeśli żądanie HTTP zostanie przekierowane do zewnętrznego Microsoft (lub nie zwróci oczekiwanej treści), pokaż wiadomość na zrzucie ekranu.

Macke
źródło
3

W przypadku połączenia, które wymaga dodatkowych informacji o logowaniu, bardziej prawdopodobne jest określenie kroku rozpoznawania DNS wspomnianego przez Jeffa z następującymi trzema scenariuszami:

  • Jeśli system rozpozna poprawny adres, połączenie jest czyste. (Łączność z Internetem)
  • Jeśli system rozpoznaje żądanie dns, ale nie ma poprawnego adresu, oznacza to, że następuje przekierowanie (możliwe dodatkowe informacje o logowaniu)
  • Jeśli system nie rozpoznaje żądania dns, występują problemy z połączeniem internetowym (nawiązanie połączenia z siecią / punktem dostępu, ale brak połączenia z Internetem)

Zakładam, że wniosek o:

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

to szybki sposób na sprawdzenie, czy połączenie z Internetem jest czyste. Następnie uruchamiane są żądania dns w celu ustalenia pełnego statusu połączenia.

James Mertz
źródło