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
| MTU | MSS | |
|---|---|---|
| Measures | The whole packet | Just the data payload |
| Includes headers? | Yes | No |
| Layer | Network/link | Transport (TCP only) |
| Typical value | 1500 bytes | 1460 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.