El segmento TCP consta de campos de cabecera y un campo de datos.
El campo de datos contiene un fragmento de los datos de la aplicación.
Cuando TCP envía un archivo grande, divide el archivo en fragmentos de tamaño MSS.
Campos:
- Número de puerto de origen
- Número de puerto de destino
- Checksum
- Número de secuencia
- Número de reconocimiento
- Ventana de recepción: Se utiliza para el control de flujo. Indica el número de bytes que un receptor está dispuesto a aceptar.
- Longitud de cabecera: Especifica la longitud del Header TCP en palabras de 32 bits.
- Varía por el campo options. Suele estar vacío y el header es de 20 bytes.
- Opciones: opcional y de longitud variable.
- Indicador (8 bits):
- Bit ACK: se utiliza para indicar que el valor transportado en el campo de reconocimiento es válido.
- Bits RST, SYN y FIN: se utilizan para el establecimiento y cierre de conexiones.
- Bits CWR y ECE: se emplean en la notificación de congestión explícita.
- Bit PSH: indica que el receptor deberá pasar los datos a la capa superior de forma
inmediata.
- Bit URG: se utiliza para indicar que hay datos en este segmento que la entidad de la capa superior del lado emisor ha marcado como “urgentes”. La posición del último byte de estos datos urgentes se indica mediante el campo puntero de datos urgentes.

Números de secuencia y de reconocimiento
TCP percibe los datos como un flujo de bytes no estructurado pero ordenado.
Los números de secuencia hacen referencia al flujo de bytes transmitido y no a la serie de segmentos transmitidos.
<aside>
💡 El número de secuencia de un segmento es por tanto el número del primer byte del segmento dentro del flujo de bytes.
</aside>
Ejemplo seq number