Les réseaux informatiques/Version imprimable

Un livre de Wikilivres.
Aller à : navigation, rechercher

Ceci est la version imprimable de Les réseaux informatiques.

  • Si vous imprimez cette page, choisissez « Aperçu avant impression » dans votre navigateur, ou cliquez sur le lien Version imprimable dans la boîte à outils, vous verrez cette page sans ce message, ni éléments de navigation sur la gauche ou en haut.
  • Cliquez sur Rafraîchir cette page pour obtenir la dernière version du wikilivre.
  • Pour plus d'informations sur les version imprimables, y compris la manière d'obtenir une version PDF, vous pouvez lire l'article Versions imprimables.


Les réseaux informatiques

Une version à jour et éditable de ce livre est disponible sur Wikilivres,
une bibliothèque de livres pédagogiques, à l'URL :
http://fr.wikibooks.org/wiki/Les_r%C3%A9seaux_informatiques

Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans Texte de dernière page de couverture. Une copie de cette licence est incluse dans l'annexe nommée « Licence de documentation libre GNU ».

Introduction aux réseaux

Outre ces différences de protocoles, les réseaux sont tous très différents les uns des autres. Pour simplifier le propos, on peut quand même classer les réseaux suivant plusieurs critères. Dans ce qui va suivre, nous allons voir comment on classe les réseaux suivant leur taille et leur étendue géographique, mais aussi suivant ce à quoi servent les ordinateurs du réseau.

Classification : LAN, WAN, PAN, et Internet[modifier | modifier le wikicode]

Certains réseaux sont limités à une salle, voire un bâtiment. D'autres sont tellement grands qu'il font la taille d'une ville ou d'un quartier, quand d'autres ont une étendue nationale. Internet est un réseau d'étendue mondiale : grâce au net, vous pouvez parfaitement communiquer avec quelqu'un qui est situé aux états-unis, en Russie, au Japon, etc. Et évidemment, tout ces réseaux portent des noms différents : on n'appelle pas de la même manière un réseau qui ne contient qu'une centaine d'ordinateurs et un réseau de taille planétaire.

Réseaux locaux[modifier | modifier le wikicode]

Les réseaux les plus petits contiennent entre 2 et 100 ordinateurs, qui sont reliés avec des câbles ou une connexion sans fil. C'est le cas pour les réseaux internes aux entreprises ou aux écoles : par exemple, les ordinateurs d'une salle informatique peuvent généralement communiquer entre eux. Ces réseaux sont appelés des réseaux locaux ou encore des réseaux LAN (Local Area Network).

Chez vous, vous avez un réseau local qui comprend votre box internet et tout ce qui est connecté dessus. Un tel réseau local, qui tient dans une simple chambre, est appelé un PAN : Personnal Area Network. Un PAN comprend généralement des équipements qui appartiennent à une même personne ou famille, qui sont regroupés dans la même maison, sur une étendue d'une dizaine de mètres.

A coté de ces réseaux, on trouve les réseaux de taille moyenne, qui permettent d'interconnecter des réseaux locaux proches :

  • les MAN, pour Metropolitan Area Network ont généralement la taille d'une ville
  • les WAN, pour Wide Area Network, permettent de relier entre eux des réseaux locaux dans des villes différentes.

Il existe deux grandes solutions pour créer un WAN : les lignes louées et les lignes RNIS. Les lignes louées permettent de créer un lien entre les deux réseaux locaux distants : ce lien est une ligne téléphonique, qui est louée par l'opérateur de télécommunication. Le prix d'une ligne louée est indépendant de l'utilisation qui en est faite : peu importe que l'on échange beaucoup d'informations ou très peu sur cette ligne, le prix reste le même. Les lignes RNIS fonctionnent sur un principe similaire, si ce n'est que que la liaison n'est pas disponible 24 heures sur 24. La liaison s'ouvre à la demande, quand deux ordinateurs veulent l'utiliser pour échanger des informations. Quand les deux ordinateurs ont cessé d'échanger des données, la ligne se ferme après un certain délai d'inactivité.

Réseaux mondiaux[modifier | modifier le wikicode]

Internet est une interconnexion de réseaux à l'échelle mondiale. C'est d'ailleurs ce qui lui a valu son nom : internet est l'abréviation de interconnection of networks. Environ 47000 réseaux de grande envergure, des réseaux autonomes, sont interconnectés pour former internet. Ces 47000 réseaux sont souvent des réseaux appartenant à des fournisseurs d'accès. Les informations qui transitent sur internet passent par des câbles en fibre optique. Les câbles qui relient ces 47000 réseaux parcourent le monde entier : pour donner un exemple, il y a environ 6 à 7 câbles qui traversent l’Atlantique qui permettent aux réseaux américains de communiquer avec les réseaux européens. Au début, il n'était pas disponible pour le grand public, mais servait essentiellement aux grandes organisations. L'internet de l'époque était vraiment différent de l'internet actuel : non seulement les technologies utilisées n'étaient pas les mêmes, mais il n'y avait pas de sites web. En ce temps, internet servait surtout à échanger des données, télécharger de grands volumes de données. C'est dans les années 1990 que sont apparues les technologies qui ont permis la conception des sites web, à savoir l'HTML, les adresses URL et le protocole HTTP. De nos jours, internet est surtout utilisé par les particuliers pour consulter des sites web. L'ensemble des sites web accessibles sur internet est ce qu'on appelle le web : il faut ainsi faire la différence entre le web et internet, internet étant un réseau et le web un ensemble de sites web.

Client-serveur et pair à pair[modifier | modifier le wikicode]

Les réseaux informatiques peuvent aussi être catégorisés selon la manière dont les ordinateurs échangent des données. On peut ainsi classer les réseaux en trois grands types :

  • les architectures un tiers ;
  • les architectures client-serveur ;
  • les architectures pair à pair.

Un même réseau physique peut servir pour les trois. Si on prend internet, celui-ci permet à des ordinateurs de communiquer en client-serveur : c'est ce qui est fait lors de la consultation de sites web. Il permet aussi les échanges en pair à pair : les applications de téléchargement basées sur le protocole Bitorrent utilisent des échanges en pair à pair.

Terminaux[modifier | modifier le wikicode]

Les premiers réseaux locaux datent des années 1960. A cette époque, les ordinateurs étaient très cher et prenaient énormément de place : un ordinateur pouvait facilement remplir une pièce complète. Seules les grandes entreprises et services publics d'état pouvaient se payer ces ordinateurs. Il n'y avait donc pas un poste par personne : les organisations n'avaient qu'un seul ordinateur qu'il fallait se partager. Les utilisateurs n'avaient pas à l'ordinateur directement. Ils devaient passer par des terminaux, des systèmes qui permettaient d'afficher des informations et de saisir des commandes et du texte : ils se contenaient d'un clavier, d'un écran, et de quelques circuits très simples et rudimentaires. Ces terminaux se contentaient d'envoyer ou de recevoir des informations au gros ordinateurs central, qui traitait les demandes des terminaux une par une. Cette organisation avec un seul ordinateur relié à des terminaux a survécu, et s'est même adaptée à l'ère internet. En effet, de nombreuses organisations utilisent encore des terminaux qui communiquent avec des serveurs via internet. Pensez à un distributeur automatique de billets : celui-ci n'est ni plus ni moins qu'un terminal assez évolué qui communique avec un serveur de la banque, via des connections internet. L'architecture un tiers correspond au cas où plusieurs terminaux sont reliés à un ordinateur central, peut importe que cette connexion se fasse via internet ou via un réseau local.

