9 votes

Comment Android peut-il maintenir une connexion TCP en vie lorsqu'il change de fournisseur de réseau ?

Je suis curieux de savoir comment Android peut maintenir une connexion TCP en vie lorsque je passe de la 3G (données mobiles) au WiFi et vice versa.

Je pose cette question après avoir vu que j'avais un flux radio ininterrompu en pensant à TuneIn radio.

Est-ce que c'est valable uniquement pour TuneIn (via un code de contournement) ou est-ce que c'est une fonctionnalité intéressante dans les appels de l'API Android ?

Merci d'avance pour toute aide.

-- mon crime est celui de la curiosité :)

7voto

Arne Evertsson Points 536

Une connexion TCP ne peut pas être maintenue en vie lors d'un changement de réseau, puisque vous obtenez une nouvelle adresse IP, ce qui entraîne la fin de toutes les connexions.

Le TCP s'appuie sur l'IP pour acheminer les données. Si vous changez de réseau, vous changez également votre adresse IP publique qui est utilisée par la connexion TCP pour permettre à TuneIn de vous fournir des données. Cela invalide la connexion actuelle et vous oblige à en établir une nouvelle.

Mais il y a toujours une chance d'obtenir un flux audio ininterrompu. L'application TuneIn met probablement le flux en mémoire tampon pendant deux ou trois secondes pour compenser les problèmes de connexion ou même de reconnexion.

4voto

behzad Points 331

Une des solutions les plus récentes à ce problème est le MPTCP (Multi-Path TCP) . Mais celle-ci n'est pas encore largement supportée (l'iOS7 d'Apple supporte Multipath TCP pour son trafic généré par Siri).

MPTCP peut établir de multiples sous-connexions TCP et, si les dispositifs d'une connexion le supportent, la connexion peut être maintenue même si votre IP change (du Wifi au 3G/4G et vice versa).

Si vous voulez en savoir plus sur MPTCP, lisez l'article suivant : http://queue.acm.org/detail.cfm?id=2591369

3voto

user26270 Points 1460

Si les réponses données jusqu'à présent sont vraies dans la pratique courante et certainement lorsque vous passez d'un fournisseur d'accès à l'internet mobile à un fournisseur d'accès à l'internet à domicile, IPv4 et IPv6 ont tous deux des solutions de mobilité, IPv4 par extension et IPv6 nativement. Elles permettent à un utilisateur mobile de disposer d'une adresse IP statique à domicile et d'une adresse IP mobile dynamique qui permet de maintenir les connexions TCP tout en se déplaçant d'un réseau à l'autre. Les détails peuvent être trouvés dans les RFCs ci-dessous :

Wikipedia

RFC Mobile IP pour IPv4

RFC IPv6

En ce qui concerne le déploiement actuel de ces solutions de mobilité, je n'en ai pas connaissance et je ne suis pas en mesure de trouver plus d'informations. Je suppose que la solution de mobilité IPv4 est trop lourde à déployer (elle n'a été envisagée qu'après coup) et qu'il n'y a pas assez d'adresses IPv4 pour tout le monde, sans parler de la mobilité, d'où l'utilisation intensive du NAT, de sorte qu'elle ne sera jamais utilisée. Quant à l'IPv6 et aux raisons de son manque de déploiement à grande échelle, il est plus difficile de spéculer à ce sujet, je suppose qu'avec une grande partie du web encore sur IPv4 et donc une utilisation intensive de la traduction IPv4 vers IPv6, la solution mobile pourrait être difficile à déployer dans cet environnement. Quoi qu'il en soit, même si un fournisseur de services mobiles prenait en charge ce qui précède, votre fournisseur d'accès à domicile et votre fournisseur de services mobiles auraient besoin d'un certain niveau de soutien, et les fournisseurs d'accès à domicile n'ont aucun intérêt financier à cet égard.

TL;DR Les connexions TCP s'interrompent sur votre téléphone lorsque vous changez de réseau (et donc de fournisseur de réseau) ; cependant, il existe des solutions de mobilité qui traitent ce problème, mais elles n'ont pas été déployées (du moins pas à grande échelle).

PS Un meilleur test de rupture de connexion TCP est un appel vocal ou vidéo (sur des données évidemment). La musique et les films peuvent être mis en mémoire tampon et la transition d'adresse IP n'est pas remarquée, mais pas les appels.

1voto

Kibber Points 151

Il n'y a aucun moyen de maintenir une connexion TCP en vie si votre adresse IP change (et elle changera lorsque vous passerez de la 3G au WiFi). Vous n'avez pas besoin d'une connexion ininterrompue pour une lecture ininterrompue - la plupart des applications "radio" mettent en mémoire tampon des données pour que la musique continue à être diffusée même si vous perdez la connexion pendant un certain temps.

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