On sait donc comment deux machines peuvent s'envoyer des informations...Mais dès qu'un ordinateur donné aura plus d'un seul "interlocuteur", on comprend qu'il va falloir d'autres choses pour que tout ce petit monde puisse communiquer.
Et la situation devient de plus en plus complexe au fur et à mesure de l'augmentation de la taille du réseau :
De très nombreux protocoles de communication réseau ont été développpés et utilisés, mais celui qui devient "la norme" car c'est celui utilisé sur internet, est le protocole TCP/IP; c'est celui-ci qui sera décrit dans la suite de ce cours.
( On appelle par exemple intranet le réseau informatique de certaines entreprises, qui utilise le protocole TCP/IP mais qui n'est pas directement relié à internet.)
De la même façon que vous pouvez recevoir du courrier grâce à votre adresse postale, une machine peut échanger au sein du réseau à partir du moment où elle dispose d'une adresse qui permet de l'identifier sans ambiguité.
L'adressage est le maillon essentiel des protocoles TCP/IP pour rendre transparents les détails physiques des réseaux et faire apparaître l'Internet comme une entité uniforme.
Les adresses sur les réseaux sont numériques; deux familles d'adresses existent :
Tout matériel réseau ( carte réseau, wifi, ...) dispose d'une adresse MAC unique au niveau mondial, attribuée "en dur" dès la fabrication par le constructeur du dispositf.
L'adresse MAC ne change donc jamais et permet d’identifier chacun des périphériques réseau, notamment sur un réseau local.
Elle se présente sous une forme numérique de 6 nombres représentés en hexadécimal et correspondant chacun à un octet : XX:XX:XX:XX:XX:XX
.
Les 3 premiers nombres permettent d’identifier le fabricant de l’appareil; par exemple, 00:E0:4C:XX:XX:XX
désigne le constructeur "Realtek Semiconductor Corp".
Elle permet elle d’identifier une connexion à un réseau. On communique en s'adressant à une adresse IP donnée, pas directement une adresse MAC; toutefois, elle peut est amenée à changer : si vous utilisez le même appareil pour vous connecter à internet depuis un autre endroit, votre adresse IP ne sera plus la même car l’adresse IP dépend du réseau utilisé.
Un protocole particulier, le protocole ARP ( = Address Resolution Protocol ), permet alors de déterminer l'adresse MAC de la machine connectée à ce moment avec cette adresse IP. Pour faire correspondre les adresses matérielles aux adresses réseaux, le protocole ARP interroge les machines du réseau afin de connaître leur adresse matérielle et d’en créer une table de correspondance, dans une mémoire cache. Ainsi, lorsqu’une machine doit communiquer avec une autre, elle n’a qu’à consulter cette table de correspondance.
C'est pourquoi, plutôt que de "machines", on préfère parler d'hôtes sur un réseau, au sens où la machine concernée est alors "invitée" sur cette IP...
Deux catégories d'adresse IP existent :
172.174.96.2
.fe80::7961:9173:9e5f:1d8c
Attention, notion pas évidente mais fondamentale !
Au sein d'un réseau, les machines sont constamment en train d'échanger des informations, qui ne sont pas toujours des données : elles émettent régulièrement des messages, envoyés à toutes les autres machines du réseau, pour leur
demander par exemple leur adresse MAC, leur attribuer une IP, envoyer une requète, etc...
Si le réseau est grand, ces opérations appelées opérations de diffusion ( = broadcast ), qui sont de grandes consommatrices de bande passante, peuvent donc engorger, voire saturer,
le réseau au détriment de son bon fonctionnement.
Pour limiter le nombre de ces opérations, il faut donc diminuer le nombre de machines : on sub-divise donc un gros réseau en un certain nombre de plus petits sous-réseaux, chacun ayant son propre domaine de diffusion hors duquel ne "sortent" pas les opérations de diffusion, et qui sont donc indépendants les uns des autre. Par contre, les machines sur un même sous-réseau sont directement accesibles des unes aux autres.
On peut également avoir besoin de diviser un gros réseau en plusieurs petits pour des réseaux de sécurité ( on les "cloisonne" ainsi ) ou pour que leur gestion soit plus facile.
Mais du coup, il faudra deux adresses pour identifier une machine, une pour le réseau et une pour la machine elle-même. Or, l’adressage IP ne définit qu’une seule adresse par machine. Cela semble insuffisant... En réalité non : il suffit de segmenter cette adresse en deux parties distinctes, l’une pour le réseau, et l’autre pour la machine. C’est là où le masque entre en jeu, c’est lui qui joue le rôle de séparateur entre ces deux adresses.
Il est composé, comme l'adresse IP, de 4 octets, soit 32 bits.
Comme le masque définit tout le sous-réseau, il doit donc être le même pour tous les hôtes qui le composent. Il leur permettra de déterminer si une IP donnée appartient au même sous-réseau qu'eux ( et sera donc directement accessible ) ou pas.
Souvent, tous les bits d'un octet du masque sont à 1 ou à 0 : ces octets prennent donc les valeurs 0 ou 255 ( mais pas obligatoirement, voire exemples plus bas ).
172.174.96.2
avec un masque de sous-réseau 255.255.255.0
: en binaire, le masque s'écrit : 11111111.11111111.11111111.00000000
; les 3 x 8 = 24 bits de poids forts de l'adresse correspondent donc à la partie réseau ( soit 172.174.96.XX ), et les 8 bits de poids faible ( donc le dernier octet ) à la partie machine, ce qui fait donc 28 = 256 IP différentes qui peuvent exister sur ce sous-réseau : de 172.174.96.0
à 172.174.96.255
.92.16.96.2
avec un masque de sous-réseau 255.255.0.0
appartient à un réseau pour lequel les deux derniers octets correspondent à la partie machine de l'adresse, soit 256 x 256 = 65 536 IP différentes peuvent exister ( la dernière étant 92.16.255.255
).Une notation condensée du couple IP/masque existe, appelée notation CIDR ( = Classless Inter-Domain Routing ) : elle consiste à indiquer l'IP avec un "/" suivi du nombre décimal
de bits de poids fort identifiant le sous-réseau ( c'est à dire les bits des octets communs à toutes les adresses du sous-réseau ).
Pour les exemples précédents :
255.255.255.0
s'écrit en binaire : 11111111.11111111.11111111.00000000
soit 3 x 8 = 24 bits de poids fort; l'IP sera donc indiquée : 172.174.96.2/24
.
255.255.0.0
a 2 octets, soit 2 x 8 = 16 bits de poids fort; l'IP sera écrite : 92.16.96.2/16
( on remarque du coup qu'avec cette notation, il est très facile de connaître le nombre total d'IP que l'on peut avoir dans ce sous-réseau : chaque IPv4 faisant 32 bits, la différence permet de savoir le nombre de bits "libres", donc le nombre de valeurs différentes possibles. Pour le premier exemple ci-dessus, le nombre de bits "libres" est 32 - 24 = 8 → 28 = 256 IP différentes )
Parmi toutes les IP possibles dans un sous-réseau, deux ne peuvent être attribuées à des hôtes :
Le masque de sous-réseau est donc indissociable de l'adresse IP. Une adresse seule ne voudra rien dire puisqu’on ne saura pas quelle est la partie réseau et quelle est la partie machine. De la même façon, un masque seul n’aura pas de valeur puisqu’on n’aura pas d’adresse sur laquelle l’appliquer. L’adresse IP et le masque sont donc liés l’un a l’autre.
Il va falloir refaire un peu de binaire...ça n'est jamais mauvais !...
200.67.80.45
, avec le masque de sous réseau 255.0.0.0
.
192.168.16.5/21
( attention, moins facile ! ).
192.168.16.125
appartient-elle au même sous-réseau ? ( à vous de traduire "appartient au même sous-réseau"... )192.168.22.5
?0.0.0.0
?Certains réseaux ne sont pas directement reliés à internet, comme par exemple les machines composant l'intranet d'une société, ou celles d'un réseau domestique. Ces machines ne sont pas "visibles" depuis l'extérieur; comment font-elles alors pour y accèder ?
Il faut pour cela qu'une machine du réseau appelée serveur NAT ( c'est chez soi la "box" qui généralement fait ce travail ), qui dispose de deux cartes réseau, fasse "le lien" vers ou depuis l'extérieur du réseau.
Chacune des cartes réseau de cette machine dispose de sa propre IP :
Le rôle du serveur NAT est alors de "traduire" l'IP privée de l'hôte en l'IP publique lorsqu'une machine du réseau local cherche à accèder à internet.
Ce mécanisme permet d'utiliser des adresses IP identiques à différents "endroits" du réseau Internet sans risquer que deux machines aient la même IP puisque les IP privées sont "invisibles" depuis l'extérieur et donc des autres réseaux locaux...C'est aussi une façon, avant l'adoption généralisée des adresses IPv6, "d'économiser" les adresses IPv4 !
Des plages d'adresse IP sont réservées aux IP privées, ces plages d'adresse sont "interdites" sur internet, et les équipements qui en gèrent le trafic les ignorent :
10.0.0.0/8
pour les très grands réseaux172.16.0.0/12
pour les réseaux moyens, comme ceux des établissement scolaires par exemple192.168.0.0/16
pour les réseaux domestiques, comme chez vous sans doùtePour chacune des plages d'adresse précédentes :
Avec la généralisation des adresses IPv6, le besoin de mécanismes comme le NAT devrait disparaître.
L'administrateur d'un réseau peut attribuer à une machine une IP fixe lorsque cette machine est destinée à être connectée en permanence et redémarrée très rarement, comme un serveur par exemple.
A l'inverse, pour la majorité des machines, une IP "temporaire" suffit puisque l'on n'a pas besoin en général d'être connecté en permanence; cela permet de gérer au mieux les adresses IP et d'éviter les connexions consommant inutilement des ressources réseau. Dans ce cas, l'adresse IP de la machine changera d'une session à l'autre, elle sera dynamique.
Le mécanisme qui permet d'allouer une IP dynamique à la machine d'un réseau s'appelle le protocole DHCP ( = Dynamic Host Configuration Protocol ) : il nécessite qu'une machine sur le réseau dispose d'un logiciel appelé serveur DHCP permettant d'attribuer une IP dynamique aux autres machines du réseau. Chez vous, c'est votre box internet qui joue ce rôle.
Voila un exemple très simple d'un réseau de 6 machines divisé en 2 sous-réseaux; chaque sous-réseau correspond à une adresse différente, les deux sous-réseau sont donc indépendants.
Effectivement, retenir 217.70.184.5
plutot que "www.qwant.fr", ce n'est pas très pratique...
Aux débuts d'internet, pour accéder à un site, il fallait entrer l'IP du serveur sur lequel ce site était hébergé ( c'est toujours valable : vous pouvez entrer une IP dans la barre d'adresse d'un navigateur, vous verrez, ça marche ! )
Mais avec la multiplication très rapide des sites en ligne, cela est vite devenu très compliqué, au même titre qu'il nous serait impossible de retenir les numéros de téléphone de tous nos contacts; on a donc mis en place un protocole qui permet d'associer un nom à l'IP du serveur qui héberge un site : le protocole DNS ( = Domain Name Service ). C'est en gros un "annuaire" d'internet.
Ce nom, plus simple à retenir, est appelé nom de domaine. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.
Ce service nécessite là aussi qu'une machine sur le réseau joue le rôle de résolveur DNS : lorsque vous entrez une adresse dans la barre d'adresse d'un navigateur, c'est en fait ce serveur que vous interrogez, charge à lui de vous fournir ensuite l'IP associée au nom de domaine au bout d'un processus plus ou moins complexe..
C'est généralement votre fournisseur d'accès qui héberge ce service, mais il est aussi possible de choisir le serveur DNS que l'on préfère utiliser, ou en cas de "panne" du serveur habituel ( c'est rare, mais ça arrive... ).
Au niveau mondial, un ensemble de machines hébergent les 13 serveurs racines d'internet qui constituent la "clef de voûte" du système DNS.
Sous Linux, ouvrir un terminal et entrer les commandes suivantes : ( voir cette page pour l'équivalent de ces commandes sous Windows )
user@host:~$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever
inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:4f:41:81 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.100/28 brd 192.168.56.255 scope global eth0
inet6 fe80::a00:27ff:fe4f:4181/64 scope link valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc noqueue state UP group default
link/ether 08:00:27:5b:b3:66 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/30 brd 192.168.56.255 scope global wlan0
inet6 fe80::a00:27ff:fe5b:b366/64 scope link valid_lft forever preferred_lft forever
La liste de toutes les interfaces réseau s'affiche, avec de nombreuses informations.
127.0.0.1/8
, ce qui signifie que toute la plage de 127.0.0.0
à 127.255.255.255
est assignée à cette interface.Pour chaque interface :
link/ether
donne l'adresse MAC de l'interfaceinet
donne son IPv4brd
est l'adresse de diffusion ( = broadcast ) ( ici 192.168.56.255
) : elle sert à envoyer un message à toutes les machines en même temps, de façon par exemple à savoir si elles sont toujours en ligne ou alors leur demander leur adresse MAC.inet6
donne l' IPv6 de la machine.
user@host:~$ curl ifconfig.me
77.178.49.156
user@host:~$ ping www.qwant.fr
PING webredir.gandi.net (217.70.184.56) 56(84) bytes of data.
64 bytes from webredir.gandi.net (217.70.184.56): icmp_seq=1 ttl=52 time=66.5 ms
64 bytes from webredir.gandi.net (217.70.184.56): icmp_seq=2 ttl=52 time=46.2 ms
64 bytes from webredir.gandi.net (217.70.184.56): icmp_seq=3 ttl=52 time=45.6 ms
....
La commande ping
permet d'envoyer des requètes vers un nom de domaine ou une IP ( selon le protocole ICMP ) afin d'en tester l'accessibilité; la commande permet en retour de connaître l'IP associée
au nom de domaine, mais également de connaître le temps de réponse du serveur qui l'héberge. Faire CTRL-C pour arrêter l'éxécution.
La commande arp
permet de visualiser la table de correspondance IP/MAC de toutes les machines actuellement connectées au réseau local.
user@host:~$ arp -a
Server.local (192.168.1.254) at 00:24:d4:78:74:23 [ether] on eth0
PC1 (192.168.1.2) at 0b:02:b5:f8:35:7a [ether] on eth0
PC2 (192.168.1.25) at 00:24:d4:57:3a:8e [ether] on eth0
....
La commande traceroute
permet de connaître les "sauts" de machine en machine que doit faire un message pour atteindre sa destination sur un réseau; pour chaque routeur traversé, la commande affiche l'IP et le nom
de l'hôte correspondant ainsi que la durée de chaque "saut".
On peut l'éxécuter sur une IP du réseau local :
user@host:~$ traceroute 192.168.1.28
traceroute to 192.168.1.28 (192.168.1.28), 30 hops max, 60 byte packets
1 192.168.1.28 (192.168.1.28) 268.088 ms 268.027 ms 269.261 ms
Dans ce cas, il n'y a qu'un seul saut puisqu'aucun routeur ne se situe entre les machines d'un même réseau local.
Mais on peut aussi l'éxécuter sur un nom de domaine ou une IP distante, et on voit à quel point le chemin suivi peut être compliqué...
user@host:~$ traceroute www.qwant.fr
traceroute to www.qwant.fr (217.70.184.56), 30 hops max, 60 byte packets
1 Freebox-Server.local (192.168.1.254) 4.130 ms 4.071 ms 4.095 ms
2 ita73-5-97.205.44.244.fbx.proxad.net (97.205.44.244) 59.065 ms 67.350 ms 71.688 ms
3 * * *
4 194.149.170.78 (194.149.170.78) 93.657 ms 96.216 ms 101.899 ms
5 lyon-crs16-1-be1004.intf.routers.proxad.net (212.27.50.209) 115.368 ms 115.341 ms 124.029 ms
6 th2-crs16-1-be2001.intf.routers.proxad.net (212.27.59.29) 128.239 ms 47.300 ms 53.372 ms
7 194.149.166.54 (194.149.166.54) 56.978 ms 44.779 ms 49.365 ms
8 free-bzn.th2-1.rt.hopus.net (37.77.34.60) 54.284 ms 58.978 ms 64.154 ms
9 lag-th2-1.pa3-1.rt.hopus.net (37.77.32.11) 69.143 ms 73.729 ms 107.034 ms
10 gandi.pa3.hopus.net (37.77.38.5) 81.138 ms 85.110 ms 90.730 ms
11 * * *
12 vlan548-br0.lf-3-b.sd4.ip4.gandi.net (217.70.176.123) 67.710 ms 67.556 ms 67.822 ms
13 webredir.gandi.net (217.70.184.56) 66.694 ms 66.469 ms 66.661 ms