The estimated reading time for this post is 1 minutes

Difference between MSS and MTU

If you start to study the protocols of the Internet and particular TCP/IP you may bump into MSS & MTU

MSS and MTU are almost the same, but not quite.


MSS is the Maximum Segment Size which is the largest TCP segment (layer 4, yet not including the layer 4 header) that can fit on the current physical medium.

MTU is the Maximum Transmission Unit which is the largest IP packet (layer 3, including the layer 3 header) that can be transmitted.

The MSS is used during the 3-way handshake of TCP to let each side know that maximum segment size they can transmitt in a single frame.  It’s purpose is to minimize IP fragmentation.  However, that is only each side.  Who only knows what is in the middle.  That is why each entity in between must know what its MTU size is in case fragmentation is required somewhere along the path.

For example, if you were on an ethernet segment:

Maximum frame size:       1518
less the DLC header       – 18 *
equals MTU:               1500
less IP header            – 20 **(default)
less TCP header           – 20 ***(default)
equals MSS:               1460

* DLC contains 6 bytes for destination MAC address, 6 for source, 2 for Ethertype, and 4 for CRC

** IP header is 20 bytes by default, but can be as large as 60 bytes.

*** TCP header is 20 bytes by default, but can be as large as 60 bytes.  It is much more common for the TCP header to have options and therefore be larger than the default.