2. Réseau de plusieurs machines

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 :

  • un réseau local ( LAN = Local Area Network ) comporte un nombre restreint de machines, quelques dizaines tout au plus; c'est par exemple le cas d'un réseau au sein d'une entreprise ou d'un établissement scolaire
  • des réseaux locaux peuvent être eux-mêmes interconnectés au sein de MAN ( Metropolitan Area Network ) ou de WAN ( Wide Area Network )
  • enfin, internet représente le "WAN ultime", le "réseau des réseaux" qui interconnecte tous les réseaux au niveau mondial.
Lan Man Wan

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.)

Il va falloir savoir à qui s'adresser...

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 :

Une adresse "matérielle", l'adresse MAC ( = Media Access Control ) :

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".

Une adresse "réseau", l'adresse IP ( = Internet Protocol )

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.

IP ARP MAC

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 :

  1. adresses IPv4 : elles sont constituées de 4 octets ( soit 32 bits ), exprimés généralement en base 10. Exemple : 172.174.96.2.
    Elles sont au nombre de 256 x 256 x 256 x 256 = 2564 = un peu plus de 4 milliards. Cela paraissait énorme et bien suffisant à l'époque de leur introduction, mais les adresses IPv4 disponibles deviennent actuellement de moins en moins nombreuses à cause de la croissance vertigineuse du nombre de machines connectées.
  2. on est donc en train de passer progressivement à un autre type d'adresses, les adresses IPv6 : elles sont codées sur 16 octets ( soit 128 bits ), ce qui donne : 25616 = 3.4 x 1038 possibilités, ce qui donne le temps de voir venir...Du fait de leur longueur, on préfère les exprimer sous forme hexadécimale. Exemple : fe80::7961:9173:9e5f:1d8c

Masque de sous-réseau

Attention, notion pas évidente mais fondamentale !

Le problème

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.

Définition

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 ).

Exemples

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 :

( 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 :

  • l'adresse du sous-réseau lui-même qui est la première de la plage des IP possibles ( bits de la partie "machine" de l'adresse tous à 0 )
  • l'adresse de diffusion qui est la dernière de cette plage ( bits de la partie "machine" de l'adresse tous à 1 ), et qui sert, comme son nom l'indique aux messages de diffusion

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.

Applications

Il va falloir refaire un peu de binaire...ça n'est jamais mauvais !...

  1. On considère l'adresse IP 200.67.80.45, avec le masque de sous réseau 255.0.0.0.
    • écrire l'adresse du sous-réseau et l'adresse de diffusion
    • écrire cette adresse avec la notation CIDR
    • combien d'hôtes différents peut-il y avoir sur ce sous-réseau ?
  2. On considère maintenant l'IP 192.168.16.5/21 ( attention, moins facile ! ).
    • déterminer le masque du sous-réseau ( bien travailler en binaire ! )
    • combien d'adresses IP différentes permet ce masque ? ( voir remarque ci-dessus )
    • quelle est l'adresse du sous-réseau ? ( à quels bits du masque correspond-elle ? )
    • la machine d'IP 192.168.16.125 appartient-elle au même sous-réseau ? ( à vous de traduire "appartient au même sous-réseau"... )
    • et la machine d'IP 192.168.22.5 ?
  3. A quel réseau correspond le masque 0.0.0.0 ?

Lien vers les REPONSES

IP publique, IP privée

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 :

NAT

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 :

Pour chacune des plages d'adresse précédentes :

  1. déterminer le masque de sous-réseau
  2. déterminer l'adresse du sous-réseau
  3. déterminer le nombre d'IP différentes possibles
  4. déterminer la dernière IP dans la plage

Lien vers les REPONSES

Avec la généralisation des adresses IPv6, le besoin de mécanismes comme le NAT devrait disparaître.

IP fixe ou dynamique

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.

Et comment on connecte tout ça ??

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.

Sous-réseaux

Moi, quand j'vais sur internet, j'écris pas des chiffres...

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.

Exploration d'un environnement réseau local

Quelques commandes

Sous Linux, ouvrir un terminal et entrer les commandes suivantes : ( voir cette page pour l'équivalent de ces commandes sous Windows )

Connaître ses adresses MAC et IP privée


	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.

Pour chaque interface :

Connaître son IP publique :


	user@host:~$ curl ifconfig.me
	
	77.178.49.156
			

Tester la connexion vers une IP ou un nom de domaine


	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.

Connaître son environnement réseau

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
	....
			

Voir le "chemin" suivi pour atteindre un hôte

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
			

Travail à faire

  1. déterminez votre IPv4 privée et l'adresse MAC de votre machine
  2. déterminez l'IPv4 publique du lycée
  3. déterminez le masque de sous-réseau du réseau local du lycée; combien d'IP différentes peut-on utiliser sur ce réseau ? Vérifiez que la machine de votre voisin a bien le même masque.
  4. affichez l'environnement réseau de votre machine
  5. faites un ping vers une des machines de la salle, par exemple celle de votre voisin, et vérifiez que sa machine "répond" bien.
  6. déterminez l'IP du site www.qwant.fr; comparez avec ce que votre voisin a obtenu. Que peut-on en conclure ?