What are the common IPv6 Next Header / protocol numbers worth knowing?
These are the values the Next Header field can hold. Key extension headers: 0 = Hop-by-Hop, 43 = Routing, 44 = Fragment, 51 = AH, 50 = ESP, 60 = Destination Options, 59 = No Next Header. Key upper layers: 6 = TCP, 17 = UDP.
How "just Next Headers" actually works — the chaining mechanism:
Every IPv6 header (the base header and each extension header) carries an 8-bit Next Header field that names what comes immediately after it. That "what" is either an upper-layer protocol (like TCP 6, UDP 17, or ICMPv6 58) or another extension header. So the numbers below aren't only extension headers — they're the shared vocabulary for both cases.
When an extension header is present, it too has its own Next Header field pointing to whatever follows it, so the headers form a chain:
IPv6 base (NH=43) → Routing (NH=60) → Destination Options (NH=6) → TCP
A parser "walks the chain," following each Next Header value until it reaches an upper-layer protocol number (the actual payload) or 59 = No Next Header (nothing follows). This is how a single 8-bit field can express both "here's the payload protocol" and "here's one more optional header first."
| Number | Header / protocol |
|---|---|
| 0 | Hop-by-Hop Options |
| 43 | Routing |
| 44 | Fragment |
| 51 | Authentication Header (AH) |
| 50 | Encapsulating Security Payload (ESP) |
| 60 | Destination Options |
| 59 | No Next Header (end of the header stack) |
| 6 | TCP |
| 17 | UDP |
| 58 | ICMPv6 |
These numbers are shared with IPv4's protocol-number registry, which is why TCP is still 6 and UDP still 17 — exactly as in IPv4.
Tip: 59 ("No Next Header") is special — it means "there's nothing after this header," so a parser stops walking the chain there.
Go deeper:
IPv6 packet — Extension headers (Wikipedia) — the extension-header table with each type number (0, 43, 44, 50, 51, 59, 60).