Come fa Windows a sapere se ha accesso a Internet o se una connessione Wi-Fi richiede l'autenticazione nel browser?


132

In Windows 7, l'icona di rete dell'area di notifica mostrerà un indicatore di errore se non c'è accesso a Internet WiFi-erre l'icona di errore scompare una volta stabilita una connessione a Internet rete normale. A volte, se la connessione WiFi richiede un passaggio di autenticazione nel browser, come su molte reti di ospiti in hotel o università, appare la seguente bolla pop-up, che dice altrettanto: potrebbero essere necessarie ulteriori informazioni di accesso, fare clic per aprire il browser

Come fa Windows a sapere se ha una connessione Internet corretta?
Presumibilmente sta controllando alcuni servizi Microsoft online per vedere se ha una connessione riuscita, viene reindirizzato a un'altra pagina o non riceve alcuna risposta, ma non ho visto da nessuna parte che questo processo o i servizi utilizzati sono documentati . Qualcuno può spiegare come funziona? Preferirei le risposte che si riferiscono ai fatti, piuttosto che indovinare, ma se hai una supposizione davvero buona , allora provaci.

Questa domanda era una domanda super utente della settimana .
Leggi il post del blog del 16 maggio 2011 per maggiori dettagli o invia la tua domanda della settimana.


1
Se dovesse controllare un servizio Microsoft, come supererebbe il passaggio di attivazione nel browser? O ti sto fraintendendo? (+1 a proposito, domanda interessante)
slhck

@slhck: è questo il punto del controllo: se non riesce ad accedere correttamente al servizio, ma il suo tentativo ottiene una risposta, presume che potrebbe esserci un passaggio nel browser. Se non c'è risposta a tutto , assume c'è l'accesso solo locale. Non sono sicuro di come funzioni esattamente questo processo. Ho aggiornato la mia domanda per essere un po 'più chiara (si spera).
nhinkle

@ninkink Non ho un PC Windows ma forse qualcuno può accendere Wireshark per vedere cosa fa effettivamente la macchina in questo caso.
slhck,

Quando l'indicatore di errore indica che non è possibile accedere a Internet, aprire lo strumento di risoluzione dei problemi di rete. Mentre lo strumento di risoluzione dei problemi è in esecuzione, puoi vedere chiaramente un passaggio "Tentativo di connessione a Microsoft.com". Quindi la mia ipotesi è che utilizza un servizio.
Mayank

Risposte:


91

Dopo alcuni scavi (il numero incredibile di servizi di rete e Internet in Windows è sorprendente), penso di averlo trovato. Windows Vista e 7 hanno una varietà di funzionalità di Network Awareness, una delle quali è l'indicatore di stato della connettività di rete che esegue test di connettività che a loro volta vengono utilizzati dall'icona del systray di rete. Il test per la connettività Internet è semplice:

  1. NCSI tenta di caricare una pagina specifica via HTTP (più precisamente: un documento di testo) e verifica se può essere recuperata.
  2. Se ciò non ha esito positivo, Windows segnala "Nessun accesso a Internet".

Il meccanismo controlla anche se il dominio su cui è ospitato il documento si risolve all'indirizzo IP previsto. Pertanto, potrebbe anche assumere un corretto accesso a Internet se questo test ha esito positivo ma il documento non può essere recuperato.

Il motivo per cui viene segnalato "Nessun accesso a Internet" quando non si è ancora autenticati su un hotspot sta nel modo in cui funziona un hotspot. Blocca tutte le porte oltre a 80 e 443 (rispettivamente per HTTP e HTTPS), che vengono reindirizzate al server di autenticazione dell'hotspot e potrebbero interferire con le richieste DNS in un modo o nell'altro. Pertanto, NCSI non è in grado di risolvere il dominio su cui è ospitato il file di test e, anche se potesse, non raggiungerebbe il file effettivo poiché il traffico HTTP viene reindirizzato al server di autenticazione.

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


