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


No Windows 7, o ícone de rede da área de notificação mostrará um indicador de erro se não houver acesso à Internet wifi-err, e o ícone de erro desaparece quando existe uma conexão bem-sucedida à Internet networking normal. À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: additional log on information may be required, click to open your browser

Como o Windows sabe se tem ou não uma conexão com a Internet bem-sucedida?
 Presumivelmente, ele está verificando algum serviço online da Microsoft para ver se ele tem uma conexão bem-sucedida, é redirecionado para alguma outra página ou não obtém resposta alguma, mas não vi em nenhum lugar que esse processo ou os serviços usados ​​foram documentados. . Alguém pode explicar como isso funciona? Eu prefiro respostas que se referem a fatos, ao invés de apenas adivinhar, mas se você tem um muito bom acho, então vá em frente.

Esta questão foi uma Pergunta de super usuário da semana.
  Leia o 16 de maio de 2011 entrada de blog para mais detalhes ou envie seu próprio Pergunta da semana.


130


origem


Se fosse para verificar um serviço da Microsoft, como ele passaria pela etapa de ativação no navegador? Ou eu estou te entendendo mal? (+1 btw, questão interessante) - slhck
@slhck: Esse é o objetivo da verificação: se não puder acessar o serviço corretamente, mas sua tentativa ficar alguns resposta, presume-se que pode haver uma etapa no navegador. Se não houver resposta em todos, assume que há apenas acesso local. Só não sei como exatamente esse processo funciona. Eu atualizei minha pergunta para ser um pouco mais clara (espero). - nhinkle♦
@nhinkle Não tenho um PC com Windows, mas talvez alguém possa disparar o Wireshark para ver o que a máquina realmente faz nesse caso. - slhck
Quando o indicador de erro disser que não há acesso à Internet, abra o solucionador de problemas de rede. Enquanto a solução de problemas é executada, você pode ver claramente uma etapa "Tentando se conectar ao Microsoft.com". Então, meu palpite é que ele usa um serviço. - Mayank


Respostas:


Depois de algumas escavações (o grande 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 seu arquivo de teste está hospedado, e mesmo que ele não alcance o arquivo real, porque o tráfego HTTP é redirecionado para o servidor de autenticação.

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


89



Um ponto de acesso teria que permitir o DNS, caso contrário, qualquer tentativa de acessar um servidor pelo nome do host (em vez de pelo endereço IP) falharia com um erro do tipo "impossível resolver o endereço". Dependendo da configuração do ponto de acesso, ele pode resolver todos os nomes para o endereço de seu servidor de autenticação ou pode resolver os nomes corretamente e depende exclusivamente do redirecionamento de conexões http (s) para o servidor de autenticação. A parte do DNS das verificações descritas no documento desejado é verificar se o dns.msftncsi.com resolve o endereço correto, e não se ele resolve tudo. - Dave Sherohman
Isso é de fato correto. Eu atualizei a resposta para refletir isso. - Tobias Plutat
Impressionante encontrar e boa descrição de como funciona! Se não aparecerem melhores respostas, haverá uma recompensa em breve. - nhinkle♦
Também diz No Internet access se você está por trás de um proxy;) - Oscar Mederos
Não duvido que isso seja mais correto, mas parece incompleto. Às vezes, você terá um problema com o DNS e o ícone de conectividade mostrará um pop-up indicando que você tem acesso à Internet, mas que o DNS está falhando. Eu acho que deve haver um passo antes do passo 1 (ou possivelmente após o passo 1) que é que ele tenta resolver o DNS. Se isso for bem-sucedido (mas a página não for carregada), você receberá a mensagem de erro DNS. - krowe2


Aqui estão os detalhes da determinação do status de conexão processo:

A lista a seguir descreve como o NCSI pode se comunicar com um site para determinar se uma rede tem conectividade com a Internet:

  1. Uma solicitação para a resolução do nome DNS de dns.msftncsi.com

  2. Uma solicitação HTTP para http://www.msftncsi.com/ncsi.txtretornando 200 OK e o texto Microsoft NCSI

Isso pode ser desativado com uma configuração do Registro. Se você definir

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

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

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


68



As versões mais recentes (acho que Gingerbread e mais recentes ...) do Android fazem isso também ... elas mostram o ícone do Wi-Fi em branco se puderem se conectar à rede, e ele ficará verde se conseguir acertar em algum host do Google página. A ideia por trás disso é a mesma. - TM.
o Kindle faz isso também, de alguma forma. Quando me conectei ao wifi ele me avisou que eu precisava abrir meu navegador e aceitar os termos de uso. Eu estava me perguntando como isso aconteceu também. - Kortuk
Então se msftncsi.com caiu, todos os computadores Windows 7 não seriam capazes de mostrar um sinal online? Isso é gênio! - liamzebedee


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

  1. Solicitação de DNS ao servidor
  2. Solicitação HTTP para conteúdo conhecido

Além da resposta de Jeff, suspeito:

3 Se a solicitação HTTP for redirecionada para uma Microsoft externa (ou não retornar o conteúdo esperado), mostre a mensagem na captura de tela.


8





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á um redirecionamento (possível informação de logon de adição necessária)
  • 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 o pedido 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.


3