Clients et serveurs[modifier | modifier le wikicode]

L'architecture client-serveur est un peu plus compliquée. Elle fait intervenir au minimum deux ordinateurs : un serveur et un ou plusieurs clients. Le serveur est un ordinateur qui contient des données utiles, comme un site web, des données partagées sur internet, les documents d'une entreprise, etc. Les clients veulent avoir accès aux données présentes sur le serveur, ou demander au serveur qu'il fasse des calculs assez lourds : pour cela, ils doivent envoyer une demande au serveur, qui peut être une demande d’accès ou un calcul à faire. Le serveur traitera cette demande après réception, et renvoie le résultat de la demande. La grosse différence entre un terminal est un client est que le terminal n'est pas un ordinateur, mais un matériel sans intelligence et qui n'a aucune capacité de calcul. Le serveur n'a pas à tout faire pour que le terminal puisse afficher un résultat : il peut déléguer des calculs et des traitements au client.

Pair à pair[modifier | modifier le wikicode]

L'architecture pair à pair peut être vu comme une sorte d'amélioration du client-serveur. Dans le client serveur, les rôles de serveur et de client sont attribués définitivement. Mais avec le pair à pair, tout ordinateur peut alternativement être serveur et client. Les transferts de données se font de poste à poste, sans qu'il n'y aie de serveur bien précis.


Les réseaux locaux

Comme dit dans le chapitre précédent, un réseau local est un réseau contenant peu d'ordinateurs, qui sont reliés entre eux par des câbles réseaux, des routeurs ou des switchs. Sur un réseau local, les données sont échangées sous la forme de paquets de données de taille fixe. Ces paquets sont émis par un ordinateur, et se propagent dans le réseau local jusqu’à l'ordinateur de destination.

Adresses de réseaux locaux[modifier | modifier le wikicode]

Pour que cela soit possible, il faut pouvoir identifier la machine de destination (celle qui doit recevoir la donnée) sur le réseau local. Pour cela, chaque machine reçoit une adresse physique, un numéro qui lui est attribué à elle seule. De nos jours, les adresses physiques sont définies par le standard MAC. Avec ce standard, chaque adresse physique fait 6 octets (48 bits), et est appelée une adresse MAC. Chaque équipement réseau dispose d'une adresse MAC unique au monde, attribuée par son fabricant. Mais l'utilisateur peut changer l'adresse MAC d'un réseau ou d'un ordinateur. Les réseaux locaux eux-même ont une adresse MAC : cela sert pour connecter des réseaux locaux entre eux, par exemple. Si on envoie un paquet sur l'adresse d'un réseau, celle-ci sera envoyée à tous les ordinateurs du réseau : on parle alors de broadcast. Pour savoir si l'adresse MAC est celle d'un réseau ou d'un équipement réseau, chaque adresse MAC contient un bit I/G, qui vaut 1 si l'adresse est celle d'un réseau et 0 sinon. Pour indiquer si l'adresse a été changée par l'utilisateur, l'adresse MAC contient un bit U/L.

Bit I/G Bit U/L Reste de l'adresse MAC
0 0 L'adresse MAC n'a pas été modifiée par l'utilisateur. L'adresse MAC se décompose en une adresse de 24 bits qui identifie un ordinateur dans le réseau, et un Organizationally Unique Identifier (OUI) de 22 bits qui identifie le constructeur du matériel.
0 1 L'adresse MAC a été modifiée par l'utilisateur.
1 0 Le reste de l'adresse pointe vers un réseau local.
1 1 Le reste de l'adresse est intégralement remplie avec des bits à 1. Elle est interprétée comme étant une adresse de broadcast pour le réseau local.
MAC-48 Address

Transmission des données[modifier | modifier le wikicode]

Le standard courant de transmission des données sur un réseau local est l'Ethernet. Celui-ci permet d'envoyer des données de taille fixe sur le réseau local, auquel Ethernet ajoute quelques données (des adresses MAC, notamment). L'ensemble est appelé une trame. Lchaque trame contient diverses informations, dont :

  • l'adresse MAC du destinataire : sans cela, on ne sait pas à qui la donnée est destinée ;
  • l'adresse de l'émetteur, qui peut se révéler utile ;
  • la donnée envoyée : un simple bloc de données de taille fixe, le plus souvent ;
  • éventuellement des octets de synchronisation ou de contrôle d'erreur.

Dans la première version d'Ethernet, la trame indique elle-mêmeson nombre d'octets, sa longueur. Celle-ci est comprise entre 46 et 1500 octets. Si le nombre total d'octets est inférieur à 42, l'équipement réseau ajoute des octets inutiles dans la trame, histoire d'avoir au moins 46 octets. Dans les versions suivantes d'Ethernet, la longueur est remplacé par un numéro qui indique quels sont les protocoles utilisés pour la transmission des données sur le net : l'Ethertype. Pour garantir la compatibilité, il a été convenu que les trames Ethernet version 2 ont un champ dont la valeur est supérieure à la longueur de la trame, à savoir 1500.

Ethernet frame

Topologie du réseau[modifier | modifier le wikicode]

Les réseaux locaux peuvent également être catégorisés par la manière dont les ordinateurs sont reliés dans un réseau, la topologie du réseau. L'image suivante présente les différentes topologies possibles. Ces différentes topologies ont chacune des avantages et inconvénients. Certaines utiliseront beaucoup de liens entre ordinateurs, alors que d'autres seront relativement économes : il faudra prévoir plus ou moins de câbles, de fils, et d'équipement réseau suivant la topologie. Suivant la topologie, les performances du réseau peuvent varier. En effet, certaines topologies ne permettent pas à deux ordinateurs de communiquer directement : les données doivent alors passer par des équipements réseau intermédiaire et se propager dans le réseau de proche en proche. Plus le nombre d'intermédiaires entre deux ordinateurs est grand, plus les performances seront mauvaises : le temps de transmission augmente avec le nombre d'intermédiaires.

Maillée[modifier | modifier le wikicode]

Avec la topologie totalement maillée, tous les ordinateurs sont reliés à tous les autres. Le nombre de liens est alors important. Plus précisémment, il est proportionnel au carré du nombre d’ordinateurs à relier, ce qui est énorme. Mais cette topologie est la plus rapide : deux PC peuvent communiquer directement, sans passer par des intermédiaires. Pour économiser des liaisons point à point, il est possible de ne pas relier certains ordinateurs du réseau : on obtient un réseau partiellement maillé. Cela permet d'économiser des liens sans trop diminuer la performance du réseau.

En bus[modifier | modifier le wikicode]

Un bus est un ensemble de fils qui permet de relier plusieurs ordinateurs ou composants électroniques ensemble. Avec un réseau en bus, les ordinateurs sont tous reliés à un même fil. Ils peuvent lire la donnée transmise sur le fil, ou envoyer des données dessus. Ces réseaux utilisent peu de liens et connectent directement tous les ordinateurs entre eux. Sur un bus, les données émises sont envoyées à tous les autres ordinateurs. La donnée est envoyée avec l'adresse de destination, afin que les ordinateurs sachent si la donnée leur est destinée : si ce n'est pas le cas, ils l'ignorent. Mais cela signifie que seul un ordinateur peut émettre à un instant donné : les émissions ont lieu un ordinateur à la fois. Cependant, il se peut que plusieurs ordinateurs tentent d'émettre une donnée en même temps sur le bus, ce qui n'est pas possible : on dit qu'une collision a lieu. Dans ce cas, le bus doit contenir des mécanismes pour résoudre la situation.

