Connected: An Internet Encyclopedia
RFC 1122 - 4.2.2.6 Maximum Segment Size Option: RFC-793 Section 3.1

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1122
Up: 4. TRANSPORT PROTOCOLS
Up: 4.2 TRANSMISSION CONTROL PROTOCOL -- TCP
Up: 4.2.2 PROTOCOL WALK-THROUGH
Prev: 4.2.2.5 TCP Options: RFC-793 Section 3.1
Next: 4.2.2.7 TCP Checksum: RFC-793 Section 3.1

### 4.2.2.6 Maximum Segment Size Option: RFC-793 Section 3.1

TCP MUST implement both sending and receiving the Maximum Segment Size option [TCP:4].

TCP SHOULD send an MSS (Maximum Segment Size) option in every SYN segment when its receive MSS differs from the default 536, and MAY send it always.

If an MSS option is not received at connection setup, TCP MUST assume a default send MSS of 536 (576-40) [TCP:4].

The maximum size of a segment that TCP really sends, the "effective send MSS," MUST be the smaller of the send MSS (which reflects the available reassembly buffer size at the remote host) and the largest size permitted by the IP layer:

         Eff.snd.MSS =

            min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize

where:

- SendMSS is the MSS value received from the remote host, or the default 536 if no MSS option is received.

- MMS_S is the maximum size for a transport-layer message that TCP may send.

- TCPhdrsize is the size of the TCP header; this is normally 20, but may be larger if TCP options are to be sent.

- IPoptionsize is the size of any IP options that TCP will pass to the IP layer with the current message.

The MSS value to be sent in an MSS option must be less than or equal to:

         MMS_R - 20

where MMS_R is the maximum size for a transport-layer message that can be received (and reassembled). TCP obtains MMS_R and MMS_S from the IP layer; see the generic call GET_MAXSIZES in Section 3.4.

DISCUSSION:

  The choice of TCP segment size has a strong effect on performance. Larger segments increase throughput by amortizing header size and per-datagram processing overhead over more data bytes; however, if the packet is so large that it causes IP fragmentation, efficiency drops sharply if any fragments are lost [IP:9].

  Some TCP implementations send an MSS option only if the destination host is on a non-connected network. However, in general the TCP layer may not have the appropriate information to make this decision, so it is preferable to leave to the IP layer the task of determining a suitable MTU for the Internet path. We therefore recommend that TCP always send the option (if not 536) and that the IP layer determine MMS_R as specified in 3.3.3 and 3.4. A proposed IP-layer mechanism to measure the MTU would then modify the IP layer without changing TCP.

Next: 4.2.2.7 TCP Checksum: RFC-793 Section 3.1

Connected: An Internet Encyclopedia
RFC 1122 - 4.2.2.6 Maximum Segment Size Option: RFC-793 Section 3.1