Protocols

MSS

Maximum Segment Size

The largest bite of data TCP packs into one segment. It is quietly derived from the MTU, and when it is wrong, you get the maddening symptom of pages that load halfway and freeze.

MSS (Maximum Segment Size) is the largest amount of application data that TCP will place in a single segment, not counting headers. It is the data-only counterpart to the MTU, which measures the whole packet. The two ends of a connection each announce their MSS during the TCP handshake, and the smaller value is used so neither side sends segments too large for the path.

How MSS comes from MTU

MSS is simply the MTU with the headers removed:

MSS = MTU − IP header − TCP header

Standard Ethernet:
  MTU        = 1500 bytes
  IP header  =   20 bytes
  TCP header =   20 bytes
  MSS        = 1460 bytes

So on an ordinary connection, each TCP segment carries up to 1460 bytes of real data wrapped inside a 1500-byte packet. The headers are overhead the MSS deliberately excludes.

MTU vs MSS at a glance

MTUMSS
MeasuresThe whole packetJust the data payload
Includes headers?YesNo
LayerNetwork/linkTransport (TCP only)
Typical value1500 bytes1460 bytes

The "loads halfway then hangs" problem

The reason MSS matters in practice is a notorious symptom: small pages load fine, but larger transfers stall partway and time out. This almost always means full-size packets are being silently dropped because the real path cannot carry them — common when a VPN or PPPoE connection adds its own headers and shrinks the usable MTU below 1500. The tiny handshake and first packets squeeze through; the big data segments do not.

MSS clamping: the fix

The standard cure is MSS clamping (also called "MSS fix" or "clamp MSS to PMTU"). A router in the path rewrites the MSS value announced during the handshake downward, so both ends agree to send smaller segments that fit the tunnel's reduced MTU. Because it happens at connection setup, no packet is ever built too large in the first place — avoiding the drops entirely. Most routers expose this as a single toggle, and enabling it resolves the classic VPN/PPPoE "stuck page" issue without needing to lower the MTU on every device. It is the targeted, transport-layer answer to a path-MTU mismatch.

Related Terms

More From This Section