Réseaux en étoile[modifier | modifier le wikicode]

Dans un réseau en étoile, les ordinateurs sont reliés à un équipement réseau central. Le nombre de liens est proportionnel au nombre d'ordinateurs du réseau, ce qui est peu. Le nombre d'intermédiaire est faible (seulement un), ce qui fait que le matériel réseau nécessaire pour créer un réseau en étoile est particulièrement simple et peu cher. La moindre panne de l'équipement central fait tomber tout le réseau : les ordinateurs ne peuvent plus communiquer entre eux.

L'équipement réseau central contient divers ports, des connecteurs sur lesquels on vient brancher un ordinateur, une imprimante, etc. On place rarement un ordinateur au centre d'un réseau : à la place, on utilise soit un concentrateur, soit un commutateur. Avec un concentrateur, les données réceptionnées sur un port sont envoyés sur tous les autres : cela permet de simuler un bus avec une organisation en étoile. Le commutateur, de son côté, se charge d'envoyer la donnée vers le bon ordinateur. Pour rediriger la donnée vers le bon ordinateur, le bon port, le commutateur doit mémoriser chaque correspondance entre un port et une adresse MAC dans une petite mémoire : la table CAM.

Un commutateur doit découvrir par lui-même les adresses MAC des composants qu'on branche sur ses ports : il ne peut pas les connaitre à l'avance. Pour cela, le commutateur utilise une méthode assez simple. Imaginons que la table CAM soit vide : le commutateur ne sait pas qui est qui sur ses sports. Si un ordinateur lui envoie une trame sur un port, il met à jour la table CAM avec l'adresse de l'émetteur de la trame : cela fait un port de connu. Une fois que tous les ordinateurs ont envoyé quelque chose sur le réseau, il connait tous les ports. Si aucun port n'est associé à une adresse de destination, le commutateur envoie le paquet à tous les autres ports.

Il faut noter que le contenu de la table CAM a une durée de péremption. Cela permet de mettre à jour un réseau local sans avoir à redémarrer le commutateur : on peut changer le composant branché sur un commutateur, celui-ci ne restera pas bloqué sur l'ancien composant et finira par repérer le nouveau au bout d'un certain temps. Cette durée de péremption est appelée le Time To Live, ou TTL, et vaut entre 0 et 255 secondes.

Réseaux en anneaux[modifier | modifier le wikicode]

Avec la topologie linéaire, les ordinateurs sont reliés les uns à la suite des autres, en formant une chaine. Avec la topologie en anneaux, les ordinateurs forment un anneau : on peut dire que c'est une variation de la topologie linéaire, où on ferait boucler la chaine sur son début. Dans de tels réseaux, les données transmises font le tour de l'anneau avant d'être détruites : elles se propagent d'un ordinateur au suivant, jusqu’à arriver sur l'ordinateur de destination. Une fois arrivé, l'ordinateur de destination envoie un accusé de réception à l'émetteur. Une nouvelle émission est possible une fois l'accusé de réception reçu. La moindre panne d'un ordinateur peut mettre tout le réseau en panne., vu que l'ordinateur fautif ne peut plus propager les jetons. Chaque ordinateur a accès à l'anneau a tour de rôle, un seul ordinateur ayant le droit d'envoyer des données sur l'anneau à la fois. Ce droit est modélisé par un jeton, qui passe d'un ordinateur au suivant à chaque émission. Ce jeton est juste une trame spéciale : toutes les trames envoyées sur le réseau ont un bit qui indique si cette trame est le jeton ou pas. Ce jeton est conservé dans un temps déterminé et fixe, le même pour tous les ordinateurs.

L'utilisation d'un jeton permet à tous les ordinateurs d'avoir un accès équitable au réseau. On sait que tous les ordinateurs auront accès au réseau à un moment ou un autre. Évidemment, ils peuvent ne pas utiliser leur jeton s'ils n’ont rien à envoyer, et transmettent alors le jeton à l'ordinateur suivant. De plus, le temps avant de récupérer le jeton est obligatoirement fini et on peut lui attribuer une limite maximale : le temps que le jeton fasse le tour de l'anneau. C'est un avantage que les bus n'ont pas : un ordinateur peut, en théorie, monopoliser le bus durant un temps indéterminé si rien n'est prévu dans la conception du bus. Si peu d'ordinateurs accèdent au réseau, les réseaux en bus ou étoile ont une meilleure efficacité. Mais à forte charge, les réseaux en anneau ont clairement une efficacité nettement plus importante. En effet, le nombre de collisions augmente sur un réseau en bus, ce qui réduit le débit utilisé pour transmettre des données : le débit utilisé est plus important sur un réseau en anneau, vu qu'il n'y a pas de collisions.

Niveau matériel, ces réseaux relient les ordinateurs non en tirant des câbles entre chaque ordinateur, mais avec l'aide d'un boitier : la Multistation Access Unit. On connecte plusieurs ordinateurs sur ce boitier, et ceux-ci seront alors reliés en anneau. On peut considérer que ce boitier est un équivalent des concentrateurs et commutateurs, mais pour les réseaux en anneau.



Le réseau Internet

Il est maintenant temps de laisser les réseaux locaux derrière nous, et de voir plus grand. Par plus grand, je veux dire que nous allons aborder les réseaux composés d'une interconnexion de réseaux locaux plus simples. Internet est l'un d'entre eux, même si ce n'est pas le seul. Quoiqu'il en soit, ces interconnexions de réseaux ne fonctionnent que si divers mécanismes permettent à ces réseaux de communiquer.

Les adresses IP[modifier | modifier le wikicode]

On a vu que les machines d'un réseau local ont une adresse MAC, pour que l'on sache qui est qui sur le réseau. Le même problème se pose sur internet : comment identifier un PC bien précis sur un réseau global ? Par exemple, si vous voulez accéder à un site web sur un serveur, comment votre ordinateur fait-il pour dire : je veux communiquer avec ce serveur bien précis, et pas un autre ? Pour cela, chaque ordinateur possède un numéro qui permet de l'identifier sur le net, chaque numéro étant appelé une adresse logique, aussi appelée adresse IP. L'adresse logique doit non seulement indiquer l'ordinateur dans le réseau local, mais aussi quel est le réseau voulu : cela fait une information en plus comparé à l'adresse physique. Les adresses IP sont donc décomposées en deux portions : un préfixe réseau qui indique le réseau local adressé et un suffixe hôte qui adresse l’ordinateur dans ce réseau. Il est évident que toutes les machines d'un réseau ont des adresses avec le même préfixe réseau : la seule différence entre ces adresses sera le suffixe hôte. Par convention, les bits de poids forts forment le préfixe réseau, alors que les bits de poids faible forment le suffixe réseau.

Ce que je viens de dire pourrait faire croire qu'on obtient l'adresse logique en concaténant l'adresse physique à un identifiant de réseau. Ce n'est pas du tout ce qui est fait avec les adresses IP : l'adresse logique n'a aucun lien avec l'adresse physique. Il faut donc garder une table de correspondance entre IP et adresse MAC pour chaque réseau local (la table en question est la table ARP).

Parmi les adresses d'un réseau, deux sont spéciales :

  • l'adresse de broadcast est la plus grande adresse possible qui appartient au réseau : quand on envoie une donnée à cette adresse, elle est envoyée à tous les ordinateurs du réseau ;
  • l'adresse de réseau est l'adresse qui sert à identifier le réseau : c'est la plus petite adresse du réseau (le suffixe hôte est à 0) ;

les autres adresses servent à identifier des machines connectées au réseau.

Les adresses IPv4[modifier | modifier le wikicode]

