What is the difference between MTU and MSS, and why is the usual MSS 1460?
Show the answer
Say this first
The MTU is the largest IP packet a link can carry without fragmenting it: 1,500 bytes on standard Ethernet. The MSS is the largest TCP payload a host is willing to receive in one segment, announced in its SYN. On a 1,500-byte link it is 1,500 minus 20 bytes of IPv4 header minus 20 bytes of TCP header, so 1,460; with IPv6's 40-byte header it is 1,440. MSS is about TCP data only, MTU is about whole IP packets.
Go deeper
The layers of a full-size packet
| Piece | Bytes |
|---|---|
| TCP payload (MSS) | 1,460 |
| TCP header | 20 |
| IPv4 header | 20 |
| IP packet = MTU | 1,500 |
| Ethernet header + FCS | 14 + 4 |
| Frame on the wire | 1,518 (1,522 with an 802.1Q tag) |
With TCP timestamps on, every segment carries 12 bytes of options, so the data per packet is 1,448
even though the SYN still advertises 1,460. ss -ti shows this as mss:1448.
Common MTUs and matching MSS
| Link | IP MTU | MSS |
|---|---|---|
| Ethernet | 1,500 | 1,460 |
| PPPoE (8-byte header) | 1,492 | 1,452 |
| GRE over 1,500 (24 bytes overhead) | 1,476 | 1,436 |
| GRE over IPsec, common safe value | 1,400 | 1,360 |
| Jumbo frames | 9,000 | 8,960 |
MSS is announced, not negotiated
Each side tells the other what it can receive. The two directions can use different sizes. If a SYN has no MSS option, the default is 536 bytes for IPv4 and 1,220 for IPv6.
They will ask next
On a Cisco router, what is the difference between mtu and ip mtu?
mtusets the interface's layer 2 payload size for every protocol.ip mtusets the largest IPv4 packet on that interface and must not exceedmtu. On tunnels you normally setip mtu.Does UDP have an MSS?
No. There is no handshake to announce one. The application must size its datagrams, or IP fragments them. That is why DNS, QUIC and VPNs pick conservative packet sizes.
Traps
- Saying MSS includes the TCP header. It is payload only.
- Saying the two hosts negotiate one shared MSS. Each announces its own receive limit.