Cómo identificar la cantidad mínima de bits que necesito para un campo de número de secuencia, dado el protocolo de ventana deslizante, el retraso, la capacidad y el tamaño del mensaje

Yo no lo haría

Puede intentar ser exacto, calculando el valor máximo que el campo podría contener y el número derivado de bits necesarios. Pero no veo el punto, y de hecho, esto puede ser contraproducente.

Suponga que lo calcula, ¿qué sucede cuando las cosas cambian? B (por ejemplo, el tiempo de ancho de banda demora para ver el número de bits en vuelo será uno si sus términos. Si entonces el ancho de banda cambia, digamos por una mejor codificación, ¿quiere redefinir el campo?)

Otro punto es ¿qué estás optimizando? Suponga que calculó que necesita 25 bits, ¿realmente usará este número, haciendo que la vida útil de cualquier programa que tenga que lidiar con el campo sea difícil e ineficiente?

¿Entonces lo que hay que hacer?

  1. Solo use un gran número de bits, simplifique la vida de todos. En la mayoría de los casos, 64 bits serán más que suficientes.
  2. Estime aproximadamente el orden de magnitud, luego redondee a lo grande. Por ejemplo, si cree que el valor podría llegar a millones, use 32 bits, que pueden contener miles de millones
  3. Usa algo para indicar la escala. Por ejemplo, use un campo de 32 bits, pero use los primeros 2 bits como escala: 0x00 significa que está contando bytes, 0x01 significa que está contando bloques de (digamos) 64 bytes cada uno, 0x10 significa bloques de 1kB, 0x11 bloques de 1MB, etc.