Campo de opciones en el encabezado TCP

Los usuarios de TCP se comunican entre sí mediante el envío de paquetes. El paquete contiene datos y otra información sobre el origen y el destino y otras variables TCP. Estos detalles se almacenan en el encabezado TCP, que es la parte superior del paquete. Cuando un paquete de datos se transmite a través de diferentes dispositivos de red, el encabezado se procesa cada vez y luego el paquete se reenvía. Los datos no se modifican mientras el paquete está en tránsito, pero algunos detalles pueden cambiar en el encabezado, como la dirección IP y el número de puerto, al pasar a través de dispositivos NAT.

TCP Header

Encabezado TCP

Después de los encabezados, hay un campo de opciones. El tamaño máximo del campo de opciones es de 40 bytes . Su tamaño es variable; sigue cambiando de paquete a paquete.

Importancia del campo de opciones:

Cuando se desarrolló inicialmente TCP, Internet, la memoria y la tecnología no eran tan avanzadas ni baratas. Los encabezados básicos eran suficientes en ese momento para una comunicación exitosa entre dos Nodes de computadora. Pero a medida que Internet se hizo popular, el antiguo TCP comenzó a quedar obsoleto y se requirieron cambios en los encabezados para adaptarse a los cambios disponibles en Internet y la memoria. Pero una vez que el TCP sea tan popular a nivel mundial, sería prácticamente imposible introducir nuevos cambios e implementarlo en todos los dispositivos. Entonces, ¿cómo encuentran la solución TCP e Internet?

Dejaron el campo de opciones justo debajo de los encabezados principales en el paquete. En ese momento, el uso del campo de opciones era muy limitado, pero ahora cada nuevo cambio u optimización se implementa utilizando este campo de opciones. Alrededor de 35 optimizaciones se implementan utilizando este campo de opciones en el encabezado TCP a partir de hoy. Dado que la variable tipo tiene un tamaño de 1 byte, puede representar 256 números. Además de las 35 optimizaciones, se reservan otros valores. Este campo es opcional porque se usa en ocasiones muy especiales y no se usa en todos los paquetes. Muchas optimizaciones usan los campos de opciones en los paquetes SYN y otras lo usan cuando la red está congestionada.

Varias opciones:

Tamaño máximo de segmento (MSS):

Kind = 2
Length = 4
MSS

El cliente informa sobre el tamaño del paquete que puede aceptar del servidor. Este campo de opción se usa en el paquete SYN cuando el cliente establece una conexión con el servidor.

«Tipo = 2» ocupa un espacio de 1 byte, «longitud = 4» ocupa un espacio de 1 byte y «MSS» ocupa un espacio de 2 bytes. Por tanto, el espacio total consumido (longitud = 4) por la opción MSS es de 4 bytes.

Maximum Segment Size (MSS)

Tamaño máximo de segmento (MSS)

Escala de ventana:

Kind = 3
Length = 3
Window Scaling: shift.cnt

El campo «tamaño de la ventana» tiene una longitud de 16 bits y puede representar el valor máximo 2 16 = 65 536. El cliente puede anunciar su búfer hasta 64 KB utilizando este campo de «tamaño de ventana» en el encabezado TCP . Usando la opción de escala de ventana, el cliente puede decirle al servidor su factor de escala, lo que le da al remitente la capacidad de anunciar su tamaño de búfer hasta 2 30 = 1 GB. shift.cnt toma los valores de 0-14. Entonces, 16+14=30 son los bits máximos disponibles para anunciar el tamaño del búfer.

Window Scaling

Escalado de ventana

Confirmación selectiva:

Kind=4
Length=2
SACK Permitted

Kind=5
Length= 8n
SACK

SACK informa al remitente sobre la pérdida de múltiples paquetes, para que el remitente pueda recuperar la pérdida lo antes posible. En el paquete SYN, el remitente le dice al servidor que admite la opción SACK mediante el uso de la opción «Sack permitido».

Cuando hay entrega de paquetes fuera de orden en el lado del receptor, el receptor envía la opción SACK informando sobre los paquetes perdidos. Un bloque de SACK ocupa 8 bytes, por lo que el tamaño del saco es el múltiplo de 8 bytes.

Selective ACK

ACK selectivo

Marcas de tiempo :

Kind=8
Length=10
Timestamps

Las variables Tipo y Longitud ocupan 1 byte cada una. Las marcas de tiempo tienen dos partes: hora de envío y hora de recepción, cada una de las cuales consume 4 bytes. Entonces, este campo de opción ocupa 10 bytes en total. 

Los usos de las marcas de tiempo son: RTTM ( Medición de tiempo de ida y vuelta ), PAWS (Protección contra el número de secuencia envuelto)

Timestamps

Marcas de tiempo

Apertura rápida de TCP:

Kind=34
Length=18
TCP Fast Open Cookie

El cliente primero le dice al servidor en el paquete SYN que admite TCP FastOpen . Luego, el servidor envía cookies cifradas en el paquete SYN+ACK. La variable tipo y longitud ocupa 2 bytes juntos. La cookie tiene un tamaño de 16 bytes. Por lo tanto, esta opción consume 18 bytes en total. 

TFO evita un protocolo de enlace de 3 vías cada vez que el cliente solicita al servidor el establecimiento de la conexión. El uso del cliente TFO puede enviar directamente requests GET al servidor.

TCP FastOpen

Apertura rápida de TCP

NOP:

Kind=1

Este campo de opción se utiliza entre dos opciones. Esta opción indica el comienzo del siguiente campo de opción en el campo/bloque de opciones. Este puede o no ser utilizado por el remitente, por lo que el receptor debe estar preparado para procesar las opciones con o sin este NOP. Solo consume 1 byte de espacio y no tiene longitud ni información significativa a diferencia de otras opciones.

NOP

NOP

Fin de la lista de opciones:

Kind=0

Esta opción se utiliza al final de la lista de opciones. El valor de tipo es 0 pero se usa al final de todas las opciones. Esto debe tenerse en cuenta que se usa solo una vez después de que se enumeran todas las opciones en el encabezado, no ocurre después de cada opción, a diferencia de NOP. Si el campo de encabezado está completamente lleno y ocupa el máximo espacio posible disponible, entonces esta opción no es obligatoria. Si todavía hay espacio disponible en el encabezado, esta opción se inserta explícitamente pero el remitente resalta el final de la lista de opciones. 

End of the option list

Fin de la lista de opciones

Tenga en cuenta que MSS, Window Scaling y TCP FastOpen se usan solo en paquetes SYN. Después de eso, nunca se usan. Las opciones restantes (discutidas en este artículo) pueden usarse en cualquier paquete enviado durante la comunicación según el requisito de su uso.

Publicación traducida automáticamente

Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *