La longitud máxima del segmento
No es difícil imaginar que el parámetro más relevante para la longitud máxima del segmento es la MTU de la interfaz del dispositivo de red. La MTU de Ethernet es 1500, la longitud del encabezado IP básico es 20 y. la longitud del encabezado TCP es 20. Entonces el valor de MSS puede llegar a 1460 (MSS no contiene encabezados de protocolo, solo datos de la aplicación).
En el protocolo de enlace de tres vías TCP anterior, vimos que ambas partes comunicantes anunciaban su valor MSS esperado a través de opciones TCP. Este valor proviene directamente del miembro advmss de la estructura tcp_sock. La MTU de la interfaz del dispositivo de red menos la longitud del encabezado IP y el encabezado TCP. En Ethernet local, puede llegar hasta 1460 (si no hay opciones en el encabezado). El miembro rx_opt es un TCP _ opciones _ recibido estructurado, que registra la notificación de opción TCP del par. Su miembro mss_clamp representa el límite superior de mss y su fuente es la notificación de mss del par, mientras que mss_user es el mss establecido por el usuario y tiene la máxima prioridad. Si hay user_mss, use user_mss e ignore los demás.
De lo anterior podemos ver que MSS se puede negociar a través del segmento SYN (la opción MSS solo puede aparecer en el segmento SYN), pero no se puede negociar bajo ninguna condición. Si una parte no acepta el valor mss de la otra parte y no hay user_mss, el MSS se establece en el valor predeterminado de 536 bytes (más encabezados, lo que permite 576 bytes de datagramas IP). De hecho, el valor inicial de la estructura TCP_sock-->rx_opt-mss_clamp se establece en 536 y no se modificará antes de recibir la notificación MSS del par. Y mss_cache es miembro de la estructura tcp_sock, que se utiliza para almacenar en caché el último mss válido y su valor inicial también se establece en 536.