13
Un hotspot dovrebbe consentire il DNS, altrimenti qualsiasi tentativo di accedere a un server per nome host (anziché per indirizzo IP) fallirebbe con un errore di tipo "impossibile risolvere l'indirizzo". A seconda della configurazione dell'hotspot, potrebbe risolvere tutti i nomi all'indirizzo del proprio server di autenticazione oppure risolvere correttamente i nomi e fare affidamento esclusivamente sul reindirizzamento delle connessioni http (s) al server di autenticazione. La parte DNS dei controlli descritti nel documento apprezzato è quella di verificare che dns.msftncsi.com si risolva all'indirizzo corretto, non se si risolve affatto.
Dave Sherohman,

1
Questo è davvero corretto. Ho aggiornato la risposta per riflettere questo.
Tobias Plutat,

Fantastica scoperta e buona descrizione di come funziona! Se non vengono visualizzate risposte migliori, presto riceverai una taglia.
nhinkle

Dice anche No Internet accessse sei dietro una delega;)
Oscar Mederos,

1
Non dubito che ciò sia per lo più corretto ma sembra essere incompleto. A volte, avrai un problema con DNS e l'icona di connettività mostrerà un popup che indica che hai accesso a Internet ma che il DNS sta fallendo. Penso che ci debba essere un passaggio prima del passaggio 1 (o eventualmente dopo il passaggio 1) che consiste nel provare a risolvere il DNS. Se ciò ha esito positivo (ma la pagina non viene caricata), viene visualizzato invece il messaggio di errore DNS.
krowe2,

69

Ecco i dettagli del processo di determinazione dello stato della connessione :

L'elenco seguente descrive come NCSI potrebbe comunicare con un sito Web per determinare se una rete dispone di connettività Internet:

  1. Una richiesta per la risoluzione dei nomi DNS di dns.msftncsi.com

  2. Una richiesta HTTP per la http://www.msftncsi.com/ncsi.txtrestituzione di 200 OK e il testoMicrosoft NCSI

Questo può essere disabilitato con un'impostazione del registro. Se hai impostato

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

a 0, Windows non esaminerà più la connettività Internet.

Apple fa qualcosa di molto simile in iOS per rilevare la connettività Internet e le possibili pagine wifi di "login" dell'hotel, ecc.


1
Anche le versioni più recenti (penso che Gingerbread e le versioni più recenti ...) di Android facciano questo ... mostreranno l'icona wifi in bianco se possono connettersi alla rete e diventerà verde se può colpire alcuni ospitati su google pagina. L'idea alla base è la stessa.
TM.

anche il kindle fa questo, in qualche modo. Quando mi sono connesso al wifi mi ha notificato che avevo bisogno di aprire il mio browser e accettare i termini di utilizzo. Mi chiedevo come fosse successo anche questo.
Kortuk,

3
Quindi se msftncsi.com non funzionasse, ogni computer Windows 7 non sarebbe in grado di mostrare un segnale online? Questo è genio!
liamzebedee,

8

Come ha detto Jeff, per rilevare una connessione Internet, Windows farà:

  1. Richiesta DNS al server
  2. Richiesta HTTP per contenuti noti

Oltre alla risposta di Jeff, sospetto:

3 Se la richiesta HTTP viene reindirizzata a una Microsoft esterna (o non restituisce il contenuto previsto), mostra il messaggio nello screenshot.


3

Per una connessione che richiede ulteriori informazioni di accesso, è più probabile che venga determinata attraverso la fase di risoluzione DNS menzionata da Jeff con i seguenti tre scenari:

  • Se il sistema risolve l'indirizzo corretto, la connessione è completamente chiara. (Connettività Internet)
  • Se il sistema risolve una richiesta DNS ma non è l'indirizzo corretto, allora c'è un reindirizzamento (sono necessarie ulteriori informazioni di accesso)
  • Se il sistema non risolve una richiesta DNS, ci sono problemi di connettività Internet (la connessione viene stabilita con la rete / punto di accesso ma nessuna connettività Internet)

Presumo che la richiesta di:

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

è un modo rapido per verificare se la connessione a Internet è chiara. Successivamente, vengono eseguite le richieste DNS per determinare lo stato completo della connessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.