Niet alleen werd de IP-adresstructuur gewijzigd, ook de header onderging een aantal grondige wijzigingen die o.a. tot een grotere performantie moeten leiden. Ter vergelijking:
+-------+-------+---------------+-------------------------------+
|Version| 4 bits| 8 bits | 16 bits |
| == 4 | IHL |Type of Service| Total Length |
+-------+-------+---------------+-------------------------------+
| 16 bits | 4 bits| 12 bits |
| Identification | Flags | Fragment Offset |
+-------------------------------+-------------------------------+
| 8 bits | 8 bits | 16 bits |
| Time to Live | Protocol | Header Checksum |
+-------------------------------+-------------------------------+
| 32 bits |
| Source Address |
+---------------------------------------------------------------+
| 32 bits |
| Destination Address |
+---------------------------------------------------------------+
| options |
| variable length |
+---------------------------------------------------------------+
|---- 32 bits ----|
totale lengte 5 x 4 bytes: 20 bytes + opties (variabel)
+-------+---------------+---------------------------------------+
|Version| 8 bits | 20 bits |
| == 6 | Traffic Class | Flow Label |
+-------+---------------+-------+---------------+---------------+
| 16 bits | 8 bits | 8 bits |
| Payload Length | Next Header | Hop Limit |
+-------------------------------+---------------+---------------+
4 + 128 bits +
x + +
32 + Source Address +
+---------------------------------------------------------------+
4 + 128 bits +
x + +
32 + Destination Address +
+---------------------------------------------------------------+
totale lengte 10 x 4 bytes: 40 bytes
De primaire IPv6 header is altijd precies 40 bytes lang. Eventuele opties worden meegegeven in optionele extension headers. Hierdoor krijgen de backbone-routers het heel wat makkelijker: ze kunnen er vanop aan dat elke header net even lang is, en ze moeten zich niet bezighouden met niet relevante opties.
Het next header veld bevat het type van het volgende veld: een IPv6 extension header of een header van een bovenliggende netwerklaag (bv. TCP)
Maakt beter duidelijk waar TTL eigenlijk voor staat: voor elke node die gepaseerd wordt, wordt de Hop Limit verlaagd. Als de Hop Limit nul is, wordt het pakket genegeerd ("vernietigd").
Aangezien de lengte van de IPv6 header bekend is moet deze niet meer meegenomen worden in de lengte berekening. Verder voorziet IPv6 in zogenaamde jumbo-grams: d.w.z. paketten waarvan de totale lengte meer dan 64kB bedraagt. Daartoe wordt het payload length veld op nul gezet en wordt een extra extension header ingevoerd.
IPv6 voorziet enkel in end-to-end fragmentatie, met een speciale extension header die enkel door de eindstations gelezen wordt. De communicerende eindstations moeten aan de hand van MTU-discovery zelf de Maximum Transfer Unit (MTU) bepalen.
Pakketten kunnen onderweg niet meer in fragmenten worden onderverdeeld. De reden hiervoor is tweeërlei: eerst en vooral bezorgde het fragmenteren van IP-paketten de routers veel overlast, en ten tweede zorgde het fragmenteren ook voor beveiligingsproblemen.
Er wordt geen header checksum meer berekend omdat dit weinig garanties biedt op de integriteit van de data, en omdat onderliggende of bovenliggende (transport)lagen toch al in een checksum voorzien. Verder zorgt het berekenen van de checksum voor een onnodig belasting van de routers.
Tesamen met het vroegere "Type of service" (nu Traffic Class) moet het Flow Label Quality of Service mogelijk maken. Traffic Class geeft aan welke gewenste prioriteit dit pakket heeft. Het begrip "flow" moet als volgt geïnterpreteerd worden: een aantal pakketten die samen één datastroom volgen, vormen een flow. Het flow-label dient ter identificatie van deze stroom en moet het mogelijk maken om resources te prealloceren. Alle pakketten afkomsting van hetzelfde source adress en met hetzelfde fow-label worden geacht tot die flow te behoren.
Natuurlijk hangt de implementatie van Quality of Service niet van IPv6 alleen af: IPv6 blijft een pakket-geschakeld netwerk-protocol, dat afhankelijk is van de onderliggende data-link laag.