# Tamaño Máximo de Segmento

El Tamaño Máximo de Segmento (Maximum Segment Size - MSS) es el tamaño más grande de datos, especificado en bytes, que un dispositivo de comunicaciones puede recibir en un único trozo, sin fragmentar. Para una comunicación óptima la suma del número de bytes del segmento de datos y la cabecera debe ser menor que el número de bytes de la unidad máxima de transferencia (MTU) de la red.
El MSS tiene gran importancia en las conexiones en Internet, particularmente en la navegación web. Cuando se usa el protocolo TCP para efectuar una conexión, los ordenadores que se conectan deben acordar y establecer el tamaño de la MTU que ambos puedan aceptar. El valor típico de MTU en una red puede ser, por ejemplo, 576 o 1500 bytes. Tanto la cabecera IP como la cabecera TCP tienen una longitud variable de al menos 20 bytes, cada una. En cualquier caso, el MSS es igual a la diferencia MTU - cabecera TCP - cabecera IP.
A medida que los datos son encaminados por la red deben pasar a través de múltiples routers. Idealmente, cada segmento de datos debería pasar por todos los routers sin ser fragmentado. Si el tamaño del segmento de datos es demasiado grande para cualquiera de los routers intermedios, los segmentos son fragmentados. Esto aminora la velocidad de conexión, y en algunos casos esta bajada de velocidad puede ser muy apreciable. La posibilidad de que ocurra esa fragmentación puede ser minimizada manteniendo el MSS tan pequeño como sea razonablemente posible. En la mayoría de los casos, el MSS es establecido automáticamente por el sistema operativo.

## Valores por defecto

El tamaño máximo de segmento TCP por defecto para IPv4 es 536. Para IPv6 es 1220. Cuando un host desea establecer el tamaño máximo de segmento a un valor distinto del predeterminado, el tamaño máximo de segmento se especifica como una opción TCP, inicialmente en el paquete TCP SYN durante el handshake TCP. El valor no se puede cambiar una vez establecida la conexión.

## Comunicación entre capas

Para notificar el MSS al otro extremo, ses realiza una comunicación entre capas del siguiente modo:
* El Controlador de Red (ND) o interfaz debe conocer la Unidad Máxima de Transmisión (MTU) de la red directamente conectada.
* El IP debe preguntar al Controlador de Red por la unidad máxima de transferencia.
* El TCP debe preguntar al IP por el Tamaño Máximo de Datagrama de Datos (MDDS). Este es el MTU menos la longitud de la cabecera IP (MDDS = MTU - IPHdrLen).
* Al abrir una conexión, TCP puede enviar una opción MSS con el valor igual a: MDDS - TCPHdrLen. En otras palabras, el valor MSS a enviar es: MSS = MTU - TCPHdrLen - IPHdrLen
Mientras se envían segmentos TCP al otro extremo, se realiza una comunicación entre capas de la siguiente forma:
* TCP debe determinar el Tamaño Máximo de Segmento de Datos (MSDS) a partir del valor por defecto o del valor recibido de la opción MSS.
* TCP debe determinar si la fragmentación de la fuente es posible (preguntando a la IP) y deseable.
* Si es así, TCP puede entregar a IP, segmentos (incluyendo la cabecera TCP) hasta MSDS + TCPHdrLen.
* Si no, TCP puede entregar a IP, segmentos (incluyendo la cabecera TCP) hasta el menor de (MSDS + TCPHdrLen) y MDDS.
* IP comprueba la longitud de los datos que le pasa TCP. Si la longitud es menor o igual que MDDS, IP adjunta la cabecera IP y la entrega al ND. En caso contrario, la IP debe realizar la fragmentación en origen.

## MSS y MTU

A veces se confunde MSS con MTU/PMTU, que es una característica de la capa de enlace subyacente, mientras que MSS se aplica específicamente a TCP y, por tanto, a la capa de transporte. Los dos son similares en el sentido que limitan el tamaño máximo de la carga útil transportada por su respectiva unidad de datos de protocolo (trama para MTU, segmento TCP para MSS), y están relacionados ya que MSS no puede exceder la MTU para su enlace subyacente (teniendo en cuenta la sobrecarga de cualquier cabecera añadida por las capas por debajo de TCP). Sin embargo, la diferencia, además de aplicarse a capas diferentes, es que la MSS puede tener un valor distinto en cualquier dirección y también que las tramas que superan la MTU pueden hacer que los paquetes (que encapsulan segmentos) sean fragmentados por la capa de red, mientras que los segmentos que superan la MSS simplemente se descartan.

## Para saber más

* Comer, Douglas E. (2006). Internetworking with TCP/IP. Vol. 1 (5/E ed.). Upper Saddle River, NJ, USA: Prentice Hall.
* Kozierok, Charles M. (2005-09-20). The TCP/IP Guide (3.0 ed.). Retrieved 2011-09-08.
* Datos: Q1914257