Internet Protocol versie 6 of IPv6 is versie 6 van het internetprotocol voor het gebruik van IP-adressen. Het is de opvolger van Internet Protocol versie 4 en is de tweede versie van het internetprotocol die in gebruik is genomen. De tussenliggende versie IPv5 was een experimentele aanvulling op IPv4, maar deze werd nooit geïmplementeerd.

Toen internet in het begin van de jaren negentig populair werd, was het al snel duidelijk dat IPv4 met de maximaal beschikbare ca. 4,3 miljard adressen niet op de toekomst berekend was. IPv6 zou dit dreigende tekort met 128-bit-adressen oplossen. IPv6 werd in december 1998 als Draft Standard, als standaardontwerp geaccepteerd. Een aantal grote bedrijven, zoals Microsoft en Google, bood op 8 juni 2011, de wereldtestdag voor IPv6, de websites voor één dag aan over zowel IPv4 als IPv6 om zo de impact hiervan te testen.Stichting IPv6 Nederland. Wereld IPv6 Dag op 8 juni 2011. Verschillende internetserviceproviders en ondernemingen activeerden op 6 juni 2012 een permanent IPv6. World IPv6 Launch. Gearchiveerd op 2 augustus 2023. Het werd op 14 juli 2017 een internetstandaard. A Siddiqui voor de Internet Society. RFC 8200 – IPv6 has been standardized, 17 juli 2017. Gearchiveerd op 9 juni 2023.

Verbeteringen IPv6 is onder andere ontwikkeld om de beperkingen en tekortkomingen van IPv4 te verhelpen. Met name het tekort aan beschikbare IP-adressen levert een enorm probleem op: binnen de systematiek van IPv4 zijn ongeveer 4 miljard adressen beschikbaarMinder dan 1 per bewoner van de aarde, de wereldbevolking telt ruim 7 miljard mensen. en op 3 februari 2011 heeft de Internet Assigned Numbers Authority de laatste IPv4-adresblokken toegewezen.J Schellevis voor tweakers.net ipv4-blocks zijn toegewezen, 3 februari 2011.

IPv4-adressen bestaan uit 32 bits, terwijl IPv6-adressen uit 128 bits bestaan. Daardoor telt IPv4 ongeveer 4 × 109 (4.294.967.296) adressen, terwijl er onder IPv6 ongeveer 3,4 × 1038 (340.282.366.920.938.000.000.000.000.000.000.000.000) kunnen worden toegewezen. Het nieuwe IPv6 heeft dus een bijna onuitputtelijke voorraad adressen: voor elke aardbewoner zijn er ongeveer 50 quadriljard beschikbaar.

Naast een groot adresbereik kent IPv6 nog een aantal verbeteringen: Betere routing en netwerk-autoconfiguratie. Overbodig maken van NAT. Gegevensbeveiliging op IP-niveau. Ondersteuning van mobiele nodes.

IPv6-adressering Het belangrijkste verschil tussen IPv4 en IPv6 is de lengte van het netwerkadres. Een IPv6-adres, zoals gedefinieerd in RFC 2373, RFC 2374 en RFC 2460, is 128 bits lang. Dit komt overeen met 32 hexadecimale cijfers, die in een IPv6-adres worden gebruikt, zoals beschreven in de volgende sectie.

Het aantal mogelijke adressen is 2128 ≈ 3,4 × 1038. Het aantal IPv6-adressen kan ook worden berekend als 1632, omdat elk van de 32 hexadecimale cijfers 16 mogelijke waarden kent.

Soms bestaat een IPv6-adres uit twee logische delen: een netwerkprefix van 64 bits en een "host-addressing"-deel van 64 bits, dat vaak automatisch van de interface ofwel het MAC-adres wordt afgeleid.

Notatie van IPv6-adressen IPv6-adressen zijn 128 bits lang en worden normaal geschreven als 8 groepen van 4 hexadecimale cijfers, gescheiden door dubbele punten: 2001:0db8:85a3:0000:1319:8a2e:0370:7344 is een geldig IPv6-adres.

Er zijn enkele mogelijkheden om de notatie te verkorten:

In elke groep van vier cijfers kunnen de voorloopnullen worden weggelaten. Het is zelfs mogelijk dat een groep van vier nullen wordt weggelaten. Bijvoorbeeld: 2001:0db8:85a3:0000:1319:8a2e:0370:7344 kan ook worden geschreven als 2001:db8:85a3::1319:8a2e:370:7344

