Misfu, le site des cours Informatique/Bureautique/Mathematiques


Le protocle TCP/IP et interne



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 :

  1. une bonne reprise après panne
  2. la capacité à gérer un taux élevé d'erreurs
  3. une faible surcharge des données
  4. la capacité de se prolonger sans difficultés dans des sous-réseaux
  5. l'indépendance par rapport à un fournisseur particulier ou un type de réseau

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.

  • Dans un réseau de classe A, l'Internic fixe les 8 premiers bits (dits bits de poids fort) sous la forme 0xxxxxxx; les 24 autres bits sont laissés à l'administration de l'acquéreur du réseau de classe A. Dans un tel réseau, les adresses IP sont donc de type F.b.c.d où F (fixé par L'Internic) va de 0 à 126, les valeurs b, c et d étant laissées librement administrables par l'acquéreur. De grandes sociétés ont ce type de réseau; par exemple, Hewlett-Packard possède le réseau 16.b.c.d (qu'on note aussi 16.0.0.0). Vous noterez que seuls 127 réseaux de ce type sont disponibles.

     

  • Dans un réseau de classe B, l'Internic fixe les 16 premiers bits sous la forme 10xxxxxx yyyyyyyy, ce qui donne des réseaux de type F.G.0.0 où F (128-191) et G (0 à 255) sont fixés par le NIC.

     

  • Dans un réseau de classe C, l'Internic fixe les 24 premiers bits sous la forme 110xxxxx yyyyyyyy zzzzzzzz, ce qui donne des réseaux de type F.G.H.0 où F (192-223), G et H (0-255) sont fixés par le NIC.

     

  • Tout le réseau 127.0.0.0 (qu'on peut voir comme un réseau de classe A) n'est pas attribué par l'Internic, car l'adresse 127.0.0.1, dite adresse de boucle, est réservée à des fins techniques. Dommage, car 24 millions d'adresses sont ainsi perdues !

     

  • De plus, l'Internic n'attribue pas non plus certains réseaux qui sont laissés à des fins privées. Ces plages d'adresses généralement non routées par les fournisseurs d'accès, en d'autres termes des plages attribuables tout à fait légalement pour des réseaux internes, vont

    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 :

  1. l'adresse de sous-réseau (généralement le premier IP du sous-réseau), par exemple a.b.c.0 pour un réseau composé d'un seul sous-réseau, ou a.b.c.64 pour le troisième sous-réseau d'un réseau divisé en 8 sous-réseaux.
  2. l'adresse de diffusion (généralement le dernier IP du sous-réseau), par exemple, en reprenant les deux exemples précédents, a.b.c.255 ou a.b.c.95.
  3. l'adresse du routeur par défaut dont je parle un peu plus loin, par exemple a.b.c.1 ou a.b.c.65.

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.


  1. Limiter le trafic sur un tronçon donné. Imaginons deux réseaux locaux A et B séparés par un routeur. Lorsque des ordinateurs de A discutent avec des ordinateurs de B, le routeur a pour rôle de transmettre l'information du réseau A vers le réseau B (et inversément). Par contre, si des ordinateurs de A s'échangent entre eux des données, il n'y a pas de raison qu'ils encombrent inutilement le trafic sur le réseau B, et c'est bien pour cette raison que les réseaux A et B sont distincts.

    Autre évidence : si le réseau A tombe en panne, le réseau B n'en est pas affecté. C'est d'ailleurs l'avantage principal de subdiviser : éviter qu'un ennui technique qui pourrait rester localisé ne perturbe la totalité du réseau

  2. Autre aspect non négligeable : le broadcast (diffusion). Vous ne le savez peut-être pas, mais dans votre dos, les ordinateurs sont de grands bavards : ils ne cessent de causer entre eux pour signaler leur présence ou se mettre d'accord sur les protocoles qu'ils sont capables de comprendre. Pensez un peu si Internet n'était constitué que d'un seul segment : le broadcast seul des ordinateurs utiliserait l'intégralité de la bande passante avant même qu'un seul octet de données ait pu être transmis ! Pour cette raison, le travail des routeurs est non seulement de faire transiter les paquets IP, mais aussi de filtrer le broadcast local qui n'intéresse pas la planète entière. Vous comprendrez par là que les routeurs jouent un rôle essentiel pour éviter la saturation du trafic.

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 :


  • l'établissement d'une liaison
  • le séquençage des paquets
  • le contrôle de flux
  • la gestion d'erreurs
  • le message d'établissement d'une liaison

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

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



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.


  1. Chaque ordinateur sur Internet possède une adresse IP, par exemple 195.235.4.6
  2. Les adresses IP définissent les termes de réseaux ou de sous-réseaux. C'est un organisme international, l'Internic, qui attribue les différentes adresses ou les différents réseaux (classe A, B, C). Ce sont ensuite les entreprises qui ont acheté les réseaux qui peuvent les subdiviser en sous-réseaux grâce à l'utilisation de masques de sous-réseaux adéquats.
  3. De nombreuses adresses IP ne sont pas utilisées.
    • L'Internic tout d'abord conserve des adresses utilisables à des fins privées, par exemple les adresses de type 192.168.0.x
    • L'administrateur d'un réseau doit toujours mettre de côté trois adresses IP par sous-réseau : l'adresse de sous-réseau (par exemple 192.168.0.0), l'adresse de diffusion (par exemple 192.168.0.255) et l'adresse du routeur par défaut.


  4. Pour communiquer, l'ordinateur expéditeur fragmente l'information à envoyer en de nombreux paquets IP qui contiennent, outre l'information, les adresses IP de l'expéditeur et du destinataire ainsi qu'un en-tête de total de contrôle.
  5. Les paquets IP ne peuvent être transmis directement qu'à un ordinateur du même sous-réseau (défini par le masque de sous-réseau). Si l'ordinateur destinataire ne peut être atteint, l'ordinateur expéditeur envoit le paquet IP à l'adresse du routeur par défaut qui lui a été spécifié.
  6. Le routeur est une machine qui fait transiter les paquets d'un réseau à un autre (ou d'un sous-réseau à un autre) et qui utilise donc plusieurs adresses IP (une sur chacun des sous-réseaux couverts). Par exemple, un routeur possédant les deux adresses IP 196.129.0.1 et 197.160.40.91 peut faire passer des paquets IP du réseau 196.129.0.0 au réseau 197.160.40.0, et inversément.
  7. Le protocole IP ne s'occupe que de l'acheminement des paquets IP. La vérification du transfert de l'intégrité des données est effectuée par le protocole TCP.

Si vous désirez maintenant approfondir un peu le sujet, consultez le chapitre suivant, le protocole TCP/IP (avancé).




Merci à Dufay