¿Cómo sabe Windows si tiene acceso a Internet o si una conexión Wi-Fi requiere autenticación en el navegador?

132

En Windows 7, el icono de red del área de notificación mostrará un indicador de error si no hay acceso a Internet wifi-err, y el icono de error desaparecerá una vez que haya una conexión exitosa a Internet redes normales. A veces, si la conexión WiFi requiere un paso de autenticación en el navegador, como en muchas redes de huéspedes en hoteles o universidades, aparece la siguiente burbuja emergente, que dice lo siguiente: es posible que se requiera información de inicio de sesión adicional, haga clic para abrir su navegador

¿Cómo sabe Windows si tiene o no una conexión a Internet exitosa?
Presumiblemente, está verificando algún servicio de Microsoft en línea para ver si tiene una conexión exitosa, si se lo redirige a otra página o si no recibe ninguna respuesta, pero no he visto en ninguna parte que este proceso o los servicios utilizados estén documentados. . ¿Alguien puede explicar cómo funciona esto? Preferiría respuestas que se refieran a hechos, en lugar de solo adivinar, pero si tienes una buena suposición, entonces adelante.

Esta pregunta fue una pregunta de superusuario de la semana .
Lea la entrada del blog del 16 de mayo de 2011 para obtener más detalles o envíe su propia Pregunta de la semana.

nhinkle
fuente
1
Si fuera a verificar un servicio de Microsoft, ¿cómo pasaría el paso de activación en el navegador? ¿O te estoy malentendiendo? (+1 por cierto, pregunta interesante)
slhck
@slhck: Ese es el punto de verificar: si no puede acceder al servicio correctamente, pero su intento obtiene alguna respuesta, se supone que podría haber un paso en el navegador. Si no hay respuesta en todo , se supone que hay sólo el acceso local. No estoy seguro de cómo funciona exactamente ese proceso. He actualizado mi pregunta para que sea un poco más clara (con suerte).
nhinkle
@nhinkle No tengo una PC con Windows, pero tal vez alguien pueda encender Wireshark para ver qué hace realmente la máquina en tal caso.
slhck
Cuando el indicador de error dice que no hay acceso a Internet, abra el solucionador de problemas de red. Mientras se ejecuta el solucionador de problemas, puede ver claramente el paso "Intentar conectarse a Microsoft.com". Entonces supongo que usa un servicio.
Mayank

Respuestas:

91

Después de investigar un poco (la gran cantidad de servicios relacionados con Internet y la red en Windows es sorprendente), creo que lo encontré. Windows Vista y 7 tienen una variedad de características de Conciencia de red, una de las cuales es el Indicador de estado de conectividad de red que realiza pruebas de conectividad que a su vez son utilizadas por el icono de la bandeja del sistema de red. La prueba de conectividad a internet es simple:

  1. NCSI intenta cargar una página específica a través de HTTP (más precisamente: un documento de texto) y prueba si se puede recuperar.
  2. Si eso no tiene éxito, Windows informa "Sin acceso a Internet".

El mecanismo también verifica si el dominio en el que está alojado el documento se resuelve en la dirección IP esperada. Por lo tanto, también podría suponer un acceso a Internet adecuado si esta prueba es exitosa pero el documento no se puede recuperar.

La razón por la que informa "Sin acceso a Internet" cuando aún no se ha autenticado en un Hotspot radica en la forma en que funciona un Hotspot. Bloquea todos los puertos además de 80 y 443 (para HTTP y HTTPS, respectivamente), que se redirigen al servidor de autenticación del Hotspot y pueden interferir con las solicitudes de DNS de una forma u otra. Por lo tanto, NCSI no puede resolver el dominio en el que está alojado su archivo de prueba, e incluso si pudiera, no alcanzaría el archivo real porque el tráfico HTTP se redirige al servidor de autenticación.

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

