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

132

No Windows 7, o ícone de rede da área de notificação exibirá um indicador de erro se não houver acesso à Internet wifi-err, e o ícone de erro desaparecerá assim que houver uma conexão bem-sucedida à Internet rede 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, o seguinte balão pop-up aparecerá, dizendo o seguinte: informações adicionais de logon podem ser necessárias, clique para abrir o navegador

Como o Windows sabe se possui ou não uma conexão com a Internet bem-sucedida?
Presumivelmente, ele está verificando algum serviço online da Microsoft para ver se possui uma conexão bem-sucedida, é redirecionado para outra página ou não recebe nenhuma resposta, mas não vi em nenhum lugar que esse processo ou os serviços usados ​​estejam documentados . Alguém pode explicar como isso funciona? Eu preferiria respostas que se referem a fatos, em vez de apenas adivinhar, mas se você tem um palpite muito bom , faça isso.

Esta pergunta foi uma pergunta da semana para superusuários .
Leia a entrada do blog em 16 de maio de 2011 para obter mais detalhes ou envie sua própria pergunta da semana.

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

Respostas:

91

Depois de algumas pesquisas (o grande número de serviços relacionados à rede e à Internet no Windows é surpreendente), acho que encontrei. O Windows Vista e 7 têm vários 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 da bandeja de rede. O teste para conectividade à 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 der certo, o Windows reportará "Sem acesso à Internet".

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

O motivo pelo qual ele informa "Sem acesso à Internet" quando você ainda não se autenticou em um ponto de acesso está na maneira como ele funciona. Ele bloqueia todas as portas além das 80 e 443 (para HTTP e HTTPS, respectivamente), que são redirecionadas para o servidor de autenticação do Hotspot e podem interferir nas solicitações de DNS de uma maneira ou de outra. Portanto, o NCSI não pode resolver o domínio no qual o arquivo de teste está hospedado e, mesmo que não possa alcançar o arquivo real, porque o tráfego HTTP é redirecionado para o servidor de autenticação.

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

Tobias Plutat
fonte
13
Um ponto de acesso precisaria permitir o DNS, caso contrário, qualquer tentativa de acessar um servidor pelo nome do host (e não pelo endereço IP) falharia com um erro do tipo "incapaz de resolver o endereço". Dependendo da configuração do ponto de acesso, ele pode resolver todos os nomes para o endereço do servidor de autenticação ou pode resolver os nomes corretamente e depender apenas do redirecionamento de conexões http (s) para o servidor de autenticação. A parte DNS das verificações descritas no documento desejado é verificar se o dns.msftncsi.com resolve para o endereço correto, e não para resolver.
Dave Sherohman
1
Isso é realmente correto. Eu atualizei a resposta para refletir isso.
Tobias Plutat 2/11/11
Achado impressionante e boa descrição de como funciona! Se não houver respostas melhores, haverá uma recompensa em breve.
Nhinkle
Ele também diz que No Internet accessse você está atrás de um proxy;)
Oscar Mederos
1
Não duvido que isso esteja correto, mas parece incompleto. Às vezes, você tem um problema com o DNS e o ícone de conectividade mostra um pop-up que indica que você tem acesso à Internet, mas que o DNS está falhando. Eu acho que deve haver uma etapa antes da etapa 1 (ou possivelmente após a etapa 1), que é tentar resolver o DNS. Se isso tiver êxito (mas a página não carregar), você receberá a mensagem de erro DNS.
precisa saber é o seguinte
69

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

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 resolução de nomes DNS de dns.msftncsi.com

  2. Uma solicitação HTTP para http://www.msftncsi.com/ncsi.txtretornar 200 OK e o textoMicrosoft 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 procurará mais conectividade com a Internet.

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

Jeff Atwood
fonte
1
As versões mais recentes (acho que o Gingerbread e as mais recentes ...) do Android também fazem isso ... elas mostrarão o ícone do wifi em branco se puderem se conectar à rede e ele ficará verde se conseguir acessar alguns sites hospedados pelo Google página. A idéia por trás disso é a mesma.
TM.
o kindle faz isso também, de alguma forma. Quando me conectei ao wifi, ele me notificou que precisava abrir o navegador e aceitar os termos de uso. Eu queria saber como isso aconteceu também.
Kortuk
3
Portanto, se o msftncsi.com fosse desativado, todos os computadores com Windows 7 não seriam capazes de mostrar um sinal online? Isso é genial!
Liamzebedee 18/05
8

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

  1. Solicitação de DNS para o 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 sua captura de tela.

Macke
fonte
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:

  • Se o sistema resolver o endereço correto, a conexão estará 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íveis informações de logon adicional necessárias)
  • Se o sistema não resolver uma solicitação de DNS, há problemas de conectividade com a Internet (conexão estabelecida com a rede / ponto de acesso, mas sem conectividade com a Internet)

Presumo que o pedido de:

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

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

James Mertz
fonte