6 votos

¿Cuál es el tamaño inicial de la ventana de recepción TCP en Android?

Esto puede ser bastante similar a la pregunta aquí Sin embargo, creo que o bien estaba en el lugar equivocado, o no era lo suficientemente claro, por lo que no ha llegado al público adecuado. Por ello, lo he reformulado aquí:

Introducción:

El TCP Receive Window es el tamaño del buffer en el extremo receptor de una conexión TCP. Según ( RFC7323 - Sección-1.1 ) la norma TCP tiene un 16-bit para indicar el tamaño ( 2^16 = 65,536 Bytes max ). Sin embargo, se ha visto que esto limita el rendimiento en redes de alta latencia (RFC7323). Por ello, se ha incluido un campo en las opciones/extensiones de TCP denominado "Escala de ventana" ( RFC7323 - Sección-2 ) con el fin de mejorar el rendimiento aumentando el tamaño de la ventana de recepción multiplicándolo por un factor de escala, así Scaling Factor = 2 ^ Window Scaling Factor Value . Así que, en esencia, el TCP Receive Window Size = TCP Receive Window Value * (2 ^ Window Scaling Factor Value) (No he entendido del todo cómo funciona realmente el factor de escala, así que puede que esto no sea del todo exacto).

Pregunta:

La esencia de esta cuestión es, según RFC7323 - Sección 2.1 Parece que la pila TCP implementada en diferentes sistemas operativos tiene un valor inicial por defecto diferente. ¿Cuál es el tamaño inicial por defecto de la ventana de recepción TCP en Android? ¿Ha cambiado a lo largo de las diferentes versiones?

Referencias:

RFC 7323 - https://tools.ietf.org/html/rfc7323

0 votos

¡3 votos cercanos y 3 upvotes! Un caso interesante.

3voto

the structure Puntos 46

Puedo responderte sobre los campos TCP WINDOW SIZE y TCP WINDOWSCALE tal y como aparecen en la cabecera TCP.

El tamaño inicial de la ventana TCP debería ser 0x3908 = 14600, al menos es lo que he encontrado hasta ahora usando varias versiones.

(En la mayoría de las distribuciones de Linux que he utilizado es exactamente el doble 0x7210 = 29200).

Window Scale tiene diferentes valores dependiendo de la versión, los más antiguos lo ponen a 6, los más nuevos a 8, al menos por lo que he experimentado hasta ahora.

Puedes comprobar ambos valores con esta aplicación: https://play.google.com/store/apps/details?id=be.ac.ulg.mobiletracebox Te los mostrará en la primera línea 0: youraddress ... TCP::Window (0xXXXX) ... TCP::WindowScale (0xXX) Los valores son hexadecimales.

Para el tamaño de la ventana utilice la sonda Syn normal.

Para la escala de la ventana utilice la sonda de escala de la ventana.

(Si no se muestra ningún valor para Window, debería ser el máximo (0xffff=65535). Si su dispositivo está rooteado, debe establecer el modo basado en el servidor).

PS No sé si hablar de una aplicación está bien aquí, si no es así estoy más que dispuesto a editar mi comentario.

0 votos

Um. Eso suena razonable, pero tracebox parece una herramienta de rastreo? ¿Hay alguna manera de comprobar que estoy buscando los valores que se aplican a mi dispositivo, en lugar de al servidor contra el que estoy ejecutando la aplicación?

1 votos

Es una herramienta de rastreo de modificaciones en sus paquetes. Muestra el paquete enviado y cómo es recibido en el servidor de tracebox. Entonces si muestra un cierto valor para el paquete enviado y no muestra ninguna modificación en ese valor en el paquete recibido, es bastante probable que ese valor mostrado sea el valor real.

0 votos

De nuevo. ¿Quieres decir que muestra la respuesta recibida por el dispositivo? Eso tendría mucho sentido, sólo que no es como yo interpreté esa explicación al principio. No se me ocurre ninguna otra forma en que tracebox pueda saber cómo era el paquete, cuando fue recibido en tumblr.com (segunda captura de pantalla en la página de la aplicación).

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X