Tobias Plutat
fuente
13
Un punto de acceso tendría que permitir DNS, de lo contrario, cualquier intento de acceder a un servidor por nombre de host (en lugar de por dirección IP) fallaría con un error de tipo "no se puede resolver la dirección". Dependiendo de la configuración del punto de acceso, puede resolver todos los nombres a la dirección de su servidor de autenticación o puede resolver los nombres correctamente y depender únicamente de la redirección de las conexiones http al servidor de autenticación. La parte DNS de las comprobaciones descritas en el documento que le gusta es verificar que dns.msftncsi.com se resuelva en la dirección correcta, no si se resuelve en absoluto.
Dave Sherohman
1
Eso es realmente correcto. Actualicé la respuesta para reflejar eso.
Tobias Plutat
¡Impresionante hallazgo y buena descripción de cómo funciona! Si no aparecen mejores respuestas, pronto habrá una recompensa.
nhinkle
También dice No Internet accesssi estás detrás de un proxy;)
Oscar Mederos
1
No dudo que esto es correcto en su mayoría, pero parece ser incompleto. A veces, tendrá un problema con DNS y el icono de conectividad mostrará una ventana emergente que indica que tiene acceso a Internet pero que DNS está fallando. Creo que debe haber un paso antes del paso 1 (o posiblemente después del paso 1) que es que intenta resolver el DNS. Si eso tiene éxito (pero la página no se carga), recibirá el mensaje de error DNS.
krowe2
69

Aquí están los detalles del proceso de determinación del estado de la conexión :

La siguiente lista describe cómo NCSI podría comunicarse con un sitio web para determinar si una red tiene conectividad a Internet:

  1. Una solicitud de resolución de nombre DNS de dns.msftncsi.com

  2. Una solicitud HTTP para http://www.msftncsi.com/ncsi.txtdevolver 200 OK y el textoMicrosoft NCSI

Esto se puede deshabilitar con una configuración de registro. Si establece

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

a 0, Windows ya no buscará conectividad a Internet.

Apple hace algo muy similar en iOS para detectar conectividad a Internet y posibles páginas wifi de "inicio de sesión" del hotel, etc.

Jeff Atwood
fuente
1
Las versiones más nuevas (creo que Gingerbread y más nuevas ...) de Android también hacen esto ... mostrarán el ícono de wifi en blanco si pueden conectarse a la red, y se volverá verde si puede llegar a algún servidor alojado en Google página. La idea detrás de esto es la misma.
TM.
el kindle hace esto también, de alguna manera. Cuando me conecté a wifi, me notificó que necesitaba abrir mi navegador y aceptar los términos de uso. Me preguntaba cómo sucedió esto también.
Kortuk
3
Entonces, si msftncsi.com se cae, ¿todas las computadoras con Windows 7 no podrían mostrar una señal en línea? Eso es genial!
liamzebedee
8

Como dijo Jeff, para detectar una conexión a Internet, Windows hará:

  1. Solicitud de DNS al servidor
  2. Solicitud HTTP para contenido conocido

Además de la respuesta de Jeff, sospecho:

3) Si la solicitud HTTP se redirige a un Microsoft externo (o no devuelve el contenido esperado), muestre el mensaje en su captura de pantalla.

Macke
fuente
3

Para una conexión que requiere información de inicio de sesión adicional, es más probable que se determine a través del paso de resolución de DNS mencionado por Jeff con los siguientes tres escenarios:

  • Si el sistema resuelve la dirección correcta, la conexión está clara. (Conectividad a Internet)
  • Si el sistema resuelve una solicitud de DNS pero no es la dirección correcta, entonces hay un redireccionamiento (es posible que sea necesario agregar información de inicio de sesión)
  • Si el sistema no resuelve una solicitud de DNS, hay problemas de conectividad a Internet (la conexión se establece en la red / punto de acceso pero no hay conectividad a Internet)

Supongo que la solicitud de:

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

es una forma rápida de probar si la conexión a internet es clara. Después de eso, las solicitudes de DNS se ejecutan para determinar el estado completo de la conexión.

James Mertz
fuente