Maximum segment size

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The maximum segment size (MSS) is a parameter of the Options field of the TCP header that specifies the largest amount of data, specified in octets, that a computer or communications device can receive in a single TCP segment. It does not count the TCP header or the IP header.[1] The IP datagram containing a TCP segment may be self-contained within a single packet, or it may be reconstructed from several fragmented pieces; either way, the MSS limit applies to the total amount of data contained in the final, reconstructed TCP segment.

The default TCP Maximum Segment Size is 536.[2] Where a host wishes to set the maximum segment size to a value other than the default, the maximum segment size is specified as a TCP option, initially in the TCP SYN packet during the TCP handshake. The value cannot be changed after the connection is established.[3]

Each direction of data flow can use a different MSS.

To avoid fragmentation in the IP layer, a host must specify the maximum segment size as equal to the largest IP datagram that the host can handle minus the IP header size and TCP header sizes.[4] Therefore IPv4 hosts are required to be able to handle an MSS of 536 octets (= 576[5] - 20 - 20) and IPv6 hosts are required to be able to handle an MSS of 1220 octets (= 1280[6] - 40 - 20).

Small MSS values will reduce or eliminate IP fragmentation, but will result in higher overhead.[7]

For most computer users, the MSS option is established by the operating system.

Further reading[edit]

  • 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. 

See also[edit]


  1. ^ RFC 879, page 2, Section 3, "The MSS counts only data octets in the segment, it does not count the TCP header or the IP header."
  2. ^ RFC 879, page 1, Section 1, "The default TCP Maximum Segment Size is 536."
  3. ^ RFC 793, page 19, Section 3.1, "This field must only be sent in the initial connection request (i.e., in segments with the SYN control bit set)."
  4. ^ RFC 2460, page 28, Section 8.3
  5. ^ RFC 879, page 1, Section 1
  6. ^ RFC 2460, page 24, Section 5
  7. ^ The TCP/IP Guide, TCP Maximum Segment Size (MSS) and Relationship to IP Datagram Size