syn secuencia protocolo numero funcionamiento caracteristicas cabecera tcp numbers sequence rfc

protocolo - Número de secuencia TCP



protocolo tcp ip caracteristicas (3)

Cada punto final de una conexión TCP establece un número de secuencia inicial para los paquetes que envía, y envía este número en el paquete SYN que envía como parte del establecimiento de una conexión.

No hay ningún requisito para que cada extremo siga un procedimiento en particular al elegir el número de secuencia de inicio. El sistema operativo es libre de usar cualquier mecanismo que le guste, pero generalmente es mejor si elige un número aleatorio, ya que es más seguro.

Desde ese punto de inicio, cada paquete enviado por cualquiera de los dos extremos contiene dos números de secuencia, uno para especificar dónde se encuentra el paquete y un número de secuencia ACK que significa el número de bytes recibidos . Ambos números son compensados ​​por el número de secuencia inicial.

Por supuesto, lea todo sobre esto en Wikipedia : busque el "número de secuencia" en esa página para obtener todos los detalles sangrientos.

Estoy tratando de entender cómo se generan los números de secuencia del encabezado TCP.

En algunos lugares leí que es el "índice del primer byte en el paquete" ( enlace aquí ), en otros sitios es un número aleatorio generado de 32 bits que luego se incrementa.

Realmente no sé cuál es cuál, así que aquí hay algunas preguntas:

  • ¿Cómo se genera el número de secuencia inicial? (número rfc si hay uno)
  • ¿Cómo se incrementa?
  • ¿Cómo se genera la clave secreta?

Leí algunos de los rfc, como RFC 6528 , RFC 793 y RFC 1948, pero parece que no entiendo cuál está implementado. Leí sobre el estado "estándar" pero todavía ...

Gracias de antemano !


En 4.4BSD (y en la mayoría de las implementaciones derivadas de Berkeley) cuando se inicializa el sistema, el número de secuencia de envío inicial se inicializa en 1. Esta práctica viola el RFC de requisitos del host. (Un comentario en el código reconoce que esto es incorrecto). Esta variable luego se incrementa en 64,000 cada medio segundo, y regresará a 0 aproximadamente cada 9.5 horas. (Esto corresponde a un contador que se incrementa cada 8 microsegundos, no cada 4 microsegundos). Además, cada vez que se establece una conexión, esta variable se incrementa en 64,000.


Es un número aleatorio entre 0 y 4,294,967,295. Pero en la herramienta wireshark puede ver la sincronización como 0 (porque usa una pantalla relativa), pero puede hacerlo para mostrar el número de secuencia original haciendo Editar -> Preferencias. y la desactivación de los números de secuencia relativa y la escala de la ventana en las preferencias del protocolo TCP. El siguiente número de secuencia se incrementará según el número ACK (a) que se recibe (se convierte en un + 1). El ACK se incrementa en función de la carga útil len (l) que recibió (se convierte en l + 1). Tenga en cuenta que no se envían datos / carga útil cuando el indicador SYN / FIN está activo (lo que hace que el incremento de ACK sea solo uno durante SYN y FIN)