Comment le WiFi dans Android détecte-t-il si l'appareil doit se connecter ou non?

28

Lorsque l'appareil essaie de se connecter à un point d'accès ou à un routeur, il doit se connecter sur la page du portail captif avec le message disant

"Connectez-vous au réseau Wi-Fi".

Comment le point d'accès / routeur identifie-t-il qu'une connexion est requise pour l'appareil et quel est le processus derrière celui-ci?

Sagar Vaghela
la source

Réponses:

32

L'URL de détection diffère entre les différentes versions d'Android.

Pour Marshmallow, il utilise la connectivitécheck.gstatic.com/ generate_204 , vérifiez le code ici AndroidXRef - Marshmallow 6.0.0_r1

Pour Kitkat, il utilise clients3.google.com/generate_204 vérifiez le code AndroidXRef - KitKat 4.4.4_r1

RyanDH
la source
Je ne voulais pas détourner la réponse en la modifiant, alors je vais juste laisser un commentaire. Il m'a fallu un certain temps pour réaliser que l'URL de détection déclenche la notification si elle ne peut pas être atteinte. De plus, j'avais besoin de mon point d'accès pour répondre à cette demande avec une sorte de contenu - dans mon cas, j'ai renvoyé un code 200 ainsi que la page d'index de mon serveur Web lorsque / generate_204 est demandé. Sans contenu dans la réponse, quel que soit le code retour, j'obtiendrais une notification «Wi-Fi n'a pas d'accès Internet».
ubomb
@ubomb Semble étrange, car http://connectivitycheck.gstatic.com/generate_204renvoie en fait un 204 sans contenu, et fonctionne évidemment. Vous venez peut-être d'oublier l'en- Content-Length: 0tête.
Tamir Daniely
9

Cette technologie est appelée "portail captif". Il existe plusieurs implémentations. Comme je le sais, Android essaie d'atteindre un fichier nommégenerate_204 sur l'un des serveurs Google et si ce n'est pas possible, une notification est générée.

Pour en savoir plus sur Wikipédia: Captive_portal

Άνδρας
la source
En fait, je connais le portail captif. Mais je connais l'URL spécifique pour le vérifier. Je veux savoir comment ça marche. Pas ce que c'est.
Sagar Vaghela du
1
Que voulez-vous dire - "comment cela fonctionne"? Android envoie une demande, et s'il n'y a pas de réponse positive, cela signifie qu'il n'y a pas de connexion à Internet et une notification est générée. Voilà comment ça marche.
Άνδρας
Quelle est l'URL spécifique sur laquelle demande Android. J'ai mention en question.
Sagar Vaghela du
2
Dans votre commentaire précédent, vous avez dit que vous connaissez l'URL spécifique. Je pense que c'esthttps://www.gstatic.com/generate_204
Άνδρας
2
L'URL semble être clients3.google.com/generate_204 . Informations tirées de ce site pour le chrome qui sont probablement les mêmes pour Android. chromium.org/chromium-os/chromiumos-design-docs/…
benjamin
2

Un portail captif est généralement implémenté en dirigeant tout le trafic vers une réponse HTTP valide (200). Cette réponse HTTP est ce qui apparaît dans le portail captif.

Cela peut être fait avec des outils comme iptables ou dnsmasq.

Jude Osborn
la source