Accueil > Réseau > Chapitre 7
TCP / IP est un ensemble de protocoles permettant les communications entre les ordinateurs. C'est le plus répandu car il est utilisé par internet.
Il présente sous sa popularité de nombreux avantages :
Si l'on veut bâtir un réseau pouvant communiquer avec l'extérieur, il est indispensable de comprendre le fonctionnement TCP / IP.
Pour illustrer comment les données circulent entre les périphériques sous TCP / IP, un modèle ressemblant au modèle OSI a été développé :
APPLICATION |
---|
TRANSPORT |
INTERNET |
ACCES RESEAU |
Cette couche est chargée de définir comment la machine se connecte au réseau.
Elle permet à l'hôte de respecter les règles de transmission et de réception dictées par la topologie du réseau. Elle va notamment vérifier, lors de la réception d'un paquet, que l'adresse matérielle de destination correspond bien à celle de l'hôte. Lors de l'envoi d'un paquet, elle va ajouter une entête contenant les adresses MAC sources et destination.
On y trouve de nombreux protocoles responsables de l'adressage du routage.
Les 2 protocoles principaux de cette couche sont IP (Internet Protocol) et ARP (Adress Resolution Protocol).
Il est chargé de déterminer une adresse physique à partir de l'adresse logique (ou adresse IP) d'une machine. Lorsqu'un hôte veut communiquer avec un autre, il adresse les données à l'adresse IP du destinataire.
Or, il a aussi besoin de connaitre l'adresse MAC du destinataire. Pour cela, il utilise ARP de la façon suivante :
Il définit le format des adresses logiques, ou adresses IP. Chaque hôte d'un réseau TCP / IP a une adresse IP unique.
Cette adresse se divise en 2 parties : une identifiant le réseau où se trouve la machine,
une identifiant la machine dans le réseau.
Il est aussi responsable du routage. C'est à dire qu'il détermine où envoyer un paquet pour qu'il parvienne à son destinataire.
Il va notamment déterminer si un paquet a une destination locale (dans le même réseau que l'expéditeur) ou distante (dans un réseau différent).
Pour cela, il utilise le masque de sous-réseau de l'adresse.
Si la destination est locale, IP communique directement avec elle.
Si la destination est distante, IP doit déterminer la route pour l'atteindre. Pour cela, IP utilise une table de routage lui indiquant où envoyer le paquet pour atteindre certains réseaux.
S'il n'existe pas de chemin pour la destination demandée dans la table de routage, alors IP enverra le paquet à la passerelle par défaut.
Schéma #1
Les protocoles de cette couche délivrent et reçoivent les données. Il y a 2 protocoles sur cette couche :
C'est là que TCP / IP traite les requêtes des explications : navigateur, clients, divers...
Chaque application attend des données sur un port. Un port est un nombre utilisé par les applications comme adresse d'envoi et de réception. C'est la couche Application qui va diriger les paquets vers le port correspondant à l'application à laquelle ils sont destinés.
Le port est codé sur 16 bits pour TCP et 16 bits pour UDP. Il y a 216 = 65536 ports TCP et 65536 ports UDP.
Les ports de 1 à 1024 sont dits réservés. Ils sont destinés à des applications précises.
Exemple :
TCP : 80 : réservé pour HTTP.
TCP : 21 : réservé pour FTP.
UDP : 80 : réservé pour DNS.
L'acheminement d'un paquet se fera donc via un socket : adresse IP : protocole de transport : port.
Les adresses IP, ou adresses logiques, sont utilisées par le protocole IP, au niveau de la couche Internet de TCP / IP possède une adresse IP unique sur le réseau, par interface réseau.
Il existe 2 familles d'adresses IP, selon la version du protocole IP utilisé :
IPv4 et son successeur IPv6. Nous étudierons IPv4.
IPv4 est codé sur 32 bits, il en existe donc 232 soit environ 4 milliards.
Pour des raisons pratiques, on ne manipule pas ces adresses sous leur forme brute. On utilise la notation dite décimale pointée, soit 4 entiers séparés par des points w.x.y.z.
Chaque entier correspond à un des octets de l'adresse (32 bits = 4*8 bits = 4 octets).
Exemple :
1100 0000 | 0001 0010 | 1001 0000 | 0000 0110 |
192 | 18 | 144 | 6 |
Dans l'adresse IP, un entier est compris entre 0 et 255 (0000 0000 et 1111 1111).
Pour assurer l'unicité des adresses IP et une bonne répartition, l'organisme d'attribution d'adresse (IANA) a divisé les adresses IP en classes.
Toutes les adresses appartiennent à une classe selon la valeur de leur premier octet (le plus à gauche). Chaque classe divise les adresses en 2 parties :
la partie réseau et la partie en hôte.
La première sert à coder le numéro du réseau et la seconde sert à coder les machines dans ce réseau.
La partie réseau et la partie hôte ne peuvent jamais être entièrement à 0, ni entièrement à 1.
Le premier octet d'une adresse de classe A commence toujours par 0. La partie réseau est constituée par le premier octet, la partie hôte par les 3 suivants.
Le premier octet peut prendre les valeurs de 0000 0001 à 0111 1111, soit de 1 à 127.
La partie réseau est codée sur 8 bits dont 1 est fixe, soit 7 bits qui varient. On a donc 27 - 1 réseaux possibles = 127.
La partie hôte est codée sur 24 bits (3 octets). On aura donc, par réseau, 224 - 2 combinaisons "tout à 0" et "tout à 1" = 16 277 214 machines.
Dans chaque classe, il existe une plage d'adresses privée, utilisables uniquement en réseau local (les routeurs ne laissent pas passer les paquets en provenance ou à destination de ces adresses).
Pour la classe A, ce sont les adresses de 1.0.0.1 à 126.0.0.0.
Le réseau 127.x.y.z est un réseau particulier. Il est réservé pour effectuer des diagnostics et aucune machine ne peut avoir d'adresse commençant par 127. L'adresse 127.0.0.1 désigne notamment la machine locale (on l'appelle aussi la boucle locale ou loopback).
Le premier octet d'une adresse de classe B commence par 10. La partie réseau est constituée des 2 premiers octets, la partie hôte des 2 suivantes. Le premier octet aura une valeur comprise entre 1000 0000 et 1011 1111 soit 128 et 191.
La partie réseau est codée sur 16 bits dont 2 fixes, soit 14 bits variables. On aura donc 214 = 16 384 réseaux de classe B.
La partie hôte est codée sur 16 bits (2 octets), soit 216 - 2 = 65 534 machines par réseau de classe B. Les adresses privées de classe B vont de 128.0.0.1 à 191.255.0.0.
Le premier octet d'une adresse C commence par 110. La partie réseau est constituée des 3 premiers octets, la partie hôte du dernier octet.
Le premier octet aura une valeur comprise entre 1100 0000 et 1101 1111, soit entre 192 et 223. La partie réseau est codée sur 24 bits dont 3 fixes, soit 21 bits variables.
On aura donc 221 = 2 097 152 réseaux de classe C.
La partie hôte est codée sur 8 bits, soit 28 - 2 = 254 machines par réseau de classe C.
Les adresses privées de la classe C vont de 192.0.0.0 à 192.168.255.254.
Les adresses de classe A, B et C sont les seuls que l'on peut attribuer à des machines. Il existe néanmoins d'autres classes (D : de 224 à 239 et E : de 240 à 255) servant à des besoins spécifiques.
Il existe 2 façons d'attribuer une adresse IP à une machine : manuellement ou automatiquement.
C'est l'utilisateur qui doit fournir à la machine l'adresse IP qu'il lui attribue, ainsi que d'éventuelles autres informations de configuration (passerelle par défaut, serveur DNS, etc...).
Il faut posséder les droits administrateur pour effectuer cette configuration.
Sous Windows :
Il est possible d'attribuer automatiquement une adresse IP à une machine grâce au protocole DHCP (Dynamic Host Control Protocol).
Il est basé sur un modèle client / serveur : les hôtes désirant obtenir une adresse IP seront les clients et ils interrogeront un serveur DHCP.
DHCP a de nombreux avantages :
Quand un client souhaite obtenir une adresse IP par DHCP, il passe par les phases suivantes :
Le client dispose alors d'une adresse IP
DHCP peut fournir outre l'adresse IP, de nombreux paramètres parmi lesquels l'adresse du serveur DNS, l'adresse de la passerelle par défaut, etc...
Une adresse IP est généralement donnée par DHCP pour un temps fini : le bail. Le client, une fois le bail écoulé, demande un renouvellement au serveur.
Les requêtes DHCP ne passent pas les routeurs. Si on a un serveur DHCP sur un autre réseau, on doit activer un DHCP relais sur le routeur qui transmettra les paquets au serveur.
DHCP est capable d'attribuer toujours la même IP à la même machine, ce qui est indispensable pour les serveurs. Pour cela, il lit l'adresse MAC du client dans le paquet DISCOVER et regarde sa configuration s'il doit l'associer à une adresse IP particulière.
Un MSR est un nombre en notation décimale pointée. Il permet à IP de savoir dans l'adresse IP a laquelle le masque est associé, combien de bits constituent la partie réseau.
Un MSR est toujours constitué d'un certains nombre de 1 consécutifs suivis de 0 (il s'écrit sur 32 bits). Les octets d'un MSR ne peuvent prendre que les valeurs suivantes :
Il faut que le MSR respecte la règle suivante :
soit MSR : X4.X3.X2.X1 si Xi<255 alors Xi-1=0
Exemples :
255.255.128.0
255.0.0.0
224.0.0.0
255.255.255.240
Le MSR, en donnant à IP le nombre de bit identifiant le réseau dans une adresse, lui permet de déterminer si la destination d'un paquet est locale ou distante.
2 machines sont sur le même réseau si et seulement si, leur partie réseau est identique.
Pour déterminer si la destination est locale ou distante, IP va effectuer un ET bit à bit entre le MSR et l'adresse de l'expéditeur et un ET bit à bit entre le MSR et l'adresse du destinataire.
Ces 2 ET permettent de "sortir" les parties réseaux des 2 adresses. Il suffit alors de les comparer.
Exemple :
L'hôte 12.43.109.27 de MSR 255.255.248.0 envoie un paquet à l'hôte 12.43.106.19 de masque 255.255.248.0
00001100 | 00101011 | 01101101 | 00011011 |
11111111 | 11111111 | 11101000 | 00000000 |
00001100 | 00101011 | 01101000 | 00000000 |
= 12.43.104.0 : adresse qui correspond à l'adresse du réseau de l'expéditeur.
00001100 | 00101011 | 01101010 | 00001011 |
11111111 | 11111111 | 11101000 | 00000000 |
00001100 | 00101011 | 01101000 | 00000000 |
= 12.43.104.0 : adresse qui correspond à l'adresse du réseau du destinataire.
Conclusion: les 2 machines sont sur le même réseau. La destination est donc locale.
Exercice :
L'hôte 241.37.239.19 de MSR 255.255.252.0 envoie un paquet à l'hôte 241.37.227.19 de masque 255.255.252.0.
La destination est-elle locale ou distante ?
01111010 | 00101011 | 11101111 | 00010011 |
11111111 | 11111111 | 11111111 | 11111100 |
01111010 | 00101011 | 11101111 | 00010000 |
= 122.43.239.16 : adresse qui correspond à l'adresse du réseau de l'expéditeur.
01111010 | 00101011 | 11000011 | 00010011 |
11111111 | 11111111 | 11111111 | 11111100 |
01111010 | 00101011 | 11000011 | 00010000 |
= 12.43.195.16 : adresse qui correspond à l'adresse du réseau du destinataire.
Chaque classe d'adresse dispose d'un MSR par défaut. On a vu que pour la classe A, la partie réseau est constituée du premier octet, pour la classe B, des 2 premiers et pour la classe C, des 3 premiers.
Par conséquent, les masques par défaut sont :
On dit que dans une adresse de classe A, on a 8 bits Réseau (ou 8 bits R); dans une adresse de classe B, on a 16 bits R; dans une adresse de classe C, on a 24 bits R.
Les bits restant servent à coder les hôtes (H). On a donc :
Tableau récapitulatif :
Classe | Bits R | Bits H |
---|---|---|
A | 8 | 24 |
B | 16 | 16 |
C | 24 | 8 |
Quand on obtient une adresse de réseau, il peut être utile de la diviser en plusieurs sous-réseaux indépendants.
Pour cela, on va modifier le MSR et utiliser certains bits H pour les convertir en bits de sous-réseaux (bit S).
On aura une partie réseau (bits R + S) plus importante au détriment des bits H.
Pour créer des sous-réseaux, on va d'abord déterminer la classe de l'adresse réseau. Elle nous donne le nombre de bits R qui restera constant.
Il nous faut ensuite déterminer le nombre de bits S nécessaires pour coder le nombre de sous-réseaux voulus. On construit alors le nouveau masque en ajoutant au masque par défaut le nombre de bits S nécessaires.
Le nombre de bits S dépend directement du nombre de SR à coder. Pour le déterminer, il faut calculer le nombre de bits nécessaires pour coder le nombre de réseaux demandés.
Exemple :
On veut 5 SR : 5 = (101)2 soient 3 bits.
On veut 279 SR : 279 = (100010111)2 soient 9 bits.
Attention : Le nombre de bits S maximum dépend du nombre de bits H donc de la classe de l'adresse.
Les bits H ne peuvent être tous à 0 ou tous à 1. Il doit donc rester maximum 2 bits H.
Il n'est pas nécessaire de calculer la valeur binaire précise du nombre de SR. Il suffit d'appliquer la règle suivante :
soit n le nombre de SR voulu, si 2k-1 < n < 2k alors, il faudra k bits S.
Exemple 1 :
256 < 279 < 512
28 < 279 < 29
donc 9 bits S.
Exemple 2 :
4 < 5 < 8
22 < 5 < 23
donc 3 bits S.
On construit le nouveau masque en ajoutant au MSR standard de la classe, le nombre de bits S correspond.
Exemple 1 :
Classe A : 279 SR > 9 bits S
MSR : 255.1111 1111.1000 0000.0000 0000
=> 255.255.128.0
Exemple 2 :
Classe B : 279 SR > 9 bits S
MSR : 255.255.1111 1111.1000 0000
=> 255.255.255.128
Exemple 3 :
Classe C : 27 SR : 16 < 27 < 32 : 5 bits S
MSR : 255.255.255.1111 1000
=> 255.255.255.248
Pour déterminer les adresses des SR, on découpe l'adresse du réseau initial en bits R, S et H selon le MSR.
Puis, on fait varier les bits S selon toutes les valeurs possibles.
Les bits R restent fixés, les bits H à 0.
Exemple 1 :
Réseau : 172.16.0.0
MSR : 255.255.224.0
On a une adresse de classe B, donc 16 bits R :
255.255.224.0 : 224 = 1110 0000
donc 172.16.0000 0000.0000 0000
On a donc les SR suivants:
#0 | 172.16.0000 0000.0000 0000 | = | 172.16.0.0 |
---|---|---|---|
#1 | 172.16.0010 0000.0000 0000 | = | 172.16.32.0 |
#2 | 172.16.0100 0000.0000 0000 | = | 172.16.64.0 |
#3 | 172.16.0110 0000.0000 0000 | = | 172.16.92.0 |
#4 | 172.16.1000 0000.0000 0000 | = | 172.16.128.0 |
#5 | 172.16.1010 0000.0000 0000 | = | 172.16.160.0 |
#6 | 172.16.1100 0000.0000 0000 | = | 172.16.192.0 |
#7 | 172.16.1110 0000.0000 0000 | = | 172.16.224.0 |
Exemple 2 :
On a l'adresse 193.19.4.0, on veut 37 SR.
Calcul du MSR : 25 < 37 < 26
255.255.255.1111 1100 > 255.255.255.252
#0 | 193.19.4.0000 0000 | = | 193.19.4.0 |
---|---|---|---|
#1 | 193.19.4.0000 0100 | = | 193.19.4.4 |
#2 | 193.19.4.0000 1000 | = | 193.19.4.8 |
#2 | 193.19.4.0000 1100 | = | 193.19.4.12 |
#63 | 193.19.4.1111 1100 | = | 193.19.4.252 |
Le 37ème sous réseau aura pour adresse 193.19.4.144 (= 36 * 4)
L'incrément entre 2 SR est égal à la valeur de la position du bit S le plus à droite.
Pour déterminer la plage d'adresses disponible pour un SR, on fixe les bits R et S et on fait varier les bits H en évitant les combinaisons interdites.
On obtient le nombre de bits H avec la formule H = 32 - (R + S).
Le nombre de machines disponibles par SR sera : 2H - 2
Exemples :
SR : 193.19.4.144
MSR : 255.255.255.252
24 bits R, 6 bits S
=> 32 - (24 + 6) = 2 bits H
22 - 2 par SR.
193.19.4.1001 0001 | = | 193.19.4.145 |
193.19.4.1001 0010 | = | 193.19.4.146 |
Exercice #1:
100.0.0.0, on veut 714 SR
1) Calculer le MSR.
2) Trouver les 5 premiers réseaux.
3) Donner la plage d'adresses du dernier.
1) Le masque de sous réseau :
515 < 714 < 1024
29 < 714 < 210
MSR : 255.1111 1111.1100 0000.0
255.255.192.0
2) Les 5 premiers réseaux :
#0 | 110.0000 0000.0000 0000.0 | = | 110.0.0.0 |
---|---|---|---|
#1 | 110.0000 0000.0100 0000.0 | = | 110.0.64.0 |
#2 | 110.0000 0000.1000 0000.0 | = | 110.0.128.0 |
#3 | 110.0000 0000.1100 0000.0 | = | 110.0.192.0 |
#4 | 110.0000 0001.0000 0000.0 | = | 110.1.0.0 |
#713 | 110.1111 1111.1100 0000.0 | = | 110.255.192.0 |
3) Plage d'adresse du dernier sous-réseau :
110.255.1100 0000.0000 0001 | = | 110.255.192.1 |
110.255.1111 1111.1111 1110 | = | 110.255.255.254 |
Avec le développement d'internet, 2 problèmes se sont posés rapidement :
Pour les résoudre ont été développés 2 procédures, le supernetting (sur-réseau) et le CIDR (Classless Inter-Domain Routing).
Les adresses de classe B ont rapidement souffert de pénurie à cause de gaspillage qu'elles occasionnaient. Pour des réseaux de plus de 254 hôtes, on prenait une classe B, quitte à en gaspiller la moitié.
Pour éviter ce gaspillage, on a commencé à attribuer plusieurs classes C afin de coller le plus précisément aux besoins.
Exemple :
- Pour un réseau de 500 machines, on attribue :
193.56.1.0 (254 hôtes) et 193.56.2.0 (254 hôtes)
- Pour un réseau de 1400 hôtes, on attribue :
201.19.14.0
201.19.15.0
201.19.16.0
201.19.17.0
201.19.18.0
201.19.19.0
Le problème, c'est que dans les tables de routage, là où on avait une ligne car une adresse réseau, on aura plusieurs lignes, une par réseau de
classe C.
On va donc créer un sous-réseau qui va englober toutes ces adresses de classe C représentant en fait le même réseau.
Pour cela, on va modifier le MSR de manière à ce qu'il recouvre les bits en commun de chacune des classes.
Exemple :
201.19.0000 1110.0
201.19.0000 1111.0
201.19.0001 0000.0
201.19.0001 0001.0
201.19.0001 0010.0
201.19.0001 0011.0
19 bits en commun (2*8 + 3).
MSR regroupant ces adresses :
255.255.1110 0000.0
255.255.224.0
Dans la table de routage on aura la ligne : 201.19.0.0 255.255.224.0
Ce terme désigne 2 choses :
Elle consiste à ne plus noter les masques de sous-réseau sous la forme décimale pointée X.Y.Z.T, mais avec un / suivi du nombre de bits à 1 du
MSR : /X.
Exemple :
255.255.0.0
8 + 8 sera noté /16
255.255.248.0
8 + 8 + 5 sera noté /21
On notera une adresse IP suivie de son masque aussi X.Y.Z.T/M.
Exemple : 142.62.30.0 /23
Une adresse de classe A aura un MSR par défaut de /8.
Une adresse de classe B aura un MSR par défaut de /16.
Une adresse de classe C aura un MSR par défaut de /24.
Cette notation permet de réduire la taille des tables de routage, mais peut aussi simplifier les calculs.
Exemple :
174.19.0.0 on veut 39 SR, calculer le MSR
32 < 39 < 64 => 6 bits S (26)
Classe B donc 16 bits R, donc le masque aura 16 + 2 = 22 bits donc MSR = /22
Le MSR a comme valeur : /(R+S).
Comme son nom l'indique, le CIDR est un système de classless, en opposition au système classfull utilisé jusqu'à présent.
Il n'y aura plus de notion de classe d'adresses, donc plus de masque par défaut. Le MSR sera calculé selon le nombre d'hôtes voulus.
Exemple :
Soit l'adresse 193.147.9.0, on veut 1000 hôtes
=> CIDR : 2H - 2 = 1000
2H = 998
=> H = 10 car 512 < 998 < 1024
10 bits H => 32 - 10 = 22 bits R => MSR = /22
Exercice #1:
Quelles sont les adresses IP couvertes par l'adresse CIDR 192.168.110.0 /20 ?
192.168.0110 1110.0
8 + 8 + 4 = 20
192.168.0110 0000.0000 0001
à
192.168.0110 1111.1111 1110
192.168.96.1 à 192.168.111.254
Exercice #2:
Soit l'adresse réseau 174.19.0.0 /21, combien de SR définit-elle ?
Adresse de classe B, donc 16 bits R
MSR en /21 donc R + S = 21
S = 21 - R
S = 21 - 16 = 5
Donc 25 = 32 SR possibles.