Internet Protocol : protocole de l'Internet.

Besoin

Acheminer les datagrammes d'une machine à une autre.

Conception

Couches OSI Exemples Couches TCP
3 : Réseau
IP
Réseau
ARP/RARP Liaison
2 : Liaison données Ethernet Token Ring Liaison
1 : Physique Paire torsadée Câble coaxial Fibre optique Liaison

Un datagramme IP à une taille limite de 64 Ko (65535 octets) mais le réseau sous-jacent limite le plus souvent cette taille à une mesure inférieure appelée MTU (Maximum Transfer Unit), aboutissant à une fragmentation du datagramme.

Un datagrame IP [6] contient :

Section Octet
Contenu
Commentaire
En-tête IPv6 0 Version (4 bits) = 6, Priorité (4 bits)
1-3 Flow Label Qualité de service
4-5 Payload length Longueur (en octets) du reste du paquet (à l'exclusion de l'entête IPv6)
6 Type du prochain en-tête
7 Hop limit Nombre maximum de noeuds intermédiaires (champ TTL de IPv4)
8-23 Adresse IP source
24-39 Adresse IP destination
Options noeuds on Type du prochain en-tête Facultatif
on+1 Longueur (en blocs de 8 octets) de l'en-tête (à l'exclusion des 8 premiers)
on+2
Options destination (routeurs) 2-3 Type du prochain en-tête Facultatif
options
Routage explicite 4-5 Facultatif
Next Header Type du prochain en-tête
Fragmentation 5-6 Facultatif
Next Header Type du prochain en-tête
Authentification 7 Facultatif
Next Header Type du prochain en-tête
Options destination finale 8 Facultatif
Next Header Type du prochain en-tête
Données Données 23- Données Protocole encapsulé (TCP, UDP, ICMP, etc. ou même IPv6)

Un datagrame IP [4] contient :

Section Octet
Contenu
Commentaire
En-tête 0 Version (4 bits) = 4, Hlen (4 bits) 4 encore souvent car IPV4 dure depuis 30 ans
1 Type de service
2-3 Longueur totale
4-5 Identification "N° de série" = N° de séquence pour ICMP
5-6 Drapeaux (4 bits) + Offset fragment (12 bits) Drapeaux = fragmente plus, ne fragmente pas...
7 TTL Time To Live
8 Protocole
9-10 Somme de contrôle en-tête
11-14 Adresse IP source
15-18 Adresse IP destination
19-22 Options IP (12 bits) + Remplissage de 0 Les options IP sont peu utilisées
Données 23- Données

Adresse

Une adresse IP est codée sur :

  • 32 bits (4 octets) pouvant énumérer 4294967296 (2^32) adresses [4].
  • 128 bits (16 octets) [6].

Cependant une adresse est codée selon :

  • un numéro de réseau
    • codé sur 7 à 23 bits : entre 0 et 2097152 réseaux [4]
    • 10^9 réseaux [6]
  • un numéro de machine dans ce réseau
    • codé sur 24 à 8 bits : entre 16777216 et 256 machines sur un réseau [4]

On définit ainsi plusieurs classes d'adresses IP :

Classe Adresse min Adresse max Bits Nombre de réseaux Nombre de machines Commentaire
0.0.0.0 000... Identifie le réseau lui-même
A 1.x.y.z 127.x.y.z 0xxx 127 16777216
127.0.0.1 Loopback (boucle locale)
B 128.0.y.z 191.255.y.z 10xxx 16384 65536 Trop grands, saturation
C 192.0.0.z 223.255.255.z 110xxx 2097152 256 Trop petits, inflation
D 224.0.0.z ? Multicast
E
255.255.255.255 111... Broadcast (vers toutes les machines du réseau)

La manière dont sont définies ces classes d'adresses réduit le nombre réel d'adresses possibles à 3,3 millards environ.

L'association d'une adresse IP à une adresse physique (résolution d'adresse) dépend du type de réseau. Elle peut être

  • statique (table par machine)
  • dynamique : ARP pour Ethernet

Exemples

Changer/affecter l'adresse IP d'une interface sous Unix :

/etc/ifconfig lan0 34.157.0.252

Liste des interfaces sous Unix :

netstat -in

Notes

  • Une adresse IP est associée une interface réseau (une carte réseau typiquement, et une machine peut en avoir plusieurs)
  • une adresse IP est généralement masquée derrière son nom via un serveur DNS
  • Aujourd'hui Internet utilise en majeure partie IPv4.
  • Défini par l'IETF.

Limitations

  • Non connecté / sans état
  • Non fiable : l'acheminement se fait du mieux possible (best effort), mais il n'y a pas de garantie d'acheminement ni de séquencement. D'où le besoin d'une couche de transport au-dessus, avec des procotoles comme TCP.
  • Le nombre d'adresses utilisables est devenu insuffisant (d'où des solutions comme IPv6 ou des contournements comme NAT).
  • Non sécurisé (corrigé par IPSec).

Voir