2 votes

Stock Browser divise les requêtes HTTP POST en segments TCP distincts

Je teste actuellement différents navigateurs et appareils pour vérifier leur compatibilité avec une interface web qui a été développée. Nous avons réalisé que nous avions un problème avec le code déjà en production. Le bogue se produit parce que toutes les requêtes HTTP POST envoyées par le navigateur Android (à la fois sur un Galaxy Nexus (exécutant JB) et un Galaxy Tab (exécutant ICS)) sont divisées en deux segments TCP à la limite des en-têtes HTTP et des données HTTP POST.

Il est intéressant de noter que Chrome pour Android ne présente pas ce même comportement, la requête entière étant envoyée en un seul paquet.

Nous ne sommes même pas près d'atteindre la MTU, donc ce n'est pas un problème.

Mes questions sont les suivantes :

  1. Y a-t-il une configuration à modifier pour éviter cela ?
  2. Je sais que le navigateur intégré d'Android et Chrome utilisent Webkit, mais j'avais l'impression qu'il était intégré au système d'exploitation d'Android.
  3. Enfin, que gagne-t-on ou quelle est l'intention derrière tout cela ?

1voto

sarego Points 1150

Le navigateur n'a pas de contrôle direct sur ce point ; c'est le choix du noyau, puisque c'est dans le noyau que se trouve l'implémentation de TCP. Cependant, l'application peut l'influencer en définissant l'attribut TCP_NODELAY sur le socket, qui demande que le noyau désactive L'algorithme de Nagle et envoyer chaque morceau de données dès que possible.

Il peut s'agir d'une optimisation : comme de nombreuses requêtes HTTP ne contiennent que des en-têtes et pas de corps, il est préférable pour le noyau d'envoyer immédiatement un paquet avec les en-têtes, plutôt que d'attendre un peu pour voir si le navigateur produit d'autres données qui pourraient tenir dans le même paquet.

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