Le protocole IP permet d'identifier le réseau et la machine sur lequel il tourne;
Le protocole TCP permet de garantir que les messages sont bien transmis;
Une table de routage est utilisée pour déterminer la prochaine destination d'un paquet IP
Cette activité va surtout permettre de remettre en place vos souvenirs de 1er : nous allons travailler cette année sur les algorithmes de routage : les techniques permettant la gestion automatisée du transit des paquet IP via les routeurs de façon à parvenir à faire communiquer deux machines distantes.
Revoir un peu le vocabulaire pour savoir de quoi on parle vraiment pourra sûrement vous servir !
Nous allons voir que la couche APPLICATION permet la tranmission d'informations entre deux programmes.
Elle utilise pour cela des règles qui forment des protocoles.
L'un des protocoles de cette couche est le protocole HTTP qui permet la communication entre un client HTTP et un serveur HTTP.
Internet est, notamment, constitué de routeurs qui permettent à l'information de circuler sous la forme de paquets IP.
Commençons par revoir comment cela fonctionne.
Le modèle TCP / IP est un modèle en couches. Chaque couche ne peut communiquer qu'avec la couche immédiatement inférieure ou supérieure.
Pour rappel :
Application gère la mise en forme d'une communication entre deux programmes
Transport gère le transport des communications entre tous les programmes
Réseau/Internet gère le transport des communications entre tous les ordinateurs
Accès gère la communication entre deux ordinateurs (c'est à dire gère leurs cartes réseaux)
Mais pourquoi faire cela ?
Les informaticiens aiment bien se compliquer la vie ou quoi ?
Non, au contraire. On retrouve deux notions très importantes pour obtenir un système stable et solide :
Encapsulation : chaque tâche est encapsulée dans l'unique couche qui la gère.
Interface : chaque couche communique avec ses voisines directes uniquement en utilisant les fonctions d'interface disponibles. Une couche a juste besoin de savoir comment faire appel à ses deux voisines.
Les couches sont donc indépendantes tant que l'interface reste la même : on peut changer le code interne d'une couche sans risquer de voir le système s'écrouler
Nous prendrons l'exemple de l'application Web qui utilise Internet pour faire transiter ses données.
(Rappel) 1.1 Protocole HTTP
A - Principe
Le protocole HTTP est destiné à faire communiquer deux programmes :
Un programme client HTTP qui se connecte à
un programme serveur HTTP.
Le protocole HTTP est basé sur une communication en 3 étapes :
Le client envoie sa requête (nous verrons qu'il utilise une URL).
Le serveur reçoit et analyse la requête
Le serveur renvoie sa réponse (nous verrons qu'elle contient parfois un texte nommé code-source HTML)
B - Une notion connue : le code de réponse
La réponse HTTP contient un nombre, le code de réponse. Vous connaissez certainement le 404. Les voici :
Code 200 : le serveur dit que tout s'est bien passé.
Code 404 : le serveur ne trouve aucune ressource correspondant à la requête.
Code 300 : le serveur dit que la ressource n'a pas été modifiée depuis la dernière fois que le client lui a demandé. Le client doit juste aller voir dans sa mémoire-cache.
Code 500 : le serveur rencontre une erreur de programmation en tentant de résoudre la requête....
C - Le programme client usuel : le navigateur Web
Firefox de la fondation Mozilla,
le moteur libre Chromium, produit par Google
Chrome, une surcouche propriétaire de Chromium, produit par Google.
Safari pour Apple
Brave, une surcouche libre de Chromium, produit par Brave Software.
Safari pour Apple
...
(Rappel) 1.2 La couche APPLICATION
graph LR
subgraph Programme A
I(("Code\ninterne")) <-. communication .-> D["APPLICATION\nformatage\nou\nextraction"]
end
subgraph Programme B
A["APPLICATION\nformatage\nou\nextraction"] <-. communication .-> S(("Code\ninterne"))
end
D <--> Mystere["..."] <--> A
style A fill:#6ff,stroke:#880,stroke-width:2px
style D fill:#6ff,stroke:#880,stroke-width:2px
style Mystere fill:#99f,stroke:#333,stroke-width:2px
Qu'est que la couche APPLICATION ?
C'est un programme chargé de mettre en forme les informations sous un format précis connus de tous.
Deux cas se présentent :
Envoi : mise en forme codifié des informations que veut transmettre un programme.
Réception : extraction des informations contenus dans le message codifié réçu.
Cette couche fait donc office d'INTERFACE entre un programme et le monde extérieur.
Exemple : le format HTTP
On commence par écrire l'en-tête HTTP qui est composé de deux parties :
une première ligne contenant 3 informations : la méthode d'envoi, la ressource voulue et le protocole utilisé. L'espace (octet de valeur 32) est le caractère délimiteur.
plusieurs autres lignes constituant une sorte de dictionnaire : la clé (nom de l'information), le caractère : et la valeur de cette information.
On finit par le message en lui-même. Lorsque le serveur HTTP répond, c'est là qu'il place les octets d'un code HTML ou les octets d'une image par exemple.
Exemple de requête POST
Voici une requête POST qu'envoie un client (Firefox tournant sous Linux) pour tenter de connecter l'utilisateur bob dont le mot de passe est 1234! :
Si vous ne vous souvenez plus de la différence entre la méthode GET et la méthode POST, voici deux formulaires : le premier est en GET, le second en POST.
(Rappel) 1.3 Requête issue d'un formulaire utilisant la méthode GET
Que faut-il observer ?
Vous constaterez que vos paramètres sont transmis dans l'URL demandée et qu'il n'y a rien sous l'en-tête : la partie "message" est vide.
Lire l'URL, éventuellement simplement dans la barre d'espace permettrait de connaître le mot de passe de l'utilisateur. Ce n'est pas sécurisé.
(Rappel) 1.4 Requête issue d'un formulaire utilisant la méthode POST
Que faut-il observer ?
Vous constaterez que vos paramètres sont transmis dans la partie "message".
Voir l'URL dans le navigateur ne permet pas de connaître le mot de passe de l'utilisateur.
La couche TRANSPORT se charge de transporter les communications entre tous les programmes en même temps.
Cette couche utilise des protocoles pour permettre ce transport.
Elle identifie les programmes en utilisant des adresses nommées PORT.
Le protocole TCP fait partie de la couche TRANSPORT : il est chargé, notamment, de la gestion des accusés de réception.
Sur notre exemple, Firefox envoie donc un message à ... la couche TRANSPORT de l'ordinateur sur lequel tourne Firefox.
(Rappel) 2.1 Missions de la couche TRANSPORT
graph LR
subgraph O1[Ordinateur 1]
subgraph Programme A
CIA("...") <--> PA["APPLICATION\nformatage\nou\nextraction"]
end
subgraph Programme B
CIB("...") <--> PB["APPLICATION\nformatage\nou\nextraction"]
end
T1["TRANSPORT\n1"]
end
subgraph O2[Ordinateur 2]
subgraph Programme C
PC["APPLICATION\nformatage\nou\nextraction"] <--> CIC("...")
end
subgraph Programme D
PD["APPLICATION\nformatage\nou\nextraction"] <--> CID("...")
end
T2["TRANSPORT\n2"]
end
PA <--> T1 <--> Mystere["..."] <--> T2 <--> PC
PB <--> T1
T2 <--> PD
style PA fill:#6ff,stroke:#880,stroke-width:2px
style PB fill:#6ff,stroke:#880,stroke-width:2px
style PC fill:#6ff,stroke:#880,stroke-width:2px
style PD fill:#6ff,stroke:#880,stroke-width:2px
style Mystere fill:#99f,stroke:#333,stroke-width:2px
style T1 fill:#dd6,stroke:#333,stroke-width:2px
style T2 fill:#dd6,stroke:#333,stroke-width:2px
style O2 fill:#aaaa,stroke:#333,stroke-width:2px
style O1 fill:#aaaa,stroke:#333,stroke-width:2px
Principe général
La couche TRANSPORT est un peu le bureau de poste des applications de votre ordinateur. Elle reçoit :
les messages que vos applications veulent envoyer
les messages que vos applications reçoivent personnellement
Et, tout cela, pour toutes les applications en même temps.
Que va faire la couche TRANSPORT du message que lui envoie Firefox ?
1 - Segmentation du message initial
TRANSPORTdécoupe le message en plusieurs sous-messages (qu'on nommera DATA) si le message du base est important.
2 - Identification des programmes avec le PORT
Ensuite, TRANSPORTidentifie le programme émetteur et le programme récepteur. L'identifiant de la couche TRANSPORT est le PORT, un numéro encodé sur 2 octets (donc entre 0 et 65535). Pourquoi identifier ? Tout simplement car ce programme-couche-TCP s'occupe de plusieurs programmes à la fois.
Les programmes-serveurs ont des numéros de PORT prédéfinis :
le PORT 80 pour les serveurs HTTP
le PORT 443 pour les serveurs HTTPS
3 - Création et gestion des segments
TRANSPORT numérote et rajoute différentes informations (dont les PORTS) à chacun des sous-messages. Les sous-messages obtenus se nomment des segments TCP .
(Rappel) 2.2 Description d'un SEGMENT
Un segment TCP est un des sous-messages DATA précédé d'informations supplémentaires qu'on nomme l'en-tête TCP. Parmi les informations, on trouve notamment :
SRC le PORT de l'application Source du message [encodé sur les deux premiers octets]
DST : le PORT de l'application Destinataire du message [encodé sur les deux octets suivants]
SEQ : un moyen d'identifier le numéro du segment par rapport aux autres [encodé via les octets suivants]
et d'autres choses encore ...
On connaît la structure de l'en-tête bit par bit et on peut donc récupérer facilement les données contenues.
Nous allons simplement noter cet en-tête TCP par un rectangle jaune.
Nous avons maintenant des segments numérotés, et on peut identifier le programme-expéditeur et le programme-destinataire DST.
La couche RESEAU se charge de transmettre les communications entre tous les ordinateurs en même temps.
On identifie les ordinateurs en utilisant des adresses nommées ADRESSE IP lorsqu'on utilise un réseau IP.
Le protocole IP fait partie de la couche RESEAU.
Lorsque cette couche est liée à un réseau IP, on parle souvent plutôt de couche INTERNET.
(Rappel) 3.1 Adressage des machines
Adresse IP : réseau + machine
Il est totalement impossible qu'une machine connaisse les adresses de TOUTES les autres machines branchées sur INTERNET. Si ? Non.
Du coup, cette adresse IP est en réalité composée de deux parties.
Une adresse réseau qui identifie le réseau auquel appartient la machine
Une adresse machine qui identifie la machine elle même sur ce réseau
Adressage pédagogique
Imaginons un système basique :
on identifie le réseau par une LETTRE (c'est l'adresse réseau)
on identifie la machine par un NUMERO (c'est l'adresse machine)
Ainsi A9 veut dire qu'il s'agit de la machine 9 appartenant au réseau A.
Cette notation n'a aucune existence sur les réseaux réels mais permettra de se passer des notations complexes d'IPv4 ou d'IPv6.
(Rappel) 3.2 Missions de la couche RESEAU ou INTERNET
graph LR
subgraph O1[Ordinateur 1]
subgraph Programme A
CIA("...") <--> PA["APPLI\nA"]
end
subgraph Programme B
CIB("...") <--> PB["APPLI\nB"]
end
T1["TRANSPORT\n1"] <--> R1["RESEAU\n1"]
end
subgraph O2[Ordinateur 2]
subgraph Programme C
PC["APPLI\nC"] <--> CIC("...")
end
subgraph Programme D
PD["APPLI\nD"] <--> CID("...")
end
R2["RESEAU\n2"] <--> T2["TRANSPORT\n2"]
end
R1 <--> Mystere["..."] <--> R2
PA <--> T1
PB <--> T1
T2 <--> PD
T2 <--> PC
style PA fill:#6ff,stroke:#880,stroke-width:2px
style PB fill:#6ff,stroke:#880,stroke-width:2px
style PC fill:#6ff,stroke:#880,stroke-width:2px
style PD fill:#6ff,stroke:#880,stroke-width:2px
style Mystere fill:#99f,stroke:#333,stroke-width:2px
style T1 fill:#dd6,stroke:#333,stroke-width:2px
style T2 fill:#dd6,stroke:#333,stroke-width:2px
style O2 fill:#aaaa,stroke:#333,stroke-width:2px
style O1 fill:#aaaa,stroke:#333,stroke-width:2px
style R1 fill:#6d6,stroke:#333,stroke-width:2px
style R2 fill:#6d6,stroke:#333,stroke-width:2px
Mission n°1 : savoir à qui transmettre !
La couche RESEAU se charge de savoir si le message est arrivé à destination, ou pas. On distingue trois cas :
Le message est arrivé sur la machine de destination.
Le message est arrivé sur le bon réseau : la machine qui reçoit le message appartient au réseau de la machine de destination.
Le message n'est pas encore parvenu à atteindre le réseau de la machine de destination.
Pour réaliser cette mission, il faut donc pouvoir identifier le réseau ET identifier la machine.
Paquet IP
Lorsque la couche RESEAU reçoit un segment en provenance de la couche TRANSPORT, elle va rajouter un en-tête IP devant le segment. Que contient cet en-tête ? Des informations supplémentaires, notamment :
L'adresse IP de la destination DST
L'adresse IP de la source SRC
L'ensemble formé par ce nouvel en-tête et le SEGMENT précédé se nomme un PAQUET IP.
Exemples en images
Voyons cela en images.
nous avons atteint la bonne machine
La couche RESEAU de A9 à un paquet pour A9.RESEAU va alors transmettre le paquet à la couche APPLICATION de A9
nous avons atteint une machine qui appartient au même réseau que la machine de destination
La couche RESEAU de A9 à un paquet IP pour A2.
Il suffit d'envoyer le paquet IP à la couche RESEAU de A2 via le réseau local
nous sommes sur une machine qui n'appartient pas au même réseau
La couche RESEAU de A9 à un paquet pour B7. Il suffit d'envoyer le paquet IP à la couche RESEAU du routeur A qui se chargera de sortir du réseau actuel.
(Rappel) 3.3 Particularité des communications entre ordinateurs
Une machine ne peut communiquer DIRECTEMENT qu'avec une machine de son propre réseau.
Si elle veut communiquer avec une machine située sur un autre réseau, la machine a donc besoin de connaitre l'adresse d'une machine du réseau qui appartient à son réseau ET à un autre réseau. Pour ce qui nous concerne, nous le nommerons ROUTEUR.
Le routeur particulier qui permet de sortir du réseau est souvent nommé également PASSERELLE.
Exemple
Ici le routeur A appartient à la fois au réseau nommé A et au réseau d'une des machines cachés sous le nuage "INTERNET".
Pour simplifier, vous pouvez donc considérer que votre Box appartient à deux réseaux :
votre réseau local personnel, celui de votre maison
le réseau de votre opérateur Internet
Relier deux machines uniquement
Oon peut relier directement deux machines en créant une liaison directe entre leurs cartes réseaux, sans passer par un dispositif supplémentaire comme le commutateur.
01° Quelle est la partie réseau et la partie machine de l'adresse A3 ?
...CORRECTION...
Adresse réseau : A
Adresse machine : 3
02° Quelles sont les machines qui possèdent plusieurs adresses IP car elles appartiennent à plusieurs réseaux ?
...CORRECTION...
Il s'agit des routeurs.
03° A quels réseaux appartient le routeur qui permet de joindre le réseau A ?
Quelles sont ses adresses ?
Pour chaque adresse, trouver l'adresse réseau et l'adresse machine.
...CORRECTION...
Il appartient à la fois au réseau A, au réseau Y et au réseau Z.
Adresse sur le réseau A : A1 - Adresse réseau A - Adresse machine 1
Adresse sur le réseau Y : Y1 - Adresse réseau Y - Adresse machine 1
Adresse sur le réseau Z : Z1 - Adresse réseau Z - Adresse machine 1
04° Une machine d'adresse IP A5 vers joindre la machine d'adresse IP A12. Comment sait-on s'il faut envoyer le paquet IP vers le réseau local ou s'il faut transmettre le paquet IP en dehors du réseau local ?
...CORRECTION...
L'adresse réseau des deux machines est A.
Il faut donc chercher la machine sur le réseau local.
05° La machine d'adresse IP A5 vers joindre la machine d'adresse IP C12. Comment sait-on s'il faut rester dans le réseau local ou quitter le réseau ?
...CORRECTION...
L'une des machines est sur le réseau A.
L'autre machine est sur le réseau C.
Il faut donc quitter le réseau.
Nous venons donc de voir qu'il existe un mécanisme permettant aux machines de savoir si le destinataire appartient à leur réseau ou pas.
Nous savons vers où envoyer le message. Mais quel message ?
(Rappel) 3.4 Description des paquets IP
La couche RESEAU reçoit les segments que la couche TRANSPORT lui a fourni mais ne peut pas les transmettre directement car les segments ne contiennent pas l'adresse IP du destinataire !
La couche INTERNET va donc rajouter un en-tête IP au segment TCP, ce qui va le transformer en paquet IP.
Que contient l'en-tête IP ?
Un en-tête IP n'est qu'un ensemble d'informations qu'on rajoute devant un segment TCP.
Comme l'en-tête TCP, les informations sont encodées sur un nombre spécifique d'octets et donc décodables facilement puisqu'on connaît leurs emplacements.
Le contenu exact de l'en-tête IP va dépendre du système d'adressage utilisé : IPv4 ou IPv6 par exemple.
Que rajoute-on dans cet en-tête ? (vous pouvez cliquer sur l'en-tête pour obtenir un zoom si nécessaire)
DST : l'adresse IP de la machine de destination pour ce paquet [4 octets en IPv4, 16 octets en IPV6]. On la place en premier car c'est la première chose qu'un routeur doit lire.
SRC : l'adresse IP de la machine à la source du paquet [4 octets en IPv4, 16 octets en IPV6] Sans cela, on ne pourrait pas répondre au message. Comprennez bien qu'il s'agit bien de l'adresse de la toute première machine qui a généré le paquet.
TTL : un compteur nommé Time to Live en IPv4 ou Hop Limit en IPv6 [1 octet dans les deux cas] C'est un compteur qui décroit de 1 à chaque fois que le paquet est transféré par un routeur. Arrivé à 1, le paquet n'est plus déplacé et part juste à la poubelle. Cela évite les paquets fantômes dont l'adresse de destination n'est pas trouvable.
Il existe bien entendu d'autres données dans cet en-tête IP mais nous allons nous limiter à ceux-ci.
Ils permettent de comprendre l'essentiel du protocole.
On symbolisera donc le paquet IP à l'aide d'un symbole plus concis. Par exemple :
(Rappel) 3.5 Description de l'adressage IP v4
A - Généralités
Depuis le temps qu'on dit que cette version va disparaître, ça va bien finir par arriver d'ici à ce que vous soyez employable après votre passage dans le supérieur...
Une adresse IP v4 est constituée de 4 octets (représentables chacun par un entier entre 0 et 255) séparés par un point.
Il existe donc 232 adresses différentes possibles puisque cette adresse possède 32 bits.
Cela donne un peu plus de 4 milliards. Ca paraissait beaucoup à l'époque, mais ce n'est plus suffisant...
Exemple : 200.2.100.42 .
B - Réseau à gauche, machine à droite
L'adresse IP est à découper en deux parties :
La partie de gauche caractérise l'adresse du réseau auquel appartient la machine
La partie de droite caractérise l'adresse de la machine sur ce réseau
On se limitera ici aux cas simples où ces parties occupent intégralement un des octets, et jamais un nombre de bits non mutiples de 8.
Exemple : 200.2.100.42.
Réseau : 200.0.0.0
Machine : 0.2.100.42
Comme on ne peut pas mettre de couleurs sur les octets, il a bien fallu trouver un autre moyen de distinguer les deux parties.
C - Notation avec un slash : CIDR
Oon donne le nombre de bits servant à cette adresse réseau. Pour cela, on rajoute un slash derrière l'adresse et on place le nombre de bits propres au réseau lui-même (8 bits pour un octet, 16 bits pour 2 octets...).
Cette notation se nomme CIDR (Classless Inter-Domain Routing).
Quelques exemples :
200.2.100.42 /8 veut dire que seul le premier octet (car /8 veut dire 8 bits) caractérise le réseau.
Adresse réseau : 200.0.0.0
Adresse machine : 0.2.100.42
200.2.100.42 /16 veut dire que leurs deux premiers octets (car /16 veut dire 16 bits) caractérisent le réseau.
Adresse réseau : 200.2.0.0
Adresse machine : 0.0.100.42
200.2.100.42 /24 veut dire que leurs trois premiers octets (car /24 veut dire 24 bits) caractérisent le réseau.
Adresse réseau : 200.2.100.0
Adresse machine : 0.0.0.42
D - Notation ADRESSE IP + MASQUE
On donne l'adresse IP et une deuxième adresse nommée MASQUE permettant de comprendre la première. Si on utilise uniquement 8 bits à la fois avec le MASQUE, c'est facile :
255, c'est le réseau,
0 c'est la machine.
Quelques exemples :
Adresse 200.2.100.42 et masque 255.0.0.0 veut dire :
Adresse réseau : 200.0.0.0
Adresse machine : 0.2.100.42
Adresse 200.2.100.42 et masque 255.255.0.0 veut dire :
Adresse réseau : 200.2.0.0
Adresse machine : 0.0.100.42
Adresse 200.2.100.42 et masque 255.255.255.0 veut dire :
Adresse réseau : 200.2.100.0
Adresse machine : 0.0.0.42
E - Trois types d'adresses IP v4
Les adresses publiques sont les adresses qu'on peut joindre directement depuis Internet. Chaque adresse de ce type doit donc être unique sur Internet.
Les adresses privées sont des adresses qu'on ne peut utiliser qu'à l'intérieur du réseau local. On ne peut pas joindre depuis l'extérieur une machine à l'aide d'une telle adresse. Les messages entre ces machines et Internet passent par un dispositif nommé la PASSERELLE. La passerelle est un routeur qui se fait passer pour la machine du réseau interne et qui lui retransmettra le message une fois que la réponse sera arrivée. Toutes les machines possèdant une adresse privées ont donc l'air d'avoir la même adresse IP depuis l'extérieur puisqu'elles utilisent l'adresse IP externe de la passerelle.
Les adresses des petits réseaux privés (comme votre réseau domestique) sont toutes 192.168.1.xxx /24 .
Les adresses des réseaux privés moyens : de 172.16.1.0 à 172.31.255.255 .
Les adresses des gros réseaux privés (comme un réseau d'entreprise): 10.xxx.xxx.xxx .
L'adresse particulière localhost : l'ordinateur actuel est identifié par 127.0.0.1
06 (IPv4)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse IPv4 70.30.20.145 /16 veut transmettre un paquet à
la machine d'adresse DST 70.30.21.5 .
...CORRECTION...
Le 16 derrière le slash veut dire que l'adresse réseau est caractérisée par les 16 premiers bits, donc les deux premiers octets :
Donc l'adresse IPv4 70.30.20.145 /16 veut dire que :
La partie adresse-réseau est 70.30.0.0 
La partie adresse-machine est 0.0.20.145 
L'adresse de l'autre machine étant 70.30.21.5 , on peut dire que les deux machines sont sur le même réseau : l'adresse commence par 70.30
Il faut donc rester et chercher sur le réseau local.
07 (IPv4)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse IPv4 70.30.20.145 /24 veut transmettre un paquet à
la machine DST 70.30.21.5 .
...CORRECTION...
Le 24 derrière le slash veut dire que l'adresse réseau est caractérisée par les 24 premiers bits, donc les trois premiers octets :
Donc l'adresse IPv4 70.30.20.145 /24 veut dire que :
La partie adresse-réseau est 70.30.20.0
La partie adresse-machine est 0.0.0.145 
L'adresse de l'autre machine étant 70.30.21.5 , on peut dire que les deux machines ne sont pas sur le même réseau : l'adresse ne commence pas par 70.30.20, il y a un 21 à la fin.
Il faut donc sortir du réseau pour trouver cette machine.
08 (IPv4)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse 20.30.40.50 et de masque 255.0.0.0 veut transmettre un paquet à
la machine DST 20.200.100.5 .
...CORRECTION...
Les 255 du masque signale les octets portant l'adresse du réseau. On ne tient donc compte que d'un seul octet.
Donc l'adresse IPv4 20.30.40.50 et de masque 255.0.0.0 veut dire que :
La partie adresse-réseau est 20.0.0.0 
La partie adresse-machine est 0.30.40.50 
L'adresse de l'autre machine étant 20.200.100.5 , on peut dire que les deux machines sont sur le même réseau : l'adresse commence par 20
Il faut donc rester sur le réseau.
09 (IPv4)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse IPv4 90.80.20.120 et de masque 255.255.255.0 veut transmettre un paquet à
la machine DST 90.80.20.5 .
...CORRECTION...
Les 255 du masque signale les octets portant l'adresse du réseau. On tient donc compte des trois premiers octets.
Donc l'adresse IPv4 90.80.20.12 et de masque 255.255.255.0 veut dire que :
La partie adresse-réseau est 90.80.20.0 
La partie adresse-machine est 0.0.0.12 
L'adresse de l'autre machine étant 90.80.20.5 , on peut dire que les deux machines sont sur le même réseau : l'adresse commence par 90.80.20
Il faut donc rester sur le réseau.
(Rappel) 3.6 Description de l'adressage IP v6
A - Principe
Une adresse IP v6 plus lourde qu'une adresse IP v4 : elle est constituée de 16 octets (128 bits, 16*8).
On la représente en hexadécimal en séparant chaque couple d'octets par un double point.
Exemples
Adresse au hasard : 2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64
Local host : 0:0:0:0:0:0:0:1 ou en plus concis ::1/128
B - Précisions sur la lecture des adresses
Chaque valeur entre deux : varie donc entre 0000 et FFFF et correspond à deux octets.
L'adresse réseau est à gauche et se nomme Préfixe en IPv6.
L'adresse machine est à droite et se nomme Interface en IPv6.
L'adresse-réseau est précisée en fournissant le nombre de bits la caractérisant avec la notation /x.
/16 veut dire dire que le premier couple d'octets caractérise le réseau
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /16
/32 veut dire dire que les deux premiers couples d'octets caractérise le réseau
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /32
/48 veut dire dire que les trois premiers couples d'octets caractérise le réseau
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /48
/64 veut dire dire que les quatre premiers couples d'octets caractérise le réseau
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64
C - Nombre d'adresses disponibles
Toutes les machines joignables sur Internet peuvent possèder une adresse IP propre au vu du nombre d'adresses disponibles (2128), soit 340282366920938463463374607431768211456.
De façon optionnelle, il existe néanmoins un système d'adressage derrière lequel on peut cacher les machines derrière leur passerelle. Cela permet d'éviter de donner la vraie adresse IP d'une machine et ainsi de l'exposer directement à Internet.
Conception d'une adresse IP v6
Les adresses IPv6 sont créées de différentes manières. L'une d'entre elles consiste simplement à prendre 64 bits pour l'adresse du réseau et à obtenir une adresse-machine de 64 bits à partir des 48 bits de l'adresse MAC-48 de la carte réseau de la machine. D'autres méthodes existent.
En suivant cette technique de 64 bits pour l'adresse-réseau et 64 bits pour l'adresse-machine, les fournisseurs d'accès à Internet utilisent souvent la méthode suivante :
Les 3 premiers couples (48 bits) sont propres à tous les clients du fournisseur.
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64 : les trois premiers couples d'octets (en rouge) définissent la topologie publique donnée par les RIR aux fournisseurs d'accès (providers). Un gros fournisseur peut se voir attribuer plusieurs adresses de ce type.
le 4e couple (16 bits) forme l'un des sous-réseaux du fournisseur (deux clients peuvent donc avoir une valeur différente)
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64 : le couple d'octets suivant définit le sous-réseau. En règle générale, c'est donc votre fournisseur qui vous fournit un sous-réseau dans son propre réseau.
les 4 derniers couples (64 bits) forme l'adresse-machine (obtenue à partir des 48 bits de l'adresse MAC, ou pas).
2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64 : les quatre derniers couples permettent de séparer les différentes machines du sous-réseau.
10 (IPv6)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse IPv6 2a01:cb0c:96ac:d400:63ba:f65c:3616:15d4 /64 veut transmettre un paquet à
la machine d'adresse 2a01:cb0c:96ac:d400:73ba:12e3:3616:45a1 .
...CORRECTION...
Les 4 premiers couples hexadécimaux caractérisent le réseau et le sous-réseau.
On voit qu'ils sont identiques : on reste sur le même réseau.
11 (IPv6)° Comment sait-on s'il faut rester dans le réseau local actuel ou quitter le réseau dans le cas suivant ?
La machine d'adresse IP v6 2a01:cb0c:96ac:d400:4545:f65c:3616:15d4 /64 veut transmettre un paquet à
la machine d'adresse IP aabb:9b0c:96ac:045d:73ba:12e3:3616:45a1 .
...CORRECTION...
Les 4 premiers champs hexadécimaux (en jaune) caractérisent le réseau et le sous-réseau.
On voit qu'ils ne sont pas identiques : on doit changer de réseau.
On a donc un beau paquet IP qui contient l'adresse IP de la machine-destinataire DST (et l'adresse de la machine-expéditeur SRC, c'est plus pratique pour répondre).
Il n'y a plus qu'à envoyer le message.
Deux difficultés :
A qui envoyer le message ?
Comment envoyer le message ?
A qui envoyer le message ? C'est le PROTOCOLE IP qui nous aide.
La difficulté est de savoir à qui transmettre le paquet pour gérer au mieux l'acheminement du paquet IP.
Si on est déjà sur la bonne machine : c'est la machine actuelle (localhost) qui pourra transmettre le message à sa couche TRANSPORT.
Si on est déjà sur le bon réseau : c'est la machine actuelle (en transmettant sur son réseau local), qui pourra transmettre le message à la couche RESEAU de la cible.
Si nous ne sommes pas sur le bon réseau : il va falloir trouver un routeur capable de nous rapprocher du réseau de la cible (on dit aussi une passerelle).
Comment envoyer le message ? C'est la table de ROUTAGE qui nous aide.
On utilise une table de routage qui comporte plusieurs informations et qui se lit de haut en bas comme une structure IF-ELIF-ELSE : dès qu'on trouve un cas valide, on l'applique et on sort.
Une colonne IP DESTINATION qui permet de sélectionner le cas qui nous intéresse.
Une colonne IP PASSERELLE qui permet d'identifier la prochaine machine qui va permettre d'acheminer le paquet et l'amener un peu plus près de la cible.
Une colonne INTERFACE qui permet de sélectionner la carte réseau à utiliser pour établir une communication directe depuis la machine actuelle avec la passerelle voulue : la machine actuelle peut avoir plusieurs cartes réseaux, et il faut savoir laquelle utiliser pour joindre notre passerelle.
Voyons les trois cas possibles :
La machine-destinataire DST est l'ordinateur actuel lui même :
L'ordinateur actuel (localhost) est le plus à même de transmettre le paquet IP. Il n'y a donc pas vraiment de passerelle.
La couche RESEAU de A9 peut donc transmettre à la couche TRANSPORT de A9 pour trouver le bon programme maintenant. C'est TCP qui va pouvoir agir maintenant.
Si l'IP de Destination est
donner à IP PASSERELLE
en transmettant avec l'INTERFACE indiquée
A9
Localhost
Localhost
Traduction : on reste à l'interne puisqu'on est arrivé : c'est l'ordinateur actuel qui va jouer le rôle de "passerelle" pour transmettre le message à son propre couche TRANSPORT/TCP en utilisant son interface LOCALHOST.
Il s'agit donc d'un transport du paquet IP de la couche RESEAU vers la couche TRANSPORT.
La machine-destinataire DST appartient au réseau de l'ordinateur actuel :
C'est encore la machine actuelle (A9) qui est la plus à même de transmettre le paquet IP puisqu'elle connait A2 via le RESEAU LOCAL et son commutateur. Il n'y a donc pas vraiment de passerelle non plus.
La couche RESEAU de A9 peut transmettre le paquet IP à la couche RESEAU de A2 en utilisant son unique sortie reliée à sa carte réseau. On passera par le réseau local (et le commutateur)
Si l'IP de Destination est
donner à IP PASSERELLE
en transmettant avec l'INTERFACE indiquée
A9
Localhost
Localhost
N'importe quelle autre adresse du réseau A
A9 via le réseau local
On utilise l'unique carte-réseau de A9
Traduction : c'est le vrai ordinateur de destination qui est la prochaine passerelle et on peut le joindre en utilisant la carte réseau de l'ordinateur actuel.
Il s'agit donc d'un transport du paquet IP d'une couche RESEAU vers une autre couche RESEAU.
Le destinataire est sur un autre réseau :
C'est le routeur A1 du réseau A qui sera le plus à même de raprocher le paquet de sa cible puisqu'il peut sortir du réseau.
La couche RESEAU de A9 envoie donc le paquet IP à la couche RESEAU du routeur A1 en utilisant son unique carte-réseau.
Si l'IP de Destination est
donner à IP PASSERELLE
en transmettant avec l'INTERFACE indiquée
A9
Localhost
Localhost
N'importe quelle autre adresse du réseau A
A9 via le réseau local
on utilise l'unique carte-réseau de A9
N'importe quelle adresse du réseau B
A1
on utilise l'unique carte-réseau de A9
N'importe quelle adresse du réseau C
A1
on utilise l'unique carte-réseau de A9
N'importe quelle adresse du réseau Y
A1
on utilise l'unique carte-réseau de A9
N'importe quelle adresse du réseau Z
A1
on utilise l'unique carte-réseau de A9
REMARQUE 1 : quelque soit les machines qui transporteront ensuite le paquet IP, celui-ci indiquera toujours que la source est A9. C'est ça qui permettra au vrai destinataire final de répondre.
REMARQUE 2 : A9 ne peut communiquer directement qu'avec l'adresse A1 du routeur dont les cartes réseaux sont A1-Y1-Z1.
Sur les exercices "papier", on peut avoir l'impression que la colonne INTERFACE ne sert à rien car notre cerveau identifie facilement la liaison à utiliser. Mais n'oubliez pas que c'est l'ordinateur qui fait le travail. Et lui a besoin de cette information.
INTERFACE
Dans la colonne DESTINATION et PASSERELLE, on trouve toujours des indications d'adresses IP.
Dans la colonne INTERFACE, on peut trouver plusieurs façons de localiser la bonne carte :
On trouve parfois l'adresse IP de la carte (adresse logique).
On trouve parfois l'adresse MAC de la carte (adresse physique).
On trouve parfois le nom du port matériel (broche) à utiliser.
Pour les cartes Ethernet (avec prises RJ-45), l'interface apparaît souvent sous le nom eth0, eth1...
Pour les cartes Wifi, on note souvent wlo1...
Dans le cadre de ce cours, je choisis le plus souvent de mettre dans la colonne INTERFACE, l'adresse IP de la carte à utiliser pour sortir de l'ordinateur actuel car cela évite d'introduire les adresses MAC ou de parler de la technologie employée sur la ligne. Mais sachez que le tout est de savoir identifier la carte de sortie.
On remarquera également qu'on a souvent les mêmes lignes qui apparaissent dans la table de routage de A9. On peut alors comme avec un IF-ELIF-ELSE utiliser le ELSE final comme valeur par défaut.
Table de routage de l'ordinateur A9
DESTINATION
PASSERELLE
INTERFACE
A9
Localhost
Localhost
Réseau A
A9 via le réseau local
A9
Réseau B
A1
A9
Réseau C
A1
A9
Réseau Y
A1
A9
Réseau Z
A1
A9
Devient.
DESTINATION
PASSERELLE
INTERFACE
A9
Localhost
Localhost
Réseau A
A9 via le réseau local
A9
Par défaut
A1
A9
Retour à l'exemple A9 pour C2 : on voit ici que le paquet IP va devoir être géré par le routeur A1 en étant émis par la carte réseau de la machine A9.
Table de routage du routeur du réseau A
Ce routeur est l'unique porte d'entrée et de sortie vers le réseau A. C'est pour cela qu'on le nommera "routeur A" mais notez bien qu'il appartient aussi au réseau Z et Y !
DESTINATION
PASSERELLE
INTERFACE
A1 ou Y1 ou Z1
Localhost
Localhost
Réseau A
A1 via le réseau local
A1
Réseau Y
Y1 via le réseau local
Y1
Réseau Z
Z1 via le réseau local
Z1
Réseau B
Y2
Y1
Réseau C
Z2
Z1
On remarquera bien que toutes les passerelles proposées font bien partie des réseaux auxquels le routeur est directement relié.
Retour à l'exemple A9 pour C2 : le paquet IP est arrivé sur ce routeur A1. Il est alors transmis au routeur Y2 en utilisant la carte réseau dont l'adresse est Y1.
Importance de l'interface de sortiie
Comme un routeur possède plusieurs adresses et donc plusieurs cartes-réseaux, il est indispensable de lui préciser de quel côté sortir du routeur. C'est à ça que sert l'information "interface".
Table de routage du routeur relié au réseau C
DESTINATION
PASSERELLE
INTERFACE
C1 ou X1 ou Z2
Localhost
Localhost
Réseau C
C1 via le réseau local
C1
Réseau X
X1-même via le réseau local
X1
Réseau Z
Z2 via le réseau local
Z2
Défaut
X2
X1
On remarquera bien que toutes les passerelles proposées font bien partie des réseaux auxquels le routeur est directement relié.
Retour à l'exemple A9 pour C2 : le paquet IP arrive donc sur le routeur C1. Il est alors transmis à l'ordinateur C2 en utilisant la carte réseau identifiée par C1.
12° La machine C2 veut répondre et renvoyer sa réponse à A9. Quelle va être l'adresse SRC de l'expéditeur lors de cette réponse ? Quelle va être l'adresse DST du destinataire ? Quel devrait être le premier routeur que va rencontrer ce messsage de retour ?
...CORRECTION...
C'est l'inverse : la SOURCE SRC va être C2 et la DESTINATION DST est A9.
Comme le seul routeur pour sortir du réseau C est le routeur C1/X1/Z2, on va certainement y arriver.
13° En analysant la table de routage du routeur C ("C1/X1/Z2"), déterminer la passerelle qui va recevoir le paquet IP lors du transfert C2 vers A9.
...CORRECTION...
Il n'y a que la présence de la passerelle par défaut : on part donc vers la passerelle X2.
14° Proposer une table de routage pour le routeur B ("X2/Y2/B1") qui permettent aux paquets IP de pouvoir circuler correctement.
...CORRECTION...
DESTINATION
PASSERELLE
INTERFACE
B1 ou X2 ou Y2
Localhost
Localhost
Réseau B
B1 via le réseau local
B1
Réseau X
X2 via le réseau local
X2
Réseau Y
Y2 via le réseau local
Y2
Défaut
Y1
Y2
15° Que pourrait-il se passer si la table de routage du routeur B indiquait de router les paquets IP à destination du réseau A vers le routeur X1 ?
...CORRECTION...
N'importe quel paquet à destination de A émis depuis les réseaux B ou C vont alors faire des allers-retours entre les deux routeurs du réseau B et C. Aucun ne pourra arriver à destination !
16° Quel mécanisme permet aux paquets de ne pas errer jusqu'à la fin des temps sur Internet ?
...CORRECTION...
Il s'agit du compteur nommé TTL (Time to Live) en IPv4 ou Hop Limit en IPv6 (1 octet dans les deux cas) : c'est un compteur qui décroit de 1 à chaque fois que le paquet est transféré par un routeur. Arrivé à 1, le paquet n'est plus déplacé et part juste à la poubelle.
Passerelle "Réseau Local" sur une 'vraie' table
Il existe plusieurs façons d'indiquer qu'on peut transmettre le paquet IP directement sur le réseau local.
Sous Linux, cela apparaît via une indication "0.0.0.0" dans la colonne Passerelle/Gateway. Cela veut dire qu'il n'y a pas de passerelle (0 partout dans l'adresse). Il faut donc passer par le réseau local.
Sous Windows, cela apparaît via une indication "OnLink" dans la colonne passerelle. Cela veut dire qu'on est déjà en lien avec la cible. Il faut donc passer par le réseau local.
Route par défaut sur une 'vraie' table
La plupart du temps, on indique la destination par défaut avec "0.0.0.0" dans la colonne Destination. En effet, rien ne peut être plus imprécis que cela, et c'est donc cette ligne qui sera sélectionnée si aucune autre ne correspond.
Routage statique
Ce que nous venons de voir se nomme le routage statique : quelqu'un configure les routes à la main.
Avec l'augmentation de nombre de routeurs, les risques de faire un mauvais réglage augmentent de façon évidente. C'est pour cela que nous verrons deux techniques de routages dynamiques la fois prochaine.
De la même façon, même avec des routes bien configurées, la moindre panne réseau va obliger le responsable à redéfinir manuellement celles-ci. C'est bien entendu totalement inenvisageable sur Internet ou n'importe quel gros réseau !
Si on résume, ce qui se passe lorsqu'un programme veut communiquer :
Sa couche APPLICATION formate son message pour que l'autre programme puisse le comprendre.
Mais elle ne sait pas transférer le message à l'autre programme. Alors...
Elle transmet la communication à la couche TRANSPORT
La couche TRANSPORT va alors couper le message et rajouter les PORTS et ainsi créer des segments.
Mais elle ne sait pas transférer le message à un autre ordinateur. Alors...
Elle transmet la communication à la couche RESEAU/INTERNET
La couche RESEAU/INTERNET va rajouter les ADRESSES IP et ainsi créer des paquets.
A l'aide du protocole IP, elle va déterminer où transférer ce paquet IP et avec quelle carte réseau il va faire cela.
Mais elle ne sait pas gérer concrétement le transport du paquet. Alors...
Elle transmet la communication à la couche ACCES RESEAU
Il est temps de passer le paquet IP à la couche ACCES RESEAU pour voir comment transférer cela à la passerelle suivante !
Attention : sauf cas exeptionnel, on ne changera plus le contenu du paquet IP (à part le compteur de sauts).
Rien d'exigible ici : toute ce qui suit dépend énormément de la nature du réseau (Wifi, Ethernet, Fibre optique, réseau très grand débit...) et des technologies et des normes. Tout cela évolue vite. Trop vite pour qu'il y ai un quelconque intérêt à en connaître les détails à moins de déjà travailler dans ce domaine. C'est pour cela que le programme n'en parle pas.
Pourquoi rajouter encore une couche ?
Nous allons rajouter encore un nouvel en-tête devant le paquet IP pour créer ce qu'on nomme une trame. Mais on va aussi rajouter des choses à la fin cette fois, de façon à entourer le paquet IP.
Le paquet IP contient les informations qu'un ordinateur initial veut transmettre à un ordinateur final. Il s'agit du contenu du colis que vous vouliez envoyer initialement.
La trame est le carton d'emballage, mais avec un principe un peu étange : à chaque fois qu'on change de main lors du transport, on change l'emballage.
Sur cette couche, l'identifiant est l'adresse MAC (pour Media Access Control) et elle permet d'identifer la carte réseau utilisée.
Il s'agit d'adresses sur 6 octets (48 bits, 6*8).
Un ordinateur n'accepte les messages que si l'adresse MAC du destinataire ACCES RESEAU est bien la sienne.
Détection du début et de la fin
Le but de la trame est d'abord de permettre le transport concret du paquet IP : celui-ci ne contient que des informations. C'est dans l'ACCES RESEAU qu'on va transformer ces informations en signaux physiques (électriques, optiques...) pour les transporter physiquement.
On entoure alors les octets du paquet IP d'une séquence signalant le début et la fin du signal envoyé. Comme cela, le récepteur sait qu'il reçoit bien un vrai signal et pas juste du bruit.
On commence donc à placer en début de trame une séquence bien précise de bits (elle dépend du type de réseau physique) qui permet de dire "Arrivée d'un nouveau message". Idem à la fin.
Anonymisation des machines
L'adresse IP joue le rôle d'adresse logique. Cela permet d'identifier un rôle dans le réseau et de l'anonymiser.
A l'extérieur du réseau, personne ne sait quelle machine joue réellement ce rôle. Lorsqu'on veut la joindre, on donne simplement son adresse IP.
C'est un peu le principe des forces de police dont on ne peut identifier les membres qu'à l'aide d'un numéro d'agent. On ne connait pas leurs noms. Depuis l'extérieur du réseau, l'adresse IP suffit à joindre la bonne machine. C'est une fois dans le réseau qu'on tente de localiser réellement la bonne machine pour lui délivrer le paquet IPP.
Comment ? C'est le rôle de l'adresse MAC des cartes réseaux. On parle d'adresse physique : connaître cette adresse permet de localiser un ordinateur particulier (enfin, la carte réseau et donc l'ordinateur sur lequel elle est branchée).
Chaque machine d'un réseau possède une table dite ARP (Adress Resolution Protocol) qui peut contenir les correspondances adresse IP <-> adresse MAC pour les machines de ce réseau.
Lorsqu'une machine veut communiquer avec une autre machine de son propre réseau, il va voir l'adresse MAC correspondante et rajoute sa propre adresse MAC et celle qu'elle vient de trouver dans l'en-tête de la TRAME.
Imaginons qu'on doive joindre le routeur d'adresse IP A1. Si on appartient au réseau A, on peut avoir une entrée de la table ARP qui signale que IP A1 <--> MAC 45:54:f5:4e:28:3d.
On peut alors envoyer le message sur le réseau interne et il ne sera lu que par la machine qui porte bien cette adresse MAC.
La couche ACCES RESEAU se charge donc d'utiliser les cartes réseaux pour réaliser la connection physique entre deux ordinateurs qui sont en connexion directe sur un même réseau.
Internet et son modèle TCP / IP est plus ancien que le modèle OSI.
Mais après la création et l'utilisation effective de TCP / IP, beaucoup de chercheurs ont théorisé sur les réseaux. Il existe maintenant une norme (OSI, à gauche) plus précise encore qu'on tente de respecter sur les nouveaux réseaux.
Passerelle réseau - culture générale
Le mot passerelle est utilisé pour désigner tout dispositif qui permet de faire la liaison entre deux réseaux.
En anglais, on dit gateway.
Au niveau PHYSIQUE, la passerelle qui permet de relier deux parties physiques se nomme un répéteur : un dispositif qui recçoit un signal physique, qui l'amplifie et l'émet à nouveau dans l'autre direction. Un répéteur WIFI permet par exemple d'étendre la zone d'utilisation d'une BOX.
On trouve aussi le HUB USB par exemple, qui permet connecter plusieurs appareils à un port USB unique sur l'ordinateur.
Au niveau LIAISON / ACCES RESEAU, la passerelle permettant d'émettre à nouveau le message à l'intérieur d'un réseau sera nommée un pont.
Dans un bon nombre de réseaux, la communication se fait souvent par commutation au niveau LIAISON. Ce pont se nomme donc un commutateur. Mais attention, tous les ponts ne sont pas des ponts-commutateurs. Il existe également des ponts-routeurs qui routent les paquets IP sans repasser par le niveau RESEAU / INTERNET ce qui augmente la vitesse de transmission puisqu'il y a moins de traitement à faire.
Au niveau RESEAU, la passerelle permettant de transmettre un message est un relais. Dans un bon nombre de réseaux, ce relais utilise la technique du routage. On parle donc de routeur. Mais on trouve également de la commutation.
Néanmoins, dans l'usage usuel, passerelle désigne plutôt l'appareil faisant cette liaison en remontant jusqu'au niveau APPLICATION au moins (comme votre Box). Cet appareil peut surveiller les communications et faire office de firewall par exemple. Chez vous, il s'agit donc de votre Box.
Activité publiée le 26 10 2020
Dernière modification : 02 12 2020
Auteur : ows. h.