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


En Windows 7, el icono de red de área de notificación mostrará un indicador de error si no hay acceso a Internet wifi-err, y el icono de error desaparece una vez que hay una conexión exitosa a internet networking normal. A veces, si la conexión WiFi requiere un paso de autenticación en el navegador, como en muchas redes de invitados en hoteles o universidades, aparece la siguiente burbuja emergente, que dice lo siguiente: additional log on information may be required, click to open your browser

¿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, se redirige a alguna otra página, o 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 tiene una realmente bueno adivina, luego ve por ello.

Esta pregunta fue una Pregunta del Superusuario de la semana.
  Leer el 16 de mayo de 2011 Entrada de blog para más detalles o envía tu propio Pregunta de la semana.


130


origen


Si fuera a verificar un servicio de Microsoft, ¿cómo superaría el paso de activación en el navegador? ¿O te estoy malinterpretando? (+1 por cierto, pregunta interesante) - slhck
@slhck: ese es el punto de la comprobación: si no puede acceder al servicio correctamente, pero su intento se vuelve algunos respuesta, supone que puede haber un paso en el navegador. Si no hay respuesta en todas, supone que solo hay acceso local. Simplemente 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 abrir Wireshark para ver qué hace la máquina en ese caso. - slhck
Cuando el indicador de error indique que no hay acceso a Internet, abra el solucionador de problemas de red. Mientras se ejecuta el solucionador de problemas, puede ver claramente un paso "Intentando conectarse a Microsoft.com". Así que supongo que usa un servicio. - Mayank


Respuestas:


Después de algunas excavaciones (la gran cantidad de servicios relacionados con la red e Internet en Windows es sorprendente), creo que lo encontré. Windows Vista y 7 tienen una variedad de funciones de reconocimiento 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 es exitoso, Windows informa "No hay 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 asumir el acceso adecuado a internet si esta prueba es exitosa pero el documento no puede ser recuperado.

La razón por la que informa "Sin acceso a Internet" cuando aún no se ha autenticado en un Hotspot yace 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 redireccionan al servidor de autenticación de la zona activa 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 no pudiera alcanzar 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


89



Un punto de acceso debería permitir DNS, de lo contrario, cualquier intento de acceder a un servidor por nombre de host (en lugar de por dirección IP) generaría 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 de http (s) al servidor de autenticación. La parte del DNS de las comprobaciones descritas en el documento del agrado es verificar que dns.msftncsi.com resuelva la dirección correcta, no si se resuelve en absoluto. - Dave Sherohman
Eso es de hecho correcto. Actualicé la respuesta para reflejar eso. - Tobias Plutat
¡Excelente descubrimiento y buena descripción de cómo funciona! Si no aparecen mejores respuestas, pronto vendrá una recompensa. - nhinkle♦
También dice No Internet access si estás detrás de un proxy;) - Oscar Mederos
No dudo que esto sea en su mayoría correcto, pero parece ser incompleto. En ocasiones, tendrá un problema con DNS y el ícono de conectividad mostrará una ventana emergente que indica que tiene acceso a Internet pero que el 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), entonces aparece el mensaje de error de DNS. - krowe2


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

La siguiente lista describe cómo el 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.txtregresando 200 OK y el texto Microsoft NCSI

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

 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" de hoteles, etc.


68



Las versiones más recientes (creo que Gingerbread y más nuevas ...) de Android también lo hacen ... mostrarán el icono de wifi en blanco si pueden conectarse a la red, y se pondrá verde si puede golpear algunos sitios alojados 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
Así que si msftncsi.com bajó, cada computadora con Windows 7 no podría mostrar una señal en línea? Eso es genio! - liamzebedee


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

  1. Solicitud 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.


8





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 DNS mencionado por Jeff con los siguientes tres escenarios que ocurren:

  • Si el sistema resuelve la dirección correcta, la conexión es clara. (Conectividad a Internet)
  • Si el sistema resuelve una solicitud de DNS, pero no es la dirección correcta, entonces hay una redireccionamiento (es posible ingresar información adicional necesaria)
  • Si el sistema no resuelve una solicitud DNS, existen problemas de conectividad a Internet (conexión establecida a la red / punto de acceso, pero no conectividad a Internet)

Supongo que la solicitud de:

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

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


3