Quelques mots sur le protocole TCP/IP.
TCP/IP est un ensemble de logiciels développés au fil des années (à partir des années 70 déjà) qui constituent un "langage universel" de communication informatique à travers le monde. Le protocole devait posséder les qualités suivantes :
A partir du 1er janvier 1983, seuls les paquets TCP/IP ont été transmis sur le réseau Arpanet (précurseur d'Internet). 1983 est donc en quelque sorte l'année de naissance d'Internet.
Il faut encore rajouter que TCP/IP se compose de deux protocoles distincts, IP et TCP, dont j'explique plus loin les rôles respectifs.
Le protocole IP |
Le Protocole Internet ou IP (Internet Protocol) est la partie la plus fondamentale d'Internet. Si vous voulez envoyer des données sur internet, vous devez les "emballer" dans un paquet IP. Je parlerai plus loin de ces paquets IP. Il faut savoir pour l'instant que ces derniers ne doivent pas être trop gros; la plupart du temps, ils ne peuvent pas contenir toute l'information qu'on voudrait envoyer sur Internet, et cette dernière doit par conséquent être fractionnée en de nombreux paquets IP.
Les paquets IP, outre l'information, sont constitués d'un en-tête contenant l'adresse IP de l'expéditeur (votre ordinateur) et celle du destinataire (l'ordinateur que vous voulez atteindre), ainsi qu'un nombre de contrôle déterminé par l'information emballée dans le paquet : ce nombre de contrôle, communément appelé en-tête de total de contrôle, permet au destinataire de savoir si le paquet IP a été "abîmé" pendant son transport.
L'adresse IP |
Une des choses les plus intéressantes du protocole TCP/IP est d'avoir attribué un numéro fixe, comme un numéro de téléphone, à chaque ordinateur connecté sur Internet; ce numéro est appelé l'adresse IP. Dans le cadre du standard actuel - IPV4 -, les adresses sont codés sur 32 bits. Ainsi, tout ordinateur sur Internet, par exemple le vôtre lorsque vous vous connectez par l'entremise de votre provider, se voit attribuer une adresse de type a.b.c.d (où a,b,c,d sont des nombres compris entre 0 et 255), par exemple 202.15.170.1. Dès ce moment, vous êtes le seul au monde à posséder ce numéro, et vous y êtes en principe directement atteignable.
Un rapide calcul vous montre qu'il y a, en théorie, un maximum de 2564 = 4'294'967'296 adresses possibles, ou, en d'autres termes, d'ordinateurs directement connectables, ce qui est plus que suffisant même à l'échelle mondiale (du moins à l'heure actuelle !). En fait, il y a beaucoup moins d'adresses que ce nombre impressionnant, car de nombreux numéros IP ne sont pas autorisés ou sont utilisés à des fins "techniques".
Pour l'ordinateur, cette adresse IP est codée en binaire (4 x 8 bits = 32 bits). Par exemple,
202 | 15 | 170 | 1 |
11001010 | 00001111 | 10101010 | 00000001 |
Il est clair que pour nous les humains, il est plus facile de retenir 202.15.170.1 que 11001010000011111010101000000001 !
Les différents types de réseaux |
L'adressage a été structuré logiquement dans une architecture de réseaux et de sous-réseaux. N'importe qui ne peut s'approprier librement une adresse IP : ces dernières sont régies par un organisme international, l'Internic, qui délivre les différentes adresses ou plutôt les classes de réseaux.
de 10.0.0.0 à 10.255.255.255
de 172.16.0.0 à 172.31.255.255
de 192.168.0.0 à 192.168.255.255
Typiquement, si vous créez votre propre réseau local en TCP/IP, vous utiliserez pour vos ordinateurs ce type d'adresses.
Il me faut encore rajouter que certaines adresses d'un réseau quelconque ne sont pas attribuables à un ordinateur précis, mais joue un rôle "technique" dans TCP/IP.
Prenons l'exemple d'un réseau de classe C comme 192.168.0.x, x pouvant varier entre 0 et 255.
Cette plage d'adresses doit être indiquée de manière officielle, et on utilise pour cela l'adresse générale 192.168.0.0, ce qui veut dire "toutes les adresses comprises entre 192.168.0.0 et 192.168.0.255". Remarquez que cela signifie que vous ne pourrez jamais attribuer l'adresse 192.168.0.0 à un ordinateur précis, puisque cette dernière fait référence à tout le réseau.
Il existe une autre adresse IP réservée : l'adresse de diffusion (broadcast). C'est la dernière adresse du sous-réseau, dans notre cas 192.168.0.255. Il s'agit de l'adresse que vous utilisez pour diffuser un message vers chaque ordinateur du sous-réseau concerné.
Finalement, vous devez réserver une adresse IP du routeur par défaut (gateway) : c'est l'adresse "passerelle" qui permettra à des paquets IP de "quitter" votre sous-réseau.
La subdivision en sous-réseaux |
Comment un ordinateur transmet-il l'information (les paquets IP) à son destinataire ? Une partie de la réponse se trouve dans le fonctionnement du protocole IP.
Généralement, un ordinateur ne peut transmettre directement un paquet IP qu'à un ordinateur situé sur le même sous-réseau. Par exemple, un ordinateur possédant l'adresse IP 192.168.0.2 pourra directement envoyer de l'information à un ordinateur "voisin" d'adresse 192.168.0.20, mais il ne pourra pas le faire avec un ordinateur d'adresse 194.38.175.55. Pour simplifier, on dira en première approche qu'un ordinateur ne peut communiquer directement qu'avec un ordinateur possédant les trois premiers nombres de l'adresse IP identiques. Cette remarque n'est malheureusement pas théoriquement juste (même si en pratique, c'est assez souvent le cas pour des réseaux simples). En fait, c'est le concept de masque de sous-réseau qui définit ce qu'un ordinateur peut "voir" ou ne pas voir.
Le masque de sous-réseau que vous avez peut-être eu l'occasion d'utiliser, si vous utilisez TCP/IP pour un réseau local, est 255.255.255.0. Ce masque veut dire que l'ordinateur concerné peut "voir" (ou communiquer avec) tous les ordinateurs possédant les trois premiers nombres de l'adresse IP identiques, comme je l'ai indiqué à l'exemple précédent. Comment fonctionne ce système à première vue aussi compliqué ?
En fait, admettons que l'ordinateur A d'adresse IP 199.34.57.10 veuille envoyer un paquet IP à l'ordinateur B d'adresse IP 199.34.57.20. A priori, A ne sait pas s'il peut communiquer directement avec B. Pour cela, il utilise le masque de sous-réseau 255.255.255.0 qu'on lui a imposé. Il "convertit" le tout en binaire, ce qui donne :
11111111 | 11111111 | 11111111 | 00000000 | masque sous-réseau |
11000111 | 00100010 | 00111001 | 00001010 | adresse de A |
11000111 | 00100010 | 00111001 | 00010100 | adresse de B |
L'ordinateur A doit s'assurer que partout où le masque de sous-réseau a une valeur de 1, la valeur binaire de son adresse IP corresponde à celle de B. Dans l'exemple ci-dessus, il n'est pas difficile de voir que c'est le cas; finalement, les 8 derniers bits de valeur 0 indiquent que le dernier nombre de l'adresse IP est indifférent pour A : ce dernier verra donc tous les ordinateurs d'adresse 199.34.57.x, x étant compris entre 0 et 255.
Cet exemple paraît trivial, pourtant de nombreux réseaux comportent des masques de sous-réseaux moins compréhensibles (pas uniquement des 0 et des 255), comme par exemple 255.255.255.224. Si vous refaites le même raisonnement, vous verrez qu'avec un tel masque, l'ordinateur 192.168.0.2 ne peut directement communiquer avec l'ordinateur 192.168.0.100 ! En fait, les 256 adresses de ce réseau de classe C seront comme subdivisées en 8 sous-réseaux de 32 ordinateurs.
Ainsi, les ordinateurs 192.168.0.0 à 192.168.0.31 pourront communiquer entre eux, de mêmes que les ordinateurs 192.168.0.32 à 192.168.0.63,
les ordinateurs 192.168.0.64 à 192.168.0.95,
les ordinateurs 192.168.0.96 à 192.168.0.127,
les ordinateurs 192.168.0.128 à 192.168.0.159,
les ordinateurs 192.168.0.160 à 192.168.0.191,
les ordinateurs 192.168.0.192 à 192.168.0.223,
et les ordinateurs 192.168.0.224 à 192.168.0.255,
mais ces sous-réseaux ne pourront pas communiquer directement entre eux.
Cette subdivision d'un réseau de classe C en plusieurs sous-réseaux peut être utile pour un fournisseur d'accès. Vous pouvez calculer aisément les masques de sous-réseaux suivants selon le nombre de sous-réseaux que vous souhaitez créer.
nombre de sous-réseaux | IP par sous-réseau | masque de sous-réseau |
---|---|---|
1 | 256 | 255.255.255.000 |
2 | 128 | 255.255.255.128 |
4 | 64 | 255.255.255.192 |
8 | 32 | 255.255.255.224 |
16 | 16 | 255.255.255.240 |
32 | 8 | 255.255.255.248 |
En fait, nous avons vu au paragraphe précédent que pour chaque sous-réseau il faut déduire trois adresses IP non attribuables à un ordinateur :
Chaque sous-réseau "perd" donc trois adresses IP; il s'ensuit qu'une subdivision excessive d'un réseau n'est pas avantageuse (on divise rarement au-delà de 8 sous-réseaux).
Le routage des paquets IP et le protocole TCP |
Revenons à notre ordinateur A d'adresse 192.168.0.2 (mettons-lui un masque de sous-réseau de 255.255.255.0). Admettons qu'il veuille envoyer un paquet IP à ordinateur B d'adresse 192.170.0.4. En utilisant le masque de sous-réseau, A comprend qu'il ne peut atteindre directement B. Que fait-il donc ? Il envoie sans réfléchir le paquet IP à l'adresse du routeur par défaut (disons que ce dernier a été défini comme 192.168.0.254).
Qu'est-ce que ce routeur ? Le routeur est une machine pouvant "jouer sur plusieurs sous-réseaux" en même temps. Typiquement, si on utilise un ordinateur, ce dernier possèdera deux cartes réseaux (ou plus), l'une connectée sur l'un des sous-réseaux (dans notre cas, disons qu'elle possède l'adresse 192.168.0.254), l'autre connectée sur l'autre sous-réseau (disons 192.170.0.192). S'il utilise le bon logiciel, un tel ordinateur est capable de faire transiter des paquets IP du réseau 192.168.0.0 vers le réseau 192.170.0.0, et inversément bien sûr.
Deux petites remarques s'imposent. Tout d'abord, vous l'aurez compris, c'est donc grâce à des routeurs que différents sous-réseaux d'un réseau de classe C peuvent communiquer entre eux, par exemple l'ordinateur 192.168.0.2 avec l'ordinateur 192.168.0.120 d'un réseau de classe C subdivisé en 8 sous-réseaux (masque de sous réseau 255.255.255.224). La seconde remarque est d'ordre plus pratique : vous retiendrez que Windows 95 n'est pas capable de faire du routage, bien qu'il soit tout à fait possible d'installer deux cartes réseaux (avec des IP différents) dans un ordinateur tournant sous ce système; par contre, Windows NT 4.0, même en version Workstation, est capable d'une telle fonction.
Question pertinente : pourquoi subdiviser et ne pas faire de "méga" réseaux ?
Les deux points suivants expliquent en partie pourquoi on procède ainsi.
Disons encore quelques mots sur l'acheminement des paquets IP. Vous comprenez maintenant que lorsqu'un ordinateur doit acheminer un paquet IP, il vérifie tout d'abord s'il peut le transmettre directement (grâce au masque de sous-réseau); s'il ne peut pas, il l'envoie bêtement, sans réfléchir, au routeur par défaut. A partir de là, les routeurs sont généralement configurés pour savoir où diriger les paquets IP qui leur sont confiés; les routeurs bavardent entre eux (à l'aide de protocoles particuliers de routage, RIP ou OSPF par exemple) pour savoir quelle est la meilleure route (la plus courte généralement) pour qu'un paquet IP atteigne sa destination. De même, si une route est soudainement interrompue, les routeurs sont capables de se reconfigurer et proposer des nouvelles routes de secours.
Or le protocole IP néglige un point crucial : il ne vérifie nullement le bon acheminement des paquets IP. En d'autres termes, l'ordinateur expéditeur, dans le protocole IP, ne fait qu'envoyer le paquet IP plus loin; il ne s'intéresse pas du tout de savoir si le paquet a bien été reçu ou s'il a été endommagé pendant le transfert !
Qui doit donc assurer l'intégrité point à point, si ce n'est IP ? La réponse : son copain, TCP.
Le protocole de contrôle de transmission ou TCP (Transmission Control Protocol) vérifie donc le bon acheminement d'un paquet IP. Cela se fait de la façon suivante. Admettons que A veuille transmettre un paquet IP à B. A envoie (un peu à l'aveugle) son paquet IP à B, un peu comme une bouteille à la mer. Tant que A ne recevra pas un accusé de réception de B lui indiquant que ce dernier a bien reçu le paquet IP dans son intégrité (grâce à l'en-tête de total de contrôle), il renverra à intervalles réguliers le même paquet IP à B. Il n'arrêtera d'envoyer ce paquet qu'à la confirmation de B. Ce dernier agira ensuite de même s'il doit transmettre le paquet plus loin. Si B constate que le paquet qu'il a reçu est abimé, il n'enverra pas de confirmation, de manière à ce que A lui renvoie un paquet "neuf".
TCP fournit d'autres services sur lequels je ne m'attarderai pas ici. On résumera rapidement les principales fonctionnalités du protocole TCP ainsi :
On entend par "contrôle de flux" la capacité de TCP, entre autres, de reconstituer l'information originale à partir de paquets IP arrivés (souvent) dans le désordre le plus absolu.
C'est aussi TCP qui gère la notion de "sockets" (ports) dont je parle dans la partie concernant la façon de configurer .
Le système de désignation de noms (DNS) |
Maintenant que vous avez compris (j'espère !) comment circulent les paquets IP à travers Internet, il me reste à donner rapidement quelques explications sur le système de désignation de noms, en anglais Domain Name System (DNS). Vous avez vu plus haut que tout ordinateur connecté à Internet possède un numéro IP qui lui est propre. Pour communiquer avec un autre ordinateur, il vous faut connaître son adresse IP. Or, lorsque vous "surfez" sur le net, vous écrivez très rarement de tels numéros dans votre browser. C'est tout simplement que vous faites appel, sans le savoir, à un serveur DNS.
Un serveur DNS est simplement une machine qui associe le numéro IP à une adresse plus facilement mémorisable, bref une sorte d'annuaire téléphonique pour Internet. Ainsi, la machine qui répond lorsque vous tapez http://www.microsoft.com dans votre browser possède en fait l'adresse IP 207.68.137.65. Si vous tapiez http://207.68.137.65, vous obtiendriez exactement le même résultat. Un (ou plusieurs) serveur DNS se trouvent généralement chez votre provider; vous avez d'ailleurs sûrement reçu une feuille de configuration vous indiquant une ou deux adresses IP pour ces serveurs lors de la configuration de votre connexion à votre provider.
Une manière simple de constater l'utilité d'un serveur DNS est d'ouvrir (sous Windows 95) une fenêtre DOS, et de taper ping 'adresse de l'hôte', par exemple ping www.microsoft.com. "Ping" est une fonction très utile dans l'établissement de réseau : c'est une commande qui envoie un paquet IP tout simple à un ordinateur et lui demande simplement de répondre. pinging www.microsoft.com [207.68.137.65] with 32 bytes of data suivie de quatre lignes de la forme : reply from 207.68.137.65: bytes=32 time=550ms TTL=128
Sous Windows 95, quatre paquets IP sont envoyés, et si vous avez avez tapé 'ping www.microsoft.com' par exemple, votre ordinateur devrait ensuite vous écrire une ligne de type :
Ces quatre dernières lignes vous indiquent que le serveur Microsoft a répondu à vos appels et vous montrent le temps total qu'a pris la transaction pour chaque ping (par exemple 550 millisecondes). Vous noterez surtout que le serveur DNS de votre provider aura fait automatiquement la translation www.microsoft.com <-> 207.68.137.65.
PS : J'ai parlé plus haut de l'adresse IP réservée 127.0.0.1, dite adresse de boucle; un ping sur cette adresse correspond à un ping "sur soi-même", ce qui permet de tester la bonne marche de la carte réseau.
Résumé et exemples |
Résumons en quelques points ce que nous avons vu sur les réseaux TCP/IP.
Si vous désirez maintenant approfondir un peu le sujet, consultez le chapitre suivant, le protocole TCP/IP (avancé).