30 votes

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

Lorsque l'appareil tente 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 nécessaire pour l'appareil et quel est le processus derrière cela?

35voto

RyanDH Points 466

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

Pour Marshmallow, il utilise connectivitycheck.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

0 votes

Je ne voulais pas détourner la réponse en la modifiant, donc 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 que mon point d'accès réponde à cette demande avec un certain 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 de retour, j'obtenais une notification "Le Wi-Fi n'a pas d'accès à Internet".

0 votes

@ubomb Semble étrange, puisque http://connectivitycheck.gstatic.com/generate_204 retourne en fait un 204 sans contenu, et fonctionne évidemment. Peut-être avez-vous simplement omis l'en-tête Content-Length: 0.

10voto

leon Points 1270

Cette technologie est appelée "Portail captif". Il existe plusieurs implémentations. À ma connaissance, Android essaie d'accéder à un fichier nommé generate_204 sur l'un des serveurs de Google et si cela n'est pas possible, une notification est générée.

Pour en savoir plus sur Wikipedia : Captive_portal

0 votes

En fait, je connais les portails captifs. Mais je connais l'URL spécifique pour le vérifier. Je veux savoir comment il fonctionne. Pas ce que c'est.

1 votes

Que voulez-vous dire - "comment ça 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. C'est ainsi que cela fonctionne.

0 votes

Quelle est l'URL spécifique sur laquelle la demande Android est faite. J'ai mentionné dans la question.

2voto

Jude Osborn Points 121

Un portail captif est généralement mis en œuvre en redirigeant 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.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X