# [Fondamentaux] IPv6

## Introduction

Cette page explique les changements apportés par **IPv6** par rapport à IPv4 ainsi que son fonctionnement.

## ![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/X2aimage.png)

## Les grands changements

IPv6 règle le problème du manque d'adresses IPv4 puisque ce n'est pas moins de **2<sup>128</sup> adresses** totales qui sont désormais disponibles.

Il y a tellement d'adresses qu'on s'est permis d'attribuer une adresse "publique" à chaque équipement, ce qui signifie un gain de performance sur les réseaux car il n'y aura **plus besoin du NAT** pour passer d'IP publique à privé.

D'ailleurs, **plusieurs adresses** IPv6 peuvent être attribuées à une même interface.

Elle est codée sur **8 blocs de 2 octets écrits en hexadécimal séparés par des ":"** .

IPv6 apporte aussi le support natif du protocole **IPsec**, la **suppression du broadcast** ainsi qu'un **simplification de l'entête**.

## Composition d'une adresse

Comme en IPv4, les IPv6 discernent la partie réseau de la partie hôte mais discernent aussi la **partie sous-réseau** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/wemimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/wemimage.png)

## Les types d'adresses

En IPv6, on distingue 3 types d'adresse IP, le loopback ainsi que l'adresse indéfinie.

#### Lien local

Certainement le type d'adresse le moins intéressant, il permet de faire communiquer deux équipements sur un **même lien**, une même connexion. Comme le lien local est propre à son segment, une même adresse IP peut être définie sur deux interfaces différentes d'un même appareil.

Ce type d'adresse est **automatiquement attribuée** lors de l'activation d'IPv6 sur un appareil.

<table border="1" id="bkmrk-plage-d%27adresse-fe80" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td class="align-center">Plage d'adresse</td></tr><tr><td class="align-center">**FE80::/10**</td></tr></tbody></table>

#### Unique local address

Cette adresse est utilisée au sein d'un réseau ou d'un groupe de réseau d'une organisation.

<table border="1" id="bkmrk-plage-d%27adresse-fc00" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td class="align-center">Plage d'adresse</td></tr><tr><td class="align-center">**FC00::0/7**</td></tr></tbody></table>

#### Publique

Il s'agit de l'équivalent de l'IP publique en IPv4. C'est pourquoi elle est valable partout dans le monde.

<table border="1" id="bkmrk-plage-d%27adresse-2000" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td class="align-center">Plage d'adresse</td></tr><tr><td class="align-center">**2000:: /3**</td></tr></tbody></table>

#### Loopback

Il existe aussi en IPv6, seulement sa forme a évoluée :

<table border="1" id="bkmrk-adresse-%3A%3A1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td class="align-center">Adresse</td></tr><tr><td class="align-center">**::1**</td></tr></tbody></table>

#### Adresse indéfinie

Souvent utilisée pour définir la gateway, cette adresse sert à désigner l'ensemble des adresses possibles :

<table border="1" id="bkmrk-adresse-%3A%3A" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td class="align-center">Adresse</td></tr><tr><td class="align-center">**::**</td></tr></tbody></table>

## Composition

Voici à quoi ressemble le format d'un paquet IPv6 :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/n5Wimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/n5Wimage.png)

#### Next header

Le champs *Protocol* de l'IPv4 a été remplacé par la notion de **Next Header** en IPv6, ce qui permet de ne pas limiter les protocoles et ainsi de pouvoir les imbriquer les uns dans les autres :

![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/0Dlimage.png)<span style="text-decoration: underline;">Remarque :</span> L'extension **ESP** permet de chiffrer la donnée.

## Règles de simplification

Une adresse IPv6 peut être simplifiée sous certaines conditions :

- Toute suite de **0000** peut être remplacée par **::**
- Ce remplacement ne peut être effectué qu’**une seule fois**.
- Les 0 en début de section peuvent être supprimés.
- Les 0 en fin de section ne peuvent pas être supprimés.

## NDP

En IPv6, ce n'est pas ARP qui se charge de la résolution mais **NDP** pour *Neighbor Disocvery Protocol* qui a un mécanisme semblable.

Une différence majeure se fait notamment sur l'utilisation du **multicast** plutôt que du broadcast (qui n'existe pas en IPv6).

De plus, on ne parle plus de requête ARP mais de **NS** (*Neighbor Solicitation*) ni de réponse ARP mais de **NA** (*Neighbor Advertisement*).

En outre, une vérification est faite pour éviter le problème d'ARP spoofing grâce au **DAD** (*Duplicate Address Detection*) qui va faire un NS avec sa propre adresse MAC pour vérifier que personne n'essaye d'usurper son identité.