¿Qué es el MSS (tamaño máximo de segmento)?

El MSS, o tamaño máximo de segmento, es la mayor carga de datos que un dispositivo aceptará de una conexión de red.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Entender qué es un paquete y qué son los encabezados de los paquetes
  • Definir "carga útil"
  • Más información sobre cómo calcular el MSS en función de la MTU

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

¿Qué es el tamaño máximo de segmento (MSS)?

El MSS (tamaño máximo de segmento) limita el tamaño de los paquetes, o pequeños trozos de datos, que viajan por una red, como Internet. Todos los datos que viajan por una red se dividen en paquetes. Los paquetes tienen varios encabezados adjuntos que contienen información sobre su contenido y destino. El MSS mide la parte de un paquete que no tiene encabezado, lo que se conoce como carga útil.

Si se compara un paquete de datos con un camión de transporte, siendo el encabezado el propio camión, y la carga útil el remolque y la carga, entonces el MSS es como una balanza que mide solo el remolque. Si el remolque pesa demasiado, el camión no puede continuar hacia su destino.

Más concretamente, MSS es el mayor tamaño de segmento TCP (Protocolo de control de transporte) que puede recibir un dispositivo conectado a la red. El MSS define "segmento" como la longitud de la carga útil, sin los encabezados adjuntos. El MSS se mide en bytes.

Encabezados de paquetes de datos y carga útil - Segmento TCP y MSS

El MSS está determinado por otra métrica que tiene que ver con el tamaño de los paquetes: MTU, o la unidad máxima de transmisión, que sí incluye los encabezados TCP e IP (Protocolo de Internet). Para seguir con la analogía, la MTU mide el peso total del camión, y su remolque y carga, en lugar de solo el remolque y la carga.

En esencia, el MSS es igual a la MTU menos el tamaño de un encabezado TCP y un encabezado IP:

MTU - (encabezado TCP + encabezado IP) = MSS

Una de las principales diferencias entre la MTU y el MSS es que si un paquete supera la MTU de un dispositivo, se divide en trozos más pequeños, o "se fragmenta." En cambio, si un paquete supera el MSS, se descarta y no se entrega.

¿Qué es TCP? ¿Qué es un encabezado TCP?

El Protocolo de control de transporte, o TCP, es un protocolo que garantiza que los paquetes de datos se entreguen y reciban en orden, sin que se pierdan paquetes. Imaginemos que los servicios de entrega de paquetes llamaran a todos los destinatarios con antelación para asegurarse de que van a estar en casa a una hora determinada antes de entregar los paquetes, y luego enviaran un mensaje al remitente para confirmar que se han entregado. El TCP funciona más o menos así, siendo los paquetes de datos los "paquetes" que se entregan.

TCP funciona al abrir una conexión entre los dos dispositivos que se están comunicando mediante un proceso conocido como protocolo de enlace TCP. Se acuerda el MSS durante el protocolo de enlace TCP: ambos dispositivos comunican el tamaño de los paquetes que pueden recibir (esto puede llamarse "fijación de MSS"; ver más adelante). TCP añade un encabezado a todos los paquetes para indicar de qué conexión abierta forma parte cada paquete y en qué orden tienen que ir.

¿Qué longitud tienen los encabezados TCP e IP?

Los encabezados TCP tienen casi siempre 20 bytes* de longitud. Los encabezados IP incluyen información como la dirección IP de origen y destino, y también tienen 20 bytes. Tanto los paquetes TCP como los IP incluyen campos de encabezado opcionales que pueden hacer que los encabezados sean más largos, pero casi nunca se utilizan.

*En informática, un byte es una unidad de tamaño de memoria que representa ocho dígitos binarios; es decir, una combinación de ocho unos y ceros.

Ejemplo de MSS de TCP

Supongamos que un enrutador de red tiene una MTU de 1500, lo que significa que solo acepta paquetes de hasta 1500 bytes de longitud. (Los paquetes más largos se fragmentarán.) ¿Cómo debería configurarse el MSS del enrutador?

MTU - (encabezado TCP + encabezado IP) = MSS

1500 - (20 + 20) = 1460

El MSS del enrutador debe configurarse a 1460 bytes. Los paquetes con un tamaño de carga útil superior a 1460 bytes se descartarán. (Un dispositivo podría enviar un paquete demasiado grande como este por error si no conoce la configuración de MTU y MSS de los enrutadores que se encuentran entre este y otro dispositivo. Un proceso llamado descubrimiento de la MTU de la ruta ayuda a evitar estos incidentes).

¿Cómo afecta el uso de IPsec al MSS?

IPsec (seguridad del Protocolo de Internet) es la versión encriptada del IP. Los paquetes de datos enviados mediante IPsec se codifican para que solo los dos dispositivos conectados puedan interpretarlos, lo cual mantiene el contenido de su carga útil a salvo de cualquiera que pueda interceptar los paquetes. La IPsec se suele utilizar para configurar Redes Privadas Virtuales, o VPN.

IPsec añade algunos bytes a la longitud de un paquete. En las conexiones que utilizan esta encriptación, el MSS debe tener en cuenta también la IPsec:

MTU - (encabezado TCP + encabezado IP + IPsec) = MSS

¿El MSS es una métrica de la capa de red o de la capa de transporte?

El MSS es una métrica de la capa 4, o capa de transporte. Se utiliza con TCP, un protocolo de la capa de transporte. Sin embargo, está estrechamente relacionado con la MTU, que se aplica a la capa 3 (la capa de red).

¿Qué es la fijación de MSS?

En ocasiones, un enrutador a lo largo de una ruta de red tiene un valor de MTU inferior al típico de 1500 bytes. Esto puede provocar la pérdida de paquetes y puede ser difícil de descubrir.

Para garantizar que los paquetes sigan llegando a su destino en esta situación, una opción es reducir el tamaño de las cargas útiles de los paquetes entrantes. Esto puede conseguirse mediante la configuración del servidor para que aplique una fijación de MSS: durante el protocolo de enlace TCP, el servidor puede señalar el MSS de los paquetes que está dispuesto a recibir, "fijando" el tamaño máximo de la carga útil del otro servidor. Por ejemplo, si los servidores A y B están estableciendo una conexión TCP y el servidor B comunica un MSS de 1436 bytes, el servidor A enviará paquetes con un tamaño máximo de carga útil de 1436 bytes mientras dure la conexión.

Otra aplicación de la fijación MSS es en el caso de la tunelización GRE, por el que se añade un encabezado de 24 bytes al paquete original para enviarlo a un nuevo destino. Si el paquete original era mayor de 1476 bytes, esto podría hacer que el nuevo paquete superara la MTU típica de 1500 bytes; se puede aplicar una fijación de MSS para exigir que los paquetes entrantes tengan menos de 1500 bytes incluso después de aplicar el encabezado GRE.

Para obtener más información sobre MTU y MSS, consulte ¿Qué es MSS?