Actuellement, deux versions d'IP sont en circulation IPv4 et IPv6. En IPv4, les adresses font exactement 32 bits (4 octets) : de quoi coder 4 294 967 296 adresses IP différentes. La notation des adresses IP est normalisée : on doit noter chaque octet en décimal et les séparer par des points.

Addresse Ipv4

Adressage par classes[modifier | modifier le wikicode]

Autrefois, les concepteurs du protocole IP ont inventé un mécanisme pour décomposer une adresse en réseaux indépendants : les classes d'adresses IP.

Classe A 0.0.0.0 - 127.255.255.255
Classe B 128.0.0.0 - 191.255.255.255
Classe C 192.0.0.0 - 223.255.255.255
Classe D 224.0.0.0 - 239.255.255.255
Classe E 240.0.0.0 - 255.255.255.255

Mais cette organisation n'était pas très souple et gâchait pas mal d'adresses IPv4. Imaginez le cas d'une entreprise qui a besoin de 1024 adresses, pour 1024 machines : on lui donnait une adresse de classe B pour son réseau, à savoir 65536 adresses. Il est évident que la quasi-totalité des adresses de ce réseau sont alors inutilisées. Le problème est que la taille du réseau doit être choisie dans quelques classes de taille déterminée : on ne peut pas choisir un intervalle d'adresses le plus proche possible du nombre de machine utilisée. Ce problème ne posait pas de problèmes au début des réseaux IP, mais il a commencé à prendre de plus en plus d'ampleur avec le temps. En août 1990, le problème a été soulevé lors de la réunion de l'IETF, un organisme de normalisation qui gère notamment IP. Divers groupes de travail se sont rassemblés et ont commencé à réfléchir sur le sujet. La première solution technique est apparue en novembre 1992, dans une réunion de l'IESG, et l'une d'entre elle est encore en vigueur au moment où j'écris ces lignes (fin 2015).

Adressage par sous-réseaux[modifier | modifier le wikicode]

De nos jours, ces classes de réseaux ont laissé la place à un système plus souple d'adressage Classless Inter-Domain Routing (CIDR). Avec cette méthode, on peut découper une adresse en identifiant hôte et préfixe réseau où l'on veut dans l'adresse. Cela résout le problème de l'adressage par classe : on peut mettre juste ce qu'il faut d'adresses dans le réseau (à peu près, on va dire). La subdivision de l'adresse en préfixe réseau et suffixe hôte est indiquée par un masque de sous-réseau, un nombre entier de la même taille que l'IP. Si on superpose le masque et l'IP, on peut deviner le préfixe réseau et le suffixe hôte : les bits à 1 dans le masque indiquent les bits du préfixe réseau, alors que les bits à 0 indiquent le suffixe hôte.

Ce masque n'a pas besoin d'être envoyé dans les paquets de données, en même temps que l'IP. En effet, ce masque sert à savoir si une adresse IP appartient à un réseau local. Quand la donnée est transférer de proche en proche sur le net, chaque réseau local va tester si l'IP qu'il vient de recevoir correspond à une de ses machines. Pour cela, il a besoin du masque, pour vérifier si L'IP et celle du réseau local ont le même préfixe réseau : si ce n'est pas le cas, la machine n'appartient pas au réseau, et elle est routée ailleurs. Cependant, un masque valide doit respecter deux contraintes : les bits à 1 sont tous contiguës et regroupés dans les bits de gauche. Ainsi, les identifiants suivants sont invalides :

  • 00011111 11111111 11111111 00000000 ;
  • 00001111 11110000 00101001 00101010 ;
  • 01111111 11111111 11111111 11111111.
  • 10011111 11111111 11111111 00000000 ;
  • 11001111 11110000 00101001 00101010 ;
  • 11111111 11111111 11100011 11111111 ;
  • 10011111 11111111 11111111 11111111 ;
  • 11001111 11110000 00101001 00101010 ;
  • 11111111 11111111 11111111 11111101.

Par contre, les masques suivants sont valides :

  • 11111111 11111111 11111111 00000000 ;
  • 11111111 11111000 00000000 00000000 ;
  • 11111111 11111111 11111111 11110000.

On peut noter ces masques de plusieurs manières équivalentes :

  • soit on écrit le masque en binaire ;
  • soit on écrit chaque octet en décimal et on les sépare par des points (cela permet de gagner de la place) ;
  • soit on indique le nombre de bits à 1 dans le masque, précédé d'un "/" (les contraintes vues juste avant permettent alors de retrouver le masque facilement).

