Maximum segment size
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).
Low 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
- 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
References
- ↑ 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."
- ↑ RFC 879, page 1, Section 1, "The default TCP Maximum Segment Size is 536."
- ↑ 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)."
- ↑ RFC 2460, page 28, Section 8.3
- ↑ RFC 879, page 1, Section 1
- ↑ RFC 2460, page 24, Section 5
- ↑ The TCP/IP Guide, TCP Maximum Segment Size (MSS) and Relationship to IP Datagram Size