Staan er meerdere dubbele punten achter elkaar, dan mogen ze tot twee dubbele punten gereduceerd worden. Dit mag echter niet meer dan een keer binnen een IPv6-adres. Bijvoorbeeld: de notatie 2001:0db8:0000:0000:0000:0000:1428:57ab kan door voorloopnullen weg te laten worden gereduceerd tot 2001:db8:::::1428:57ab en dit wordt verkort tot 2001:db8::1428:57ab duiden alle hetzelfde IPv6-adres aan.

Een volledig IPv6-adres bestaat uit acht groepen van vier cijfers. In het bovenstaande voorbeeld zijn er maar vier groepen, er ontbreken vier groepen, en de twee dubbele punten staan voor vier groepen van nullen. Voor :: moet dus :0000:0000:0000:0000: worden ingevuld om het IPv6-adres weer compleet te maken.

Daarentegen, de notatie 2001::db8::cade is niet toegelaten, omdat bij deze notatie meerdere mogelijkheden zouden bestaan voor de posities van de "0000".

De laatste 32 bits mogen, zoals gebruikelijk bij IPv4, decimaal geschreven worden als vier groepen van acht bits. In dit geval gebruikt men een punt als scheidingsteken; derhalve ::ffff:192.168.89.9 is gelijk aan ::ffff:c0a8:5909, maar is niet gelijk aan ::192.168.89.9 of ::c0a8:5909

Het ::ffff:1.2.3.4-formaat wordt een IPv4-mapped address genoemd en het gebruik hiervan is bedoeld om IPv4 en IPv6 samen te gebruiken op één systeem. Het ::1.2.3.4 formaat is een IPv4-compatible address en het gebruik hiervan wordt ontraden in RFC 4291.: IP Version 6 Addressing Architecture

IPv4-adressen worden eenvoudig naar het IPv6-formaat geconverteerd. Het IPv4-adres 135.75.43.52 wordt dan 0000:0000:0000:0000:0000:FFFF:874B:2B34 of ::FFFF:874B:2B34. Ook kan de hybride notatie gebruikt worden (IPv4-mapped addresses), waarmee het ::ffff:135.75.43.52 wordt.

IPv6-pakket thumb|IPv6-header

Een IPv6-pakket bestaat uit twee delen: de header en de payload.

IPv6 kent verschillende headers, een vaste header en een aantal optionele headers. Bij het ontwerp van IPv6 is gekozen voor een kleine, efficiënte vaste header die, naar behoefte, uitgebreid kan worden met optionele headers.

De vaste header bestaat uit de eerste 40 bytes van het pakket, met zowel het afkomstadres als het doeladres van het pakket (elk 128 bits), de IP-versie (4 bits), verkeersklasse (8 bits, Packet Priority), flow label (20 bits, QoS-management), grootte van de lading (16 bits), next header (die aangeeft wat de volgende header zal zijn) en de hoplimiet (8 bits, time to live). Hierna volgt de lading, die minimaal 1280 bytes groot moet zijn of 1500 bytes in een omgeving met een flexibele MTU-grootte. De lading kan tot 65.535 bytes groot zijn als de "jumbo payload"-optie ondersteund wordt.

Optionele headers zijn: Hop-by-Hop Options header Routing header Fragment header Destination Options header Authentication header Encrypted Security Payload header

Verschillen met IPv4 De wijze waarop het protocol werkt, verschilt op het eerste gezicht misschien niet veel met het IPv4-protocol. Onder de motorkap zijn er echter aanzienlijke verschillen. Zo leunt IPv6 sterk op het uitgebreide ICMPv6-protocol zoals beschreven in RFC 4443. Onderdeel daarvan is bijvoorbeeld hoe laag 2 (MAC)-adressen worden geleerd. Zo is het address resolution protocol overbodig geworden en gebruikt IPv6 het Neighbor Discovery Protocol voor dit doeleinde. Een ander onderdeel van ICMPv6 is bijvoorbeeld SLAAC (StateLess Address AutoConfiguration), wat mogelijk maakt automatisch IPv6-adressen toe te kennen zonder dat daar een Dynamic Host Configuration Protocol-server aan te pas komt.

Een IPv6-subnet bevat tevens niet langer een netwerkadres en een broadcastadres: het eerste adres in een IPv6-subnet is het router-anycast-adres, waar dat het netwerkadres is in IPv4, terwijl broadcast in IPv6 geïmplementeerd wordt als een speciaal geval van multicast, waarbij het adres ff02::1 overeenkomt met het subnet-specifieke broadcastadres in IPv4.

Routering en toekenning van IPv6-netwerken Zoals reeds aangegeven, is IPv6 een IP-adres van 128 bits. Een volledig adres wordt ook wel aangeduid als een /128-adres.

Adressen op een lokaal netwerksegment Een LAN heeft een /64-adres; de eerste 64 bits van het netwerkadres zijn dus gelijk voor alle nodes in het lokale netwerk. De laatste 64 bits maken iedere node op het lokale netwerk uniek. Hierdoor is het uitdelen van IP-nummers overbodig; als gebruikgemaakt wordt van autoconfiguratie worden de laatste 64 bits automatisch zelf gekozen door de op het netwerk aangesloten systemen. Oorspronkelijk werden deze bits gekozen op basis van het MAC-adres van de netwerkkaart. Dit heeft echter het nadeel dat de laatste 64 bits van het adres altijd gelijk zijn, ongeacht op welk netwerk het apparaat is aangesloten. Een apparaat dat vanaf meerdere netwerken dezelfde websites bezoekt kan zo getraceerd worden, zelfs wanneer de gebruiker privacy-beschermende maatregelen heeft getroffen zoals het uitschakelen van cookies. Daarom worden er tegenwoordig meestal privacy-uitbreidingen: Privacy Extensions for Stateless Address Autoconfiguration in IPv6 gebruikt die de laatste 64 bits regelmatig laten veranderen. Netwerkbeheerders die dat onwenselijk vinden kunnen autoconfiguratie uitschakelen en de adressen handmatig of middels bijvoorbeeld DHCPv6: Dynamic Host Configuration Protocol for IPv6 (DHCPv6) uitdelen.

Voorbeeld van hoe een lokaal adres wordt aangemaakt op basis van het MAC-adres: Het MAC-adres is bijvoorbeeld 00-12-34-56-78-90. Dit wordt in 2 stukken verdeeld: 00-12-34 en 56-78-90. Daartussen wordt FFFE geplaatst: 0012-34FF-FE56-7890. De universal/local bit wordt aangepast. Die bit bevindt zich op de voorlaatste plaats van het eerste octet. In dit voorbeeld wordt 00 veranderd in 02, want 0000 0000 wordt 0000 0010. De host-ID ziet er dan als volgt uit: 0212:34FF:FE56:7890. Dit wordt samengevoegd met de prefix, wat dan FE80::0212:34FF:FE56:7890 vormt.

De prefix _fe80_ duidt altijd op een adres in het lokale segment; het adres FE80::1319:8a2e:0370:7344/128 duidt dus per definitie op een node in het lokale segment. Elk LAN maakt gebruik van deze prefix, zelfs als er niets geconfigureerd is. Daarnaast kunnen er mogelijk andere prefixen gebruikt worden welke door de op het LAN aangesloten routers geadverteerd worden.

Een netwerkinterface kan bij IPv6 meerdere adressen hebben. Het is heel gebruikelijk dat een aangesloten systeem een _fe80_ adres heeft en voor elke door de routers geadverteerde prefix een adres gebaseerd op het MAC-adres en mogelijk één of meerdere adressen volgens de privacy-uitbreidingen.

Adressen binnen een netwerk Een campus- of bedrijfsnetwerk heeft een /48-adres. Alle nodes binnen dit netwerk delen dus dezelfde eerste 48 bits. De bits 49 tot en met 64 worden gebruikt om het segment binnen het bedrijfsnetwerk aan te geven.

De prefix _fc80_ duidt altijd op een adres binnen het eigen netwerk. Op deze wijze kan een node binnen het netwerk geadresseerd worden.

Adressering op hoger niveau Een van de uitgangspunten van het ontwerp van IPv6 is de betere routeerbaarheid. Door de overvloed van IP-nummers is het mogelijk netwerknummerhiërarchie op te zetten.

Op hoog niveau wordt een onderscheid gemaakt tussen netwerknummers voor de verschillende continenten. Binnen de continenten kunnen internet exchanges en internetaanbieders hiërarchische nummerplannen opstellen.

Deze hiërarchie kent twee voordelen: Routeringstabellen in routers worden minder complex. Applicaties kunnen, aan de hand van het IP-nummer, bepalen welke nodes netwerktechnisch dichterbij staan. Zo kunnen applicaties als BitTorrent distributiealgoritmen ontwikkelen die efficiënter netwerkverkeer opleveren doordat bij voorkeur peers worden gekozen die dichter bij elkaar staan.

Overbodig maken van NAT NAT is ontwikkeld als techniek om het adresprobleem op internet te omzeilen; NAT maakt het mogelijk meerdere nodes samen één IPv4-adres te laten delen.

NAT op IPv4 kent verschillende situaties: In het client-servermodel, bijvoorbeeld waar een computer verbinding zoekt met een mail- of webserver, biedt NAT geen belemmeringen.