Par exemple, les notations suivantes sont équivalentes (c'est le même masque) :

  • 11111111 11111111 11111111 00000000 ;
  • 255 . 255 . 255 . 0 ;
  • /24.

De même pour :

  • 11111111 11111111 00000000 00000000 ;
  • 255 . 255 . 0 . 0 ;
  • /16.

De même pour :

  • 11111111 11100000 00000000 00000000 ;
  • 255 . 224. 0 . 0 ;
  • /11.

On peut facilement déduire des contraintes sur le masque la chose suivante :seuls les octets suivants sont valides pour un masque de sous-réseau :

  • 255 (1111 1111) ;
  • 254 (1111 1110) ;
  • 252 (1111 1100) ;
  • 248 (1111 1000) ;
  • 240 (1111 0000) ;
  • 224 (1110 0000) ;
  • 192 (1100 0000) ;
  • 128 (1000 0000) ;
  • et 0 (0000 0000).

Network Address Translation[modifier | modifier le wikicode]

Depuis les années 2000, on n'a plus assez d'adresses IPv4 pour combler les besoins du monde entier. Diverses mesures ont donc étés prises pour faire perdurer l'IPv4 durant quelques décennies. Le NAT (Network Address Translation) en est une. Celle-ci se base sur des adresses qui ne peuvent pas être attribuées à un équipement réseau sur internet et sont des adresses IP internes à un réseau local. Plusieurs équipements peuvent utiliser ces adresses, à condition qu'ils soient dans des réseaux locaux différents. Ces adresses sont appelées des adresses privées, les adresses IP normales étant appelées des adresses IP publiques. Voici les intervalles d'adresses privées :

  • 10.0.0.0/8 (10.0.0.0 – 10.255.255.255) ;
  • 172.16.0.0/12 (172.16.0.0 – 172.31.255.255) ;
  • 192.168.0.0/16 (192.168.0.0 – 192.168.255.255).

Le NAT permet d'attribuer des adresses privées à des équipements qui doivent communiquer sur internet. Le réseau local étant obligatoirement connecté sur internet via un routeur, celui-ci a une adresse IP publique. Le NAT permet de router des paquets émis par des ordinateurs d'un réseau local en se faisant passer pour le routeur : l'adresse privée de l’émetteur du paquet sera remplacée par l'adresse publique du routeur. Il permet aussi de rediriger les paquets entrants, qui sont routés vers l'adresse IP publique du routeur, vers l'ordinateur destinataire : l'adresse de destination est remplacée par l'adresse privée de destination par le routeur avant d'être routée sur le réseau local.

Les adresses IPv6[modifier | modifier le wikicode]

La nouvelle version du protocole IP, l'IPv6, résout pour un bon moment cette pénurie d'adresses IP. En IPv6, les adresses font quatre fois plus que les adresses IPv4 : exactement 128 bits, à savoir 16 octets. Plus de 256 milliards de milliards de milliards de milliards d'adresses IP différentes. Autant dire qu'on a le temps de voir venir la prochaine pénurie ! Pour noter une adresse IPv6, on n'utilise pas des nombres écrits en décimal : les octets sont notés en hexadécimal, pour économiser de la place. De plus, la séparation utilise des ::, qui séparent des groupes de deux octets. Il faut signaler que le suffixe hôte d'une adresse IPv6 prend au moins la moitié de l'adresse IP, à savoir 64 bits. Évidemment, le reste est utilisé pour le préfixe réseau. Elle peut faire plus dans quelques cas, mais la quasi-totalité des adresses de machines ont systématiquement des suffixes et préfixes de 64 bits.

Ipv6 address

Protocoles DHCP et ARP[modifier | modifier le wikicode]

Le protocole IP ne peut pas faire fonctionner internet sur ses seules épaules. Il est secondé par tout un ensemble de protocoles annexes, qui complètent IP. Ces protocoles sont les protocoles DHCP, ARP, ICMP, et quelques autres. Pour donner un exemple, ICMP permet de détecter les pannes ou configurer un réseau à distance. Nous avons choisis de vous présenter les protocoles DHCP et ARP, qui nous semblent de loin les plus importants.

Obtenir une adresse IP : le protocole DHCP[modifier | modifier le wikicode]

Mais qui attribue une IP aux réseaux locaux ?

Et bien il y a deux possibilités :

  • soit l'administrateur configure le réseau de manière à ce qu'il aie une IP bien précise, à sa charge de bien faire attention à ce qu'un autre réseau local n'aie pas la même IP ;
  • soit il doit obtenir une IP fournie par une source extérieure.

Cette dernière solution demande cependant qu'un protocole se charge de l'attribution des IP : c'est le protocole DHCP (Dynamic Host Configuration Protocol). Ce protocole permet à des ordinateurs qui veulent une IP d'acquérir celle-ci auprès de serveurs DHCP. Ces serveurs DHCP ont chacun une liste d'IP non-attribuées, qu'ils peuvent distribuer aux ordinateurs qui en font la demande. Les clients connaissent les IP des serveurs DHCP, dont l'IP est fixé par le protocole DHCP. Une IP est attribuée à un client/réseau durant un temps limité. Tout client qui veut une IP va envoyer une demande à plusieurs serveurs DHCP, en indiquant le temps durant lequel il veut réserver l'adresse IP. Les serveurs répondent envoyant au client une offre, une proposition d'IP que les clients peuvent refuser ou accepter. Le client choisit une offre et renvoie un accusé de réception au serveur émetteur de l'offre. Ce serveur renvoie alors lui aussi un accusé de réception.

Faire le lien entre IP et adresse MAC : le protocole ARP[modifier | modifier le wikicode]

Comment savoir à quelle adresse MAC correspond telle adresse IP ? La solution à ce problème est très simple : il suffit de mémoriser les correspondances entre une IP et une adresse MAC dans une mémoire intégrée au routeur ou au matériel réseau. Cette table de correspondance est appelée la table MAC ou la table ARP suivant le protocole utilisé. Mais comment le routeur fait pour remplir et mettre à jour cette table ? Pour cela, il doit utiliser deux protocoles relativement simples : le protocole ARP pour les adresses IPV4, ou le Neighbor Discovery Protocol pour les adresses IPV6.

Imaginons qu'un routeur reçoive un paquet vers une IP pour laquelle il ne connait pas l'adresse MAC (il n'a pas de correspondance IP-MAC dans sa table ARP). Dans ce cas, le routeur va envoyer un message aux ordinateurs du réseau local, sur l'adresse de broadcast. Ce message aura la signification suivante : quel est l'ordinateur qui a telle adresse IP ? Ce message contient évidemment l'adresse IP en question, l'adresse MAC de l'émetteur, et quelques autres informations. Une fois que le destinataire de l'IP a reçu le paquet, celui-ci répondra avec un message de réponse qui signifie : je suis l'ordinateur qui a cette adresse IP. Ce message contient évidemment, l'IP en question, l'adresse MAC du routeur, mais aussi et surtout l'adresse MAC de la machine émettrice. Cette adresse MAC n'est autre que l'adresse MAC qui correspond à l'IP : le routeur a juste à l'utiliser pour mettre à jour sa table ARP.

Cependant, ce protocole a une grosse faille : strictement rien n'est fait pour s'assurer de la validité des correspondances IP - adresse MAC. Ainsi, une machine peut se faire passer pour une autre : il lui suffit de modifier une correspondance dans la table ARP en envoyant un paquet ARP au bon moment. Prenons le cas où une IP x . x . x . x est attribuée à une machine d'un réseau local. Imaginons qu'une machine du réseau local envoie un paquet ARP de son cru, dans lequel elle prétend que l'IP x . x . x . x lui appartient. Vu qu'aucun mécanisme n'est prévu pour vérifier la validité de cette correspondance, ARP n'y verra que du feu. Ainsi, toute émission vers l'IP x . x . x . x sera redirigée vers la mauvaise adresse MAC, vers la machine qui se fait passer pour l'IP x . x . x . x.Cette machine aura accès à tout ce qui est envoyé vers l'IP x . x . x . x. Si la machine en question est configurée de manière à renvoyer les paquets vers son destinataire habituel, l'attaque peut passer inaperçu durant un moment.

Routage[modifier | modifier le wikicode]

Lorsqu'on connecte plusieurs réseaux ensemble, des ordinateurs d'un réseau (local) peuvent communiquer avec les ordinateurs d'un autre réseau (local). Pour cela, les données doivent généralement passer d'un réseau à l'autre pour atteindre leur destination, et cela se fait grâce à des intermédiaires. Sur internet, la donnée est propagée de proche en proche, d'intermédiaire en intermédiaire : on les appelle ces intermédiaires des routeurs. Cette propagation doit cependant être gérée, histoire que la donnée arrive bien à destination. Déterminer quel est le chemin que doit parcourir la donnée pour arriver la destination est ce qu'on appelle le routage. Divers protocoles s'occupent de faire fonctionner ce routage, et les plus connus sont clairement BGP et IGP. Avant de voir dans le détail ces protocoles IP et BGP, il est important de faire quelques remarques sur le fonctionnement du routage en général.

Les différents modes de routage[modifier | modifier le wikicode]

Le routage peut prendre différentes formes suivant le nombre de destinataires. Un ordinateur peut en effet vouloir communiquer avec un ordinateur bien précis, ou envoyer une donnée à plusieurs PC différents. Suivant le nombre de destinataire, on peut faire la différence entre Unicast, Anycast, Multicast et Broadcast.

Avec l'unicast, un ordinateur émet des données à destination d'un autre ordinateur bien identifié.

Avec l'anycast, un ordinateur émet des données vers un ordinateur qu'il ne connait pas : l'émetteur ne connait pas la destination de la donnée. L'ordinateur de destination n'est cependant pas choisit au hasard : c'est le protocole de routage qui choisit vers quel ordinateur émettre la donnée.

Avec le multicast, les données émises sont envoyées à un groupe d'ordinateur qui veulent recevoir cette donnée. Les ordinateurs qui veulent revoir la donnée se connectent à un serveur et s'inscrivent à un groupe de diffusion. Tous les ordinateur inscrits dans ce groupe recevront la donnée émise. C'est notamment utilisé lors du streaming d'évènements en live : on émet la donnée une fois, et celle-ci sera recopiée par les routeurs à toutes les personnes inscrites au groupe que le routeur connait.

Avec le broadcast, un ordinateur émet des données à destination de tous les ordinateurs d'un réseau ou sous-réseau (un réseau local le plus souvent).

Une opération distribuée[modifier | modifier le wikicode]

Le routage est pris en charge par les routeurs qui propagent la donnée : chaque routeur prend une décision, et décide vers quel routeur ou ordinateur il doit propager la donnée. Il n'y a pas de serveur central qui déciderait comment router la donnée. En conséquence, cette opération demande des ressources matérielles pour décider vers quel voisin il faut envoyer la donnée. Et cela demande du temps de calcul, de la mémoire, et potentiellement d'autres ressources.

Un routeur peut être vu comme l'équivalent d'un commutateur, mais pour une interconnexion de réseaux : là où le commutateur connecte des machines dans un même réseau local, le routeur connecte et sert d'interface à deux réseaux différents. Il reçoit des paquets sur certains ports, et les renvoie sur d'autres : il doit juste envoyer les paquets reçus vers le meilleur port de sortie, celui qui rapprochera le paquet de sa destination. Pour cela, le routeur doit savoir quelle est la meilleure sortie pour chaque adresse IP de destination possible. Du moins, c'est la théorie, vu que le routeur peut compresser ces informations de différentes manières. Quoiqu’il en soit, le routeur doit bel et bien garder des correspondance entre une adresse IP de destination et le numéro du port sur lequel il doit envoyer le paquet. Tout cela est mémorisé dans une sorte de mémoire RAM : la table de routage. Cependant, ces tables de routage sont rarement complètes : elles ont une taille limitée, et elles ne peuvent pas mémoriser toutes les correspondances possibles et imaginables. Et cela peut poser quelques problèmes. Mettons-nous dans le cas où un routeur doit router un paquet vers une IP de destination, et où le routeur n'a pas de correspondance pour cette IP dans sa table de routage. Celui-ci ne sait pas sur quel port il doit router le paquet. Mais le routeur a une solution : router le paquet vers une route par défaut, vers un port choisi par défaut en cas d'absence de correspondance.

Le contenu de la table de routage peut être déterminé à l'avance par les concepteurs du réseau, ou mis à jour régulièrement (pour s'adapter à des ajouts ou retraits de machines). Dans le premier cas, les tables de routage sont remplies lors de l'allumage du routeur, et ne sont jamais mises à jour. On parle alors de routage statique, dans le sens où il ne peut pas évoluer sans que le gestionnaire du réseau ne fasse les modifications adéquates. Un routage dynamique permet de mettre à jour les tables de routage à la volée, régulièrement, sans intervention humaine. Cette mise à jour des tables de routage est alors prise en charge par un algorithme de routage, une sorte de programme intégré aux routeurs qui leur dit quoi faire pour se mettre à jour. Une sorte d'équivalent des mises à jour Windows, mais pour la table de routage. Ces algorithmes de routage sont pris en charge par des protocoles divers comme IGP ou BGP, que nous n'aborderons pas tellement ils sont complexes.

La mise à jour des tables routage peut permettre de trouver des chemins plus courts ou plus rapides pour acheminer une donnée à une IP précise. Les algorithmes de routage peuvent en effet être conçus pour tenir compte des performances des différents chemins entre deux routeurs. Ils peuvent aussi repérer les chemins endommagés, qui ne fonctionnent plus (un routeur débranché ou en panne, par exemple), et trouver des routes alternatives. Le réseau se reconfigure à chaque instant pour que le service soit maintenu, et que les performances soient conservées. Cette mise à jour peut être gouvernée par un routeur central, qui communique aux autres routeurs les informations de mise à jour : on parle alors de routage centralisé. Mais c'est assez inefficace sur la plupart des réseaux de grande taille, dont internet, où un tel mode de fonctionnement est inadapté. Dans ce cas, le routage est un routage décentralisé : chaque routeur met à jour sa table de routage individuellement, sans intervention d'un routeur central.


Le transport des données

Quand deux ordinateurs s'échangent des données, ces données sont souvent des données de taille variable et non-bornée : dans le jargon du réseau, ces données sont appelées des datagrammes. Cependant, on a vu que le matériel réseau ne gère que des paquets de données, qui ont une taille maximale. Pour résoudre cette incompatibilité apparente, on est obligé de segmenter les datagrammes en paquets. C'est le rôle principal de la couche transport. De plus, quand un ordinateur reçoit un paquet, il doit savoir à quel programme est destiné ce paquet : est-il destiné au navigateur web, à un jeux vidéo, ou au service de mise à jour de l'OS ? Pour cela, on définit ce qu'on appelle des ports logiciels : ce sont de simples numéros, que chaque application va réserver en émettant des données. Les numéros de ports actuels font deux octets (16 bits), ce qui donne 65536 ports différents. Parmi ces ports, ceux dont le numéro est inférieur à 1024 sont réservés pour des services spécifiques alors que les autres sont attribués à la demande aux programmes. Voici une liste des ports les plus utilisés de nos jours :

  • 21: File Transfer Protocol (FTP)
  • 22: Secure Shell (SSH)
  • 25: Simple Mail Transfer Protocol (SMTP)
  • 53: Domain Name System (DNS) service
  • 80: Hypertext Transfer Protocol (HTTP) used in the World Wide Web
  • 110: Post Office Protocol (POP3)
  • 143: Internet Message Access Protocol (IMAP)
  • 443: HTTP Secure (HTTPS)

Protocole UDP[modifier | modifier le wikicode]

Le protocole UDP est le plus simple des deux, alors que TCP est celui qui a le plus de fonctionnalités. Pour faire simple, UDP se contente du minimum syndical qu'on attend d'un protocole de ce genre : il permet à deux programmes d'échanger des données sur le réseau, rien de plus. UDP ne vérifie pas que la donnée est bien arrivée à bon port, et ne vérifie pas non plus que les données ont été recues dans l'ordre d'envoi : seul TCP en est capable. Il est donc très adapté dans les situations où on se moque que les données arrivent dans l'ordre et que les pertes de données sont acceptables. Typiquement, un stream vidéo, un podcast, des jeux vidéos en ligne sont des utilisations les plus courantes de UDP.

Pour chaque datagramme à envoyer, UDP va le découper en plusieurs paquets de données, qui seront envoyés sur le réseau. Chaque paquet contiendra les données à envoyer, ainsi que les informations suivantes (codées sur deux octets) :

  • le port de l'application émettrice ;
  • le port de destination ;
  • la longueur totale du paquet ;
  • des octets de contrôle d'erreur.
Port Source (16 bits) Port Destination (16 bits)
Longueur (16 bits) Somme de contrôle (16 bits)
Données (longueur variable)

Protocole TCP[modifier | modifier le wikicode]

Le protocole TCP peut être vu comme un UDP sous stéroïdes. Non seulement il utilise des ports logiciels, mais il ajoute aussi des fonctionnalités qu'UDP n'a pas. Parmi ces fonctionnalités, plusieurs sont très importantes :

  • la gestion des connections ;
  • les accusés de réception et la détection des pertes de données ;
  • et la gestion de l'ordre de réception.

Séquencement des paquets[modifier | modifier le wikicode]

Il faut savoir que les paquets envoyés ne sont pas forcément reçus dans l'ordre : TCP doit remettre les paquets dans l'ordre. Le moyen le plus simple pour remettre les paquets dans l'ordre est de les numéroter. Si un datagramme est découpé en NN paquets, on peut simplement numéroter chaque paquet suivant son ordre dans la donnée initiale : le premier paquet sera le paquet numéro 1, le second paquet le numéro 2, etc. Ce numéro est transmis avec le paquet en question, à coté des numéros de ports logiciels.

Gestion des pertes de données[modifier | modifier le wikicode]

Lors de l'envoi d'une donnée sur le réseau, l'équipement réseau doit segmenter les datagrammes en paquets et les envoyer sur le réseau individuellement. Lors de la réception, l'ordinateur doit regrouper plusieurs paquets en un seul datagramme. Pour cela, il va accumuler les paquets reçus dans une portion de mémoire, la fenêtre TCP. Cette fenêtre permet d'utiliser des mécanismes pour détecter ou empêcher les pertes de données.

Contrôle de flux[modifier | modifier le wikicode]

Seulement, la fenêtre a une taille limitée, qui est comprise entre 2 et 65536 octets. Sans précaution particulière, il est possible que la fenêtre TCP devienne pleine, notamment lors de transferts de datagrammes imposants. Pour limiter la catastrophe, le récepteur peut émettre un paquet qui indique à l'émetteur la place disponible dans sa fenêtre. Pour cela, les paquets TCP contiennent un champ nommé Window, qui indique combien d'octets peuvent encore être envoyés avant que la fenêtre soit totalement remplie (autrement dit, la place libre en octets dans la fenêtre).

Accusés de réception[modifier | modifier le wikicode]

Les accusés de réception permettent de savoir si un paquet envoyé a bien été reçu. Lorsque le serveur reçoit un paquet, il envoie à l'émetteur un paquet ACK qui indique qu'il a bien reçu le paquet en question. Chaque accusé de réception contient un numéro de séquence, qui indique que tous les paquets situés avant ce numéro de séquence ont été reçus : il permet donc d'accuser la réception de plusieurs paquets en même temps. La fenêtre TCP contient donc des paquets acquittés, des paquets non acquittés, et de l'espace vide. Ces accusés de réception permettent de savoir si une donnée a été perdue lors de son transfert, que celle-ci n'est pas arrivée à destination à temps et a disparue. De telles pertes de données arrivent assez souvent, pour des raisons diverses. Avec les accusés de réception, on sait qu'une donnée a disparu si on n'a pas reçu d'accusé de réception après un certain temps. Si une donnée est déclarée comme perdue, il suffit de la renvoyer en espérant que cette fois sera la bonne.

Reste que la durée avant qu'on considère qu'un paquet est perdu varie suivant les circonstances. Tout dépend en réalité du serveur, de sa distance, du temps mis à transférer les données, et d'autres paramètres. Une donnée trop courte entrainera beaucoup de renvois de données inutiles, alors qu'une donnée trop longue fera attendre le client inutilement. Déterminer la durée idéale se fait par divers algorithmes logiciels, intégré dans le système d'exploitation.

Connexion et déconnexion[modifier | modifier le wikicode]

Connexion TCP

TCP est un protocole qui est dit en mode connecté : tout transfert de donnée doit être précédé d’une négociation entre l'émetteur et le récepteur, cette négociation étant appelée une connexion. La connexion doit être ouverte pour que l'échange de donnée aie lieu, et elle doit être fermée pour que l'échange de donnée cesse. La connexion s'effectue en trois étapes :

  • le client initie la connexion au serveur en envoyant un paquet spécial (SYN) ;
  • le serveur répond qu'il autorise la connexion avec un autre paquet spécial (SYN-ACK) ;
  • le client envoie un accusé de réception au serveur.

Lors de la phase d'envoi de données, l'émetteur envoie des paquets de type DATA, et le serveur répond par des accusés de réception. La déconnexion s'effectue en quatre étapes. Dans les grandes lignes, le serveur et le client doivent se déconnecter chacun de leur coté. Chaque demande de déconnexion d'un ordinateur est autorisée par un accus de réception. Pour se déconnecter, ils doivent envoyer un paquet spécial nommé FIN. Dans les grandes lignes, voici comment a lieu la déconnexion :

  • un ordinateur envoie une demande de déconnexion ;
  • l'autre ordinateur reçoit celle-ci et renvoie l'ACK qui va avec ;
  • ce dernier envoie lui aussi une demande de déconnexion ;
  • et son comparse reçoit celle-ci et renvoie l'ACK qui va avec.


Le web et ses protocoles

Un site web n'est ni plus ni moins qu'un ensemble de fichiers stockés sur un serveur web : chaque page correspond à un ou plusieurs fichiers. Les navigateurs web sont des applications qui récupèrent le contenu des pages, localisées sur les serveurs web, pour les consulter sur un autre ordinateur, ce dernier étant appelé un client web.

Les adresses web (URL)[modifier | modifier le wikicode]

Les adresses des sites web, aussi appelées adresses URL, ressemblent plus ou moins à ceci : http://www.example.com . Tout document, image, page web, a une adresse URL, qui est souvent utilisée pour créer des liens vers celui-ci. Prenons une adresse URL, https://www.fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal par exemple. Il faut savoir que seule une partie de l'adresse URL est utile pour identifier l'adresse IP. Le reste de l'adresse sert à indiquer quel est le fichier demandé, mais ne sert pas à spécifier le serveur. La partie de l'URL qui détermine l'IP est ce qu'on appelle le nom de domaine. Généralement, le nom de domaine est situé après www. et avant le symbole "/" qui suit. En reprenant l'adresse suivante, le nom de domaine est www.fr.wikipedia.org et le reste de l'adresse, /wiki/Wikip%C3%A9dia:Accueil_principal, sert à indiquer où on doit aller chercher le fichier.

Un nom de domaine est composé de plusieurs noms, séparés par des points. Chaque nom fait référence à ce qu'on appelle un domaine internet, quelque chose qui regroupe plusieurs sites ou pages web qui ont un lien. Ce lien peut simplement être le fait qu'elles appartiennent à un même site. Toutes les pages d'un site web font généralement partie du même domaine. Dans le nom de domaine www.fr.wikipedia.org , c'est le cas du domaine wikipedia. Cela peut aussi être lié à la localisation géographique ou la langue du site : c'est par exemple le cas du domaine .fr ou .uk.

Ces domaines ne sont pas gérés n'importe comment et diverses organisations gèrent certains domaines principaux, les domaines de premier niveau. Les domaines de premier niveau sont les fameux domaines .fr, .uk, .com, .org, et ainsi de suite. Certains sont des domaines géographiques (.fr, par exemple), tandis que d'autres sont liés à des organisations (.gov pour les gouvernements, .edu pour les établissement scolaires, .mil pour les organismes militaires, et quelques autres). Ces domaines de premier niveau sont gérés par l'ICANN (Internet Corporation for Assigned Names and Numbers), un organisme américain. En-dessous de ces domaines, on trouve des domaines de second et de troisième niveau, qui sont subordonnées aux domaines de niveau inférieur. Par exemple, le .gouv est un domaine de second niveau (un sous-domaine) : tous les sites en .gouv seront des sites en .fr. Ces sous-domaines sont des sortes de subdivisions d'un domaine de premier niveau. Même chose pour les domaines de troisième niveau, qui sont des subdivisions d'un domaine de second niveau.

La traduction URL - IP[modifier | modifier le wikicode]

Au tout début d'internet, les correspondances entre IP et URL étaient mémorisées dans des fichiers HOSTS.TXT, qui existe toujours sur certains systèmes d'exploitation. Ce fichier était accessible sur un serveur dédié, maintenu par le Network Information Center. Mais cette méthode a rapidement montré ses limites avec l'augmentation du nombre de sites. Vu le nombre actuel de sites web, on ne peut pas en garder un gros annuaire dans un seul et unique fichier sur chaque ordinateur. Cependant, le fichier host.txt est toujours utilisé par les systèmes d'exploitation moderne et les navigateurs web peuvent l'utiliser comme bon leur semble. Modifier le fichiers host.txt permet de bloquer des sites web : il suffit de leur attribuer une adresse IP invalide. Cette technique est une des techniques utilisée par certains logiciels de contrôle parental. Elle est aussi utilisée par des antispywares comme Spybot : celui-ci bloque des sites web conçus pour propager des spywares, en les bloquant via le fichier Host.txt.

Mais de nos jours, le navigateur ne connait pas l'IP qui correspond à l'URL, et il doit la récupérer sur le net. Des serveurs naissent et meurent tous les jours, et l'IP associée à une URL peut ainsi changer. Pour récupérer cette IP, le navigateur va devoir utiliser un protocole (oui, encore un) : le protocole Domain Name System (DNS). Ce protocole mémorise les correspondances IP - URL sur plusieurs serveurs DNS. L'ensemble de ces serveurs DNS contient en quelque sorte l'annuaire d'internet. Le protocole DNS indique comment on doit interroger les serveurs DNS et comment ceux-ci doivent répondre aux demandes qui leur sont envoyées. C'est un simple standard de communication, du moins pour simplifier.

Si les noms de domaines sont structurés de manière hiérarchique, il est évident que cette organisation se retrouve pour la traduction en adresses IP. Quand un navigateur veut traduire un nom de domaine en IP, il va interroger un serveur racine. Ce serveur racine est un serveur DNS qui ne connait pas la correspondance entre nom de domaine et IP, mais qui peut la rechercher sur d'autres serveurs. Le navigateur connait les adresses IP de ces serveurs DNS, qui sont des adresses fixes et réservées uniquement pour les serveurs DNS. Généralement, le navigateur va interroger le serveur racine. Celui-ci va renvoyer l'adresse du serveur qui gère le domaine de premier niveau. Ces serveurs DNS de premier niveau renvoient l'adresse d'un serveur chargé du domaine de second niveau. Et ainsi de suite : le processus se poursuit jusqu'à ce qu'on tombe sur l'IP recherchée. Prenons un serveur racine qui reçoit le nom de domaine zestedesavoir.com. Il ne connait pas l'IP qui correspond et il va d'abord interroger le serveur racine. Celui-ci va renvoyer l'adresse IP du serveur chargé des .com. Le navigateur va alors interroger ce serveur avec le nom de domaine zestedesavoir.com. Celui-ci connait l'IP associée, et il la renvoie directement.

Face à un nom de domaine, le serveur peut se retrouver face à deux situations :

  • soit le serveur connait l'IP qui correspond au nom de domaine ;
  • soit il peut donner l'IP d'un serveur qui devrait connaitre cette adresse.

Dans le premier cas, l'IP est renvoyée par le serveur et la recherche s’arrête. Dans le second cas, le serveur racine va alors interroger le serveur dont il vient de récupérer l'IP. Le processus de recherche continue tant qu'on lui fournit une adresse de serveur DNS qui peut contenir l'IP voulue. La plupart de serveurs DNS mémorise les réponses aux demandes les plus courantes dans une portion de RAM : le cache DNS. Ainsi, les réponses aux requêtes les plus fréquentes peuvent être lues depuis ce cache, ce qui est plus rapide. Les résultats les plus fréquents sont effacés du cache après un certain temps, au cas où l'IP associée à un nom de domaine change.

Le protocole HTTP[modifier | modifier le wikicode]

Une fois que le DNS a permit d'obtenir l'IP du serveur web, il est temps d'échanger des informations avec le serveur. Pour les communications entre serveur et client web, il existe un protocole dédié : l'HyperText Transfert Protocol, aussi appelé HTTP.

Commandes[modifier | modifier le wikicode]

Ce protocole normalise différentes commandes, comme GET, HEAD ou POST, qui agissent chacune sur une URL. Ces commandes sont envoyées dans des paquets TCP, le contenu de la commande étant placé dans les données du paquet. Ces commandes sont envoyées par le client, et le serveur doit obligatoirement répondre à celles-ci : ces commandes sony des ordres envoyés au serveur. Ces commandes sont les suivantes :

  • GET : obtenir la page web demandée ;
  • HEAD : obtenir des informations sur la page, sans la consulter ;
  • POST : envoyer une ressource sur le serveur (un message sur un forum, par exemple) ;
  • PUT : remplace ou ajoute une ressource sur le serveur ;
  • DELETE : supprime une ressource sur le serveur ;
  • OPTIONS : obtenir les options de communications utilisées par le serveur ;
  • CONNECT : commandé spécialisée pour les proxys ;
  • TRACE : permet de tester la liaison entre serveur et client.

Codes de statut HTTP[modifier | modifier le wikicode]

Le serveur répond à ces commandes en envoyant un paquet au contenu standardisé. Celui-ci peut contenir la page web demandée, pour répondre aux commandes GET ou HEAD, par exemple. Mais dans tous les cas, le serveur web indique si tout s'est bien passé ou si une erreur a eu lieu. Pour cela, il renvoie un code de statut HTTP, qui indique si tout s'est bien passé et quelles sont les erreurs qui ont eu lieu1. Par exemple, il va renvoyer une 404 si la ressource demandée n'a pas été trouvée sur le serveur. Les plus courants sont :

  • 200 : tout s'est bien passé ;
  • 301 et 302 : redirection vers une autre page ;
  • 403 : accès refusé ;
  • 404 : page non trouvée ;
  • 500 : erreur interne au serveur.

Les versions du HTTP[modifier | modifier le wikicode]

Il a existé plusieurs versions du protocole HTTP, la toute première étant la version 0.9 et la dernière la 1.1 (à l'heure où j'écris ces lignes, janvier 2016). Le HTTPS est une version chiffrée du HTTP, où les commandes sont transmises après avoir étés cryptées. Cette version du HTTP existe pour une raison simple : avec le HTTP normal, un attaquant peut parfaitement intercepter les paquets et avoir accès à leur contenu. Et si ce contenu est votre code de carte bleu, que vous avez saisi pour faire des achats en ligne, cela peut donner une belle catastrophe. Pour éviter cela, le HTTP utilise un système de chiffrement dit asymétrique, qui empêche toute attaque de ce genre. Ce système de chiffrement est basé sur le protocole Transport Layer Security aussi appelé TLS. Il peut paraitre bizarre que la première version soit la 0.9 et non la 1.0. Mais il faut savoir que la 0.9 n'avait pas de numéro de version à la base, l'introduction des numéros de version s'étant fait en catastrophe à partir de la version 1.0. L'ancienne version sans numéro a alors été renommée en HTTP 0.9.

Avec les versions 0.9 et 1.0 du HTTP, une connexion TCP est ouverte lors de l'envoi d'une commande, puis fermée une fois que le serveur a répondu à celle-ci. Tout se passe comme suit :

  • le client ouvre une connexion TCP avec le serveur ;
  • puis il envoie sa commande ;
  • le serveur répond à cette commande avec un paquet réponse ;
  • puis la connexion est fermée.

Les versions suivantes du HTTP ont tenté d'économiser les connexions TCP, en utilisant les connexions persistantes. Avec elles, les connexions TCP ne sont pas fermées après que le serveur a répondu à une commande : elles peuvent servir pour plusieurs commandes successives. Une autre optimisation permise par le HTTP 1.1 est le pipelining. Avec cette technique, un client HTTP peut envoyer une nouvelle commande, sans attendre que le serveur réponde à la précédente. Au lieu d'envoyer les commandes unes par unes, on peut les envoyer en rafale.

GFDL Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture.