Transcript IPv4

IPv4
IPv4
 TCP/IP fait référence à un ensemble de protocoles d'échange de données
sur les réseaux informatiques
 Les protocoles de la couche transport TCP – Transmission Control
Protocol et de la couche réseau IP – Internet Protocol représentent les
briques de base de l'Internet
 Le terme TCP/IP qui nomme les deux protocoles incontournables, a été
choisi pour faire référence à la pile de protocoles qui permettra à
l'Internet de fonctionner
 Il est difficile d'établir la liste exhaustive des protocoles de l'Internet car
de nouveaux apparaissent régulièrement et tous ne sont pas essentiels à
l'implémentation de la pile TCP/IP
IPv4
 Le protocole IP correspond à un protocole de la couche réseau
 Il permet l'interconnexion de réseaux physiques hétérogènes et le
point d'entrée d'applications « utilisateur »
Pile OSI
Pile TCP/IP
Application
Présentation
Application
Session
Transport
Transport
TCP
Réseau
Réseau
IP
Liaison
Physique
Physique
IPv4
Architecture des protocoles TCP/IP :
 Bien qu'il n'existe pas de convention universelle sur la description
de TCP/IP par un modèle en couches, on admet généralement
qu'il est composé de moins de niveaux que les sept utilisés par le
modèle de l'OSI
 La plupart des descriptions de TCP/IP définissent de trois à cinq
niveaux fonctionnels dans son architecture
IPv4
IPv4
 De même que pour le modèle OSI, les données sont passées vers
le bas de la pile quand elles sont envoyées vers le réseau, et vers
le haut quand elles sont reçues
 Chacune des couches de la pile ajoute des informations de
contrôle afin d'assurer une livraison correcte
 Ces informations de contrôle sont appelées un « en-tête » parce
qu'elles sont placées devant les données à transmettre
 Chaque couche traite toutes les informations qu'elle reçoit des couches
supérieures en tant que données et place son propre en-tête devant elles
IPv4
 L'addition d'informations de distribution à chaque couche est
appelée encapsulation
 Quand les données sont reçues, c'est l'inverse qui se produit
 Chaque couche enlève son en-tête avant de passer les données à
celles du dessus
 Les informations reçues d'une couche inférieure sont interprétées
en tant qu'en-tête et données
IPv4
IPv4
 Chaque couche possède ses propres structures de données
indépendantes
 Conceptuellement, une couche ne connaît pas les structures de
données employées par les couches du dessus et du dessous
 En réalité, les structures d'une couche sont conçues de façon à être
compatibles avec celles des couches supérieures dans le but d'une
transmission plus efficace
 Cependant, chaque couche dispose de sa propre structure de
données et de sa propre terminologie pour décrire celle-ci
IPv4
IPv4
IPv4
Particularités :
 IP est un protocole sans connexion car il n'échange pas
d'informations de contrôle (handshake) pour établir une
connexion de bout en bout avant de transmettre des données
 A l'inverse, un protocole orienté connexion, échange des
informations de contrôle avec le système distant pour vérifier
qu'il est prêt à recevoir des données avant de les envoyer
 Quand le handshake a réussi, on dit qu'une connexion est établie
IPv4
 IP se fie aux protocoles d'autres couches pour établir la connexion
si un service orienté connexion est requis
 IP se fonde également sur des protocoles des autres couches pour
fournir une détection et une correction d'erreurs
 Le protocole Internet est parfois appelé un protocole non fiable
parce qu'il ne contient ni détection, ni correction des erreurs
 Cela ne veut pas dire que le protocole IP n'est pas sûr
 Les protocoles des autres couches de l'architecture fournissent
cette vérification quand elle est requise
IPv4
 Dans la version 4, le protocole IP n'apporte pas une solution
idéale à certains types d'applications
 C'est le cas par exemple, pour les applications « temps réel » ou
pour les applications de téléphonie et de visioconférence
 Intrinsèquement, IP n'apporte pas les capacités de sécurisation
poussée indispensable aux besoins du commerce électronique et à
l'échange de données sensibles
IPv4
 Cependant, l'adoption généralisée de TCP/IP et l'augmentation
constante de la bande passante offerte par les fabricants, les
prestataires Internet et les câblo-opérateurs gomment en partie les
faiblesses d'IP
 Enfin, la prochaine version d'IP, nommée IPv6, palliera les
défauts de la version actuelle
 La version d’IP est en cours d’implémentation au niveau mondial
sur les grands réseaux
 Les versions 4 et 6 d’IP cohabiteront pendant plusieurs années
IPv4
 Pratiquement tous les systèmes d'exploitation gèrent TCP/IP
 Son acceptation généralisée l'a conduit à devenir un protocole de
fait, en opposition aux protocoles « réseau » décrits dans le
standard OSI - Open Systems Interconnection de l'ISO International Standards Organization
 A l'heure actuelle TCP/IP représente la meilleure solution à
l'unification mondiale des matériels et des logiciels informatiques
IPv4
 La première spécification officielle décrivant IP est la RFC 791
[Postel 1981a]
 IP est un protocole non fiable et sans connexion
 Il semble surprenant que toutes les applications communicantes
couramment utilisées aujourd'hui soient basées sur des
fondations instables
 Il s'agit d'une option technique et que les termes « non fiable » et
« non connecté » ne sont pas péjoratifs mais correspondent à des
choix stratégiques
IPv4
 Le paquet d'octets transférés au niveau de la couche IP entre un
émetteur et un récepteur se nomme un datagramme
 En règle générale, un datagramme est une unité d'informations
de taille variable en octets et contenant les renseignements
nécessaires à son cheminement au travers des réseaux, entre une
source et une ou plusieurs destinations
IPv4
 Par « non fiable », il faut comprendre que la livraison d'un
datagramme n'est pas garantie
 Le réseau fournira le meilleur effort possible (best effort) pour
acheminer les datagrammes
 Cependant, si pour une raison ou pour une autre (par exemple la
saturation des buffers d'un routeur) un élément du réseau se
trouve dans l'incapacité de faire avancer un datagramme, celui-ci
sera purement et simplement détruit
IPv4
 IP essaiera également de faire parvenir un message d'erreur à
l'émetteur pour l'informer du problème par l'intermédiaire du
protocole ICMP - Internet Control Message Protocol
 Ce message d'erreur, lui-même transporté dans un datagramme,
sera susceptible de ne pas arriver non plus à destination
 Ce choix technique permet d'optimiser les réseaux en faisant des
concessions à la fiabilité des transferts de données
IPv4
 IP n'intègre pas de système de correction d'erreur et se il se
contentera de supprimer un datagramme qui présenterait un
problème portant sur les données administratives de son en-tête
 IP se base sur les couches supérieures (par exemple TCP) pour
apporter des réponses aux besoins de fiabilité
IPv4
 Par « non connecté », il faut entendre qu'aucune route au travers
des réseaux n'est établie préalablement au transfert des données
 Des réseaux tels que X.25 ou SNA fonctionnent en mode connecté
 Dans le mode non connecté, chaque datagramme chemine
indépendamment des autres lors d'un échange
 Il en résulte tout d'abord que chaque datagramme embarque en
son sein les informations nécessaires à son cheminement
IPv4
 Il en résulte également que les datagrammes peuvent se présenter
à la destination en ordre dispersé
 En effet, le choix du routage des datagrammes est pris en temps
réel par chaque nœud du réseau
 Le chemin entre la source et la destination peut donc être
différent d'un datagramme à l'autre
 Dans les faits, la majorité des datagrammes d’un échange donné,
utilise le même itinéraire
IPv4
 Un protocole réseau tel que IP, qui a comme ambition première
l'interconnexion de réseaux physiques hétérogènes, doit être
capable de prendre en charge les contraintes inhérentes aux
différents supports physiques traversés
 Le problème le plus important est celui de la MTU – Maximum
Transmission Unit, c'est-à-dire la taille maximale des données
emportées par la trame
IPv4
 Le datagramme IP est encapsulé dans une trame qui traversera
physiquement le réseau sous-jacent
 Si, sur le coupleur de départ, le datagramme est trop volumineux
pour être contenu dans une seule trame, celui-ci devra être
découpé en plusieurs morceaux
 Ceci implique qu'il devra exister un mécanisme de regroupement
des parties du datagramme initial
 Ce mécanisme de découpage et de reconstruction du datagramme
se nomme la fragmentation et est géré par le processus IP
IPv4
Sens de déplacement de la trame
Trame (Frame)
En-tête
En-tête
de trame
Données
En-tête
réseau IP
En-tête
En-tête
transport
En-queue
En-tête ou commande
application
Données .../...
Données
Datagramme (Datagram)
Encapsulation d'un datagramme dans une trame
En-queue
de trame
IPv4
 Une dernière caractéristique fondamentale de l'Internet Protocol
réside dans la possibilité d'adresser de façon unique un coupleur
réseau (par exemple une carte Ethernet) dans un maillage de
réseaux interconnectés
 L'identification des coupleurs réseau supportant IP est basée sur
les adresses IP
 Il s'agit d'un postulat de départ puisque pour atteindre une
adresse IP particulière, il est nécessaire de mettre en place un
système d'adressage sans équivoque basé sur des adresses
uniques pour un ensemble de réseaux connectés
IPv4
 Les réseaux interconnectés autonomes sont souvent appelés des
réseaux Intranet
 Dans le cas de l'Internet, il a fallu gérer au niveau mondial
l'attribution des adresses IP pour conserver le caractère unique de
l'adressage IP
 L'organisme régulateur s'occupant de l'attribution des adresses IP
est l'ARIN - American Registry of Internet Numbers pour
l'Amérique et le RIPE – Réseaux IP Européens pour l'Europe
IPv4
Le datagramme :
 Les protocoles TCP/IP ont été conçus pour transmettre des
données sur ARPANET qui était un réseau à commutation de
paquets
 Un paquet est un bloc de données de taille variable qui
transporte avec lui les informations nécessaires à sa livraison
 Un réseau à commutation de paquets utilise les informations
d'adressage des paquets pour les commuter d'un réseau à l'autre,
jusqu'à leur destination finale
IPv4
 Chaque paquet transite sur le réseau indépendamment de chaque
autre paquet
 Les cinq ou six premiers mots de 32 bits du datagramme forment
l'en-tête et par défaut, il comporte cinq mots longs le sixième
étant optionnel
 La longueur de l'en-tête étant variable, il comprend un champ
appelé Internet Header Length (IHL) qui indique sa longueur en
nombre de mots
 L'en-tête contient toutes les informations nécessaires pour
transporter le paquet
IPv4
IPv4





Version : Champ de 4 bits indiquant la version de IP. La version actuelle est la
version 4. Elle sera suivie de la version 6
Longueur de l'en-tête : Champ de 4 bits indiquant la longueur de l'en-tête IP en
nombre de mots de 32 bits. La taille minimale des en-têtes IP étant de 20 octets, la
plus petite longueur d'en-tête est de 5
Type de service : Champ de 8 bits indiquant la qualité de service attendue par ce
datagramme pour une livraison par l'intermédiaire de routeurs sur l'inter-réseau
Longueur totale : Champ de 16 bits indiquant la longueur totale du datagramme
IP (en-tête IP + données utiles). La longueur totale n'inclut pas le tramage de la
couche d'accès au réseau
Identification : Identificateur de 16 bits défini de manière distincte pour chaque
datagramme. Si le paquet IP est fragmenté, tous les fragments auront la même
identification d'origine à utiliser lors du réassemblage par le noeud de destination
IPv4



Indicateurs de fragmentation : Champ de 3 bits réservés aux indicateurs de
fragmentation. Deux de ces trois bits sont actuellement utilisés pour les
indicateurs DF et MF, le premier précisant si la fragmentation du datagramme IP
est autorisée, et le second indiquant si d'autres fragments suivent
Décalage des fragments : Champ de 13 bits utilisés comme compteur de décalage
pour indiquer la position du fragment par rapport aux données utiles d'origine.
En l'absence de fragmentation, le décalage est de 0
TTL (Time To Live) : Champ de 8 bits indiquant la durée ou le nombres de
tronçons de réseaux qu'un datagramme peut franchir avant d'être supprimé. Il
était utilisé à l'origine comme une temporisation (en secondes) d'acheminement
du datagramme. Les routeurs actuels acheminent les datagrammes en moins
d'une seconde et doivent, pour se conformer à la RFC791, décrémenter le TTL d'au
moins une unité. Le TTL est devenu un nombre de saut de réseaux maximum
IPv4




Protocole : Champ de 8 bits identifiant le protocole client IP. Il est utilisé pour
démultiplexer un datagramme vers un protocole de couche supérieure
Total de contrôle d'en-tête : Champ de 16 bits ne servant que pour l'en-tête IP. Les
données ne sont pas concernées par ce checksum. Lorsqu'un noeud IP reçoit un
datagramme, il effectue une vérification sur le total de contrôle et supprime le
paquet IP si celui-ci est incorrect. Le total de contrôle est recalculé à chaque noeud
car le TTL évolue et il peut y avoir une fragmentation
Adresses : Adresses IP source et destination sur 32 bits
Options de remplissage : Champ dont la longueur est un multiple de 32 bits
servant à stocker les options IP. Si l'option n'utilise pas les 32 bits, des 0 de
remplissage sont utilisés afin que l'en-tête IP soit de taille modulo 32 bits
IPv4
Les sous-réseaux IPv4 :
 La structure standard d'une adresse IP peut être modifiée
localement en utilisant des bits d'adresse hôte en tant que bits
d'adresse réseau supplémentaires
 La ligne de démarcation entre les bits d'adresse réseau et hôte est
déplacée, créant ainsi des réseaux supplémentaires, mais
réduisant de ce fait le nombre maximum d'hôtes pouvant
appartenir à un seul réseau
 Ces bits nouvellement définis déterminent un sous-réseau à
l'intérieur d'un plus grand réseau
IPv4
 Une organisation décide généralement de créer des sous-réseaux
afin de résoudre des problèmes topologiques ou organisationnels
 Cela autorise une gestion décentralisée de l'adressage des hôtes
 Dans un système standard d'adressage des hôtes, un seul
administrateur est responsable de la gestion des adresses hôtes
 Avec les sous-réseaux, un administrateur peut déléguer les
assignations d'adresses à des organisations plus restreintes à
l'intérieur de la structure mère
IPv4
 Masques de sous-réseau par défaut
Classe d'adresse Bits utilisés pour le masque de sous-réseau
Notation décimale
pointée
Classe A
Classe B
Classe C
255.0.0.0
255.255.0.0
255.255.255.0
11111111 00000000 00000000 00000000
11111111 11111111 00000000 00000000
11111111 11111111 11111111 00000000
IPv4
 Un sous-réseau est défini en appliquant un masque de bits, le
subnet mask (masque de sous-réseau), à l'adresse IP
 Si un bit se trouve sur le masque, le bit équivalent dans l'adresse
est interprété comme un bit réseau
 Dans le cas contraire, le bit appartient à la partie hôte de l'adresse
 Le sous-réseau n'est connu qu'en local
 Pour le reste de l'Internet, son adresse est toujours interprétée
comme une adresse IP standard
IPv4
 Par exemple, le masque de sous-réseau standard associé aux
adresses de classe B est 255.255.0.0
 Le masque de sous-réseau le plus courant étend la partie réseau
d'une adresse de classe B d'un octet
 Ce masque de sous-réseau devient 255.255.255.0
 Les deux premiers octets définissent le réseau de classe B, le
troisième définit l'adresse de sous-réseau et le dernier l'hôte sur ce
sous-réseau
IPv4
 Beaucoup d'administrateurs réseau préfèrent utiliser des masques
à octets parce qu'ils sont plus faciles à lire et à comprendre
 Cependant, la définition de masques de sous-réseau limités aux
octets n'est pas obligatoire
 Le masque de sous-réseau se fonde sur les bits et peut être
appliqué à n'importe quelle classe d'adresses
IPv4
 Par exemple, une petite organisation pourrait subdiviser une
adresse de classe C en quatre sous-réseaux avec le masque
255.255.255.192 (1100 000 = 128+64)
 Ce masque, appliqué à une adresse de classe C, définit les deux
bits de poids fort du quatrième octet comme partie sous-réseau de
l'adresse
 Avec les 6 bits restants (2 puissance 6), il est possible de définir
jusqu'à 64 hôtes par sous-réseau
IPv4
 Ce même masque, appliqué à une adresse de classe B crée plus de
mille sous-réseaux car dix bits (un octet entier et deux bits du
quatrième octet) sont employés pour définir les sous-réseaux (2
puissance 10 = 1024)
 Les sous-réseaux devenant de plus en plus courants, une autre
façon d'écrire les masques de sous-réseau se popularise en
« /bits » au lieu de la notation sur quatre octets
IPv4
 Par exemple, « /24 » spécifie un masque de sous-réseau sur 24
bits, équivalent à 255.255.255.0, mais bien plus facile à écrire
 La nouvelle nomenclature suppose que les masques sont faits de
bits contigus et correspond à une pratique standard
 On rencontre également des masques à jokers, surtout pour les
routeurs Cisco et leurs spécifications de filtrage de paquets
IPv4
 Les masques à jokers sont essentiellement les masques
complémentaires à 1 des masques de sous-réseaux
 Les masques à jokers utilisent un bit à 1 pour les parties à ignorer
 Un masque de sous-réseau de 255.255.0.0 équivaut à un masque à
joker 0.0.255.255 et un masque de sous-réseau de 255.255.240.0 est
équivalent à un masque à joker de 0.0.15.255
IPv4
Le routage IP :
 Le routage est basé sur l’adresse IP de destination contenue dans
le datagramme
 Il est également basé sur les tables de routage des systèmes et des
routeurs
 Les passerelles routent les données entre les réseaux mais tous les
éléments d'un réseau, qu'ils soient hôtes ou passerelles, doivent
prendre des décisions de routage
IPv4
 Si l'hôte de destination se trouve sur le réseau local, les données
sont délivrées à l'hôte de destination
 S'il se trouve sur un réseau distant, les données seront transmises
à une passerelle locale
 La passerelle locale fera avancer le datagramme vers le réseau
suivant et ainsi de suite
IPv4
 Le routage étant orienté réseau, IP prend des décisions de routage
en se fondant sur la partie réseau de l'adresse
 Le module IP détermine la partie réseau de l'adresse en
examinant les bits de poids fort pour en déduire la classe de
l'adresse
 Celle-ci détermine la partie de l'adresse que IP utilise pour
identifier le réseau
IPv4
 Si le réseau de destination est le réseau local, le masque de sousréseau local est appliqué à l'adresse de destination
 Les paquets sont routés vers leur destination comme l'indique la
table de routage
 Les décisions de routage se résument à de simples lectures de
tables
IPv4
La table de routage :
 Sur un système UNIX, on peut afficher le contenu de la table de
routage par la commande netstat –nr
 L'option -r affiche la table de routage et l'option -n sous forme
numérique
IPv4
L'hôte a comme adresse 128.66.12.2
%netstat –nr
Routing tables
Destination Gateway
127.0.0.1
127.0.0.1
Default
128.66.12.1
128.66.12.0 128.66.12.2
128.66.2.0
128.66.12.3
128.66.1.0
128.66.12.3
128.66.3.0
128.66.12.3
128.66.4.0
128.66.12.3
Flags
UH
UG
U
UG
UG
UG
UG
Refcnt
1
2
40
4
10
2
4
Use
298
50360
111379
1179
1113
1379
1119
Interface
lo
le0
le0
le0
le0
le0
le0
IPv4
 La première entrée de la table est la route de loopback pour l'hôte
local
 Chaque système utilisant la route de loopback pour s'envoyer des
datagrammes, cette entrée se trouve dans la table de routage de
chaque hôte
 Le flag H est présent car il s'agit d'une route vers un hôte
spécifique (127.0.0.1) et non vers un réseau entier 127.0.0.0)
IPv4
 Une autre entrée unique de la table de routage est celle qui comprend le
mot « default » dans le champ destination
 Elle concerne la route par défaut et la passerelle spécifiée est la passerelle
par défaut
 Celle-ci est employée à chaque fois qu'il n'existe pas de route spécifique
dans la table pour une adresse destination
 Par exemple, cette table ne comprend pas d'entrée pour le réseau
192.178.16.0
 Si IP reçoit un datagramme adressé à ce réseau, il l'enverra via la
passerelle par défaut 128.66.12.1
IPv4
 Dans cet exemple, on voit que l'hôte concerné est directement
connecté au réseau 128.66.12.0

L'entrée de la table pour ce réseau ne spécifie pas de passerelle
externe, c'est-à-dire que l'entrée de la table de routage pour
128.66.12.0 ne comporte pas de flag G
 Donc l'hôte en question doit être directement connecté à ce réseau
IPv4
 Toutes les passerelles qui apparaissent dans une table de routage
se trouvent sur des réseaux directement raccordés au système
local
 Cela signifie que quelle que soit l'adresse de destination, les
adresses des passerelles commencent toutes par 128.66.12
 Ce réseau est le seul auquel l'hôte soit connecté et donc le seul
auquel il puisse transmettre des données
 Les passerelles qu'il utilise pour accéder au reste de l'Internet
doivent se trouver sur son sous-réseau
IPv4
IPv4
 Une table de routage ne contient pas de route de bout
en bout
 Elle ne pointe que vers la passerelle suivante, appelée
next hop (le saut suivant), sur le chemin conduisant au
réseau de destination
 L'hôte compte sur une passerelle locale pour délivrer
les données, et cette passerelle, à son tour, compte sur
d'autres passerelles