Como o Windows sabe se tem acesso à Internet ou se uma conexão Wi-Fi requer autenticação no navegador?

130

No Windows 7, o ícone de rede da área de notificação mostrará um indicador de erro se não houver acesso à Internet eoíconedeerrodesaparecequandoexisteumaconexãobem-sucedidaàInternet. Às vezes, se a conexão WiFi exigir uma etapa de autenticação no navegador, como em muitas redes de convidados em hotéis ou universidades, a seguinte bolha pop-up aparece, dizendo o seguinte:

ComooWindowssabesetemounãoumaconexãocomaInternetbem-sucedida?
Presumivelmente,estáverificandoalgumserviçoMicrosoftonlineparaverseeletemumaconexãobem-sucedida,redirecionadoparaoutrapágina,ounãoreceberespostaalguma,maseunãoviemnenhumlugarqueesteprocessoouosserviçosutilizadosestãodocumentados.Alguémpodeexplicarcomoissofunciona?Euprefeririarespostasquesereferemafatos,emvezdeapenasadivinhar,massevocêtiverumpalpiterealmentebom,váemfrente.

ThisquestionwasaSuper User Question of the Week.
Read the May 16th, 2011 blog entry for more details or submit your own Question of the Week.

    
por nhinkle 02.05.2011 / 09:50

4 respostas

89

Após algumas pesquisas (o incrível número de serviços relacionados à rede e à Internet no Windows é surpreendente), acho que o encontrei. O Windows Vista e o 7 têm uma variedade de recursos de reconhecimento de rede, um dos quais é o indicador de status de conectividade de rede que executa testes de conectividade que, por sua vez, são usados pelo ícone systray da rede. O teste para conectividade com a Internet é simples:

  1. O NCSI tenta carregar uma página específica via HTTP (mais precisamente: um documento de texto) e testa se ela pode ser recuperada.
  2. Se isso não for bem-sucedido, o Windows reportará "Sem acesso à Internet".

O mecanismo também verifica se o domínio no qual o documento está hospedado é resolvido para o endereço IP esperado. Assim, também pode assumir o acesso à Internet adequado se esse teste for bem-sucedido, mas o documento não puder ser recuperado.

A razão pela qual ele relata "Sem acesso à Internet" quando você não autenticou em um Hotspot ainda está na maneira como um Hotspot funciona. Ele bloqueia todas as portas além de 80 e 443 (para HTTP e HTTPS, respectivamente), que são redirecionadas para o servidor de autenticação do Hotspot e podem mexer com solicitações de DNS de uma forma ou de outra. Assim, o NCSI não pode resolver o domínio no qual o arquivo de teste está hospedado e, mesmo que pudesse, não alcançaria o arquivo real porque o tráfego HTTP é redirecionado para o servidor de autenticação.

Fonte: link

    
por 02.05.2011 / 12:00
68

Veja os detalhes da determinação do status da conexão processo :

The following list describes how NCSI might communicate with a Web site to determine whether a network has Internet connectivity:

  1. A request for DNS name resolution of dns.msftncsi.com

  2. A HTTP request for http://www.msftncsi.com/ncsi.txt returning 200 OK and the text Microsoft NCSI

Isso pode ser desativado com uma configuração de registro. Se você definir

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

para 0 , o Windows não precisará mais investigar a conectividade com a Internet.

A Apple faz algo muito semelhante no iOS para detectar a conectividade com a Internet e as possíveis páginas de "login" de wifi do hotel, etc.

    
por 02.05.2011 / 12:51
8

Como Jeff disse, para detectar uma conexão com a Internet, o Windows fará:

  1. DNS request to server
  2. HTTP request for known content

Além da resposta de Jeff, suspeito:

3 . If HTTP request is redirected to a outside Microsoft (or doesn't return the expected content), show the message in your screenshot.

    
por 02.05.2011 / 14:29
3

Para uma conexão que requer informações adicionais de logon, é mais provável que seja determinada pela etapa de resolução de DNS mencionada por Jeff, com os três cenários a seguir ocorrendo:

  • Se o sistema resolver o endereço correto, a conexão estará totalmente limpa. (Conectividade com a Internet)
  • Se o sistema resolver uma solicitação de DNS, mas não for o endereço correto, haverá uma reorientação (possíveis informações de logon de adição necessárias)
  • Se o sistema não resolver uma solicitação de DNS, haverá problemas de conectividade com a Internet (estabelecer conexão com ponto de acesso / rede, mas sem conectividade com a Internet)

Eu suponho que a solicitação para:

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

é uma maneira rápida de testar se a conexão com a Internet está clara. Depois disso, as solicitações de dns são executadas para determinar o status completo da conexão.

    
por 05.05.2011 / 01:16