Voilà ! Vous avez connecté vos PC (2, 3, 10, plus !...) entre eux, et vous êtes devenus un véritable Terminator de Quake II en réseau.
Maintenant vous vous dites que vous avez assez joué, et que vous pourriez faire quelque chose de plus utile de votre réseau. Vous êtes par exemple un mordu du web, mais vous êtes continuellement dérangé par votre petit frère qui veut sans cesse discuter sur IRC. Vous vous dites alors : "Et si je connectais tout mon LAN sur Internet", et vous pensez à l'unique connexion réseau que vous avez acquise chez un provider (modem ou câble).
L'idée est excellente; elle est même tout à fait réalisable, mais pas nécessairement aussi facilement que vous l'auriez pensé.
Supposons que vous ayez suivi les quelques notions que je vous expose aux chapitre mise en place d'un réseau local et le protocole TCP/IP et Internet, vous avez retenu ceci :
Si vous réfléchissez un peu à ces trois points, vous comprenez tout doucement le gravissime problème qui va se poser :
Vous ne pouvez pas identifier de manière univoque tous vos ordinateurs sur Internet, ce qui est une condition obligatoire (puisque le paquet IP doit contenir l'adresse de l'expéditeur et du destinataire).
En effet, seul l'ordinateur de votre LAN qui est connecté directement à Internet (l'ordinateur sur lequel le modem est connecté) possède un "numéro de téléphone" valable sur Internet (l'unique adresse IP attribuée par votre ISP). Les autres ordinateurs de votre LAN ont des adresses "bidons" de type 192.168.0.x qui sont sûrement utilisées par des milliers d'autres utilisateurs dans le monde qui, comme vous, ont créé un réseau local chez eux. C'est bien pour cela que ces adresses ne sont pas routées par les ISP.
Vous pourriez vous croire malin en attribuant la même adresse IP à tous les ordinateurs. Vous devriez cependant vous rendre compte qu'un tel système n'est pas possible, car une information entrante sur votre IP ne "saurait" quel ordinateur du LAN rejoindre. De toute façon, Windows interdit d'attribuer une même adresse IP à plus d'une machine sur un même réseau; le problème est donc réglé.
Vous vous retrouvez donc avec une architecture de ce type :
Vous constatez que la machine de gauche est "à cheval" sur deux réseaux :
Cette machine un peu particulière qui est capable de jouer sur les deux réseaux est appelée la passerelle (gateway).
vous pourriez simplement faire du "routage", c'est à dire que l'ordinateur à cheval sur les deux réseaux n'aurait qu'à faire transiter les paquets IP du réseau Internet sur le réseau local, et inversément. Les ordinateurs du LAN ayant des adresses IP bien attribuées sur le réseau Internet, les paquets IP n'auraient pas de peine à retrouver leur chemin.
Cette machine indispensable peut être soit un serveur proxy soit un routeur NAT.
Cette section décrit la manière particulière dont fonctionnent les applications Internet. Ces dernières, lorsqu'elles doivent communiquer sur Internet, utilise un paramètre supplémentaire en plus de l'adresse IP de l'expéditeur et du destinataire : le port de l'application. Généralement, chaque application travaille sur un port spécifique.
Une bonne approche des ports (dits aussi "sockets") pourrait être de les comparer au fonctionnement des lignes numériques (type ISDN) de nos téléphones actuels : vous savez que ces téléphones peuvent recevoir plusieurs appels sur votre seul numéro (par exemple, vous pouvez téléphoner avec un ami, surfer sur Internet et recevoir un fax, le tout simultanément). On peut faire l'analogie avec TCP/IP :
La comparaison s'arrête là, car autant votre téléphone ISDN peut recevoir simultanément au plus 8 lignes, autant votre connexion à Internet comporte plusieurs milliers de ports d'écoute !
Ces ports ne sont pas totalement aléatoires : les différents types d'applications travaillent généralement sur des ports bien définis (même si, exceptionnellement, cela peut varier).
Je vous donne ci-dessous une liste non-exhaustive des applications réseaux les plus courantes.
Application/Service |
Port usuel |
HTTP |
80 |
FTP |
21 |
POP3 |
110 |
SMTP |
25 |
NNTP (News) |
119 |
Telnet |
23 |
SOCKS |
1080 |
Real Audio |
1090 |
VDO Live |
9000 |
XDMA |
8000 |
DNS |
53 |
Bien évidemment, certaines personnes font parfois tourner certains de ces services sur d'autres ports. Par exemple, si vous tapez dans votre browser l'adresse :
http://www.serveur.com:8080
cela veut dire que vous essayez de vous connecter à un serveur web tournant sur le port 8080 au lieu du port 80 usuel.
A côté du système proxy, il existe une autre solution pour partager une connexion à Internet : le routage NAT (Network Address Translation). L'utilisation d'un routeur NAT est une solution très élégante et transparente. Cependant, avant de se lancer immédiatement dans le vif du sujet, il me faut détailler un peu plus la manière dont les ordinateurs s'échangent des données sur Internet.
Vous devez savoir que lorsqu'un ordinateur transmet des données sur Internet, les paquets IP qui circulent contiennent tous les informations suivante :
Notez que je n'aime pas trop les termes "destinataire" et "expéditeur", vu que toute connexion sur Internet voit des paquets IP aller dans les deux sens.
Exemple : vous ouvrez une page web dans votre navigateur (ex. http://www.joliepageweb.fr). Votre browser tente alors de se connecter à l'adresse IP du serveur distant (résolue par le serveur DNS) sur le port 80 (généralement utilisé par les serveurs web). Dans le paragraphe précédent, je vous indiquais certains ports usuels. Voici une liste plus exhaustive pour les intéressés.
Vous noterez que je n'ai pas encore précisé le port utilisé par l'application cliente. Contrairement à ce que vous auriez pu penser, le port sur lequel l'application cliente fait sa requête n'a pas à être identique au port de l'application serveur.
Par exemple, un paquet IP envoyé par votre navigateur au site Microsoft aurait les paramètres suivants :
IP du destinataire : 207.46.131.135 (Microsoft) port serveur web : 80 IP de l'expéditeur : 195.2.200.149 (votre adresse IP) port client web : 7597
Ces quelques points un peu éclaircis, il me reste encore à vous dire quelques mots sur les types de protocoles IP présents sur Internet. Comme vous ne le savez peut-être pas, il y a deux types fondamentaux de protocoles IP : le protocole TCP et le protocole UDP.
Il est temps maintenant d'expliquer un des façon de partager une connexion à Internet. Voici donc la manière dont fonctionne un serveur proxy.
Considérons un réseau local connecté à un serveur proxy lui-même connecté à Internet :
Admettons qu'un ordinateur du réseau local veuille télécharger une page web sur Internet. Pour cela il ouvre une connexion vers le proxy, sur le port défini pour le service concerné (ici http), et lui fait la demande de la page web. A son tour, le proxy ouvre une nouvelle connexion vers le serveur d'Internet concerné par la demande, récupère l'information et la retransmet aussitôt à l'ordinateur local.
Dans ce schéma, vous constatez que nous sommes en présence d'une double connexion.
L'avantage d'un serveur proxy est de pouvoir stocker dans un cache local les pages web visitée. Ainsi, si un ordinateur du LAN désire voir une page qui a déjà été téléchargée préalablement, le proxy est capable de fournir la page demandée directement depuis son cache local, ce qui est beaucoup plus rapide et économise le trafic sur Internet.
D'une manière plus générale, vous comprenez que la tâche du serveur proxy est de rester attentif à toute connexion entrant chez lui sur des ports bien précis que vous avez configurés. Vous pouvez aussi voir cela d'une autre façon : le serveur proxy "n'écoute" pas toutes les connexions; il ne s'intéresse qu'à celles pour lesquelles il a été configuré. Cette limitation a des avantages et des désavantages :
Dans la partie 'Pratique', j'explique comment mettre en place un serveur proxy sur un système Microsoft (Windows 9x ou NT).
Il existe à mon goût une manière plus simple et plus élégante de partager une connexion à Internet que l'utilisation d'un serveur proxy : le routage NAT (Network Address Translation)
Le routeur NAT, tout comme un serveur proxy, est une machine à cheval sur le réseau Internet et sur le réseau local que vous voulez y connecter; il fait office de passerelle (gateway).
Le routeur NAT, comme son nom l'indique, fait réellement du routage de paquets IP, c'est à dire qu'il transmet bien les paquets reçus par un ordinateur du LAN vers Internet (et inversément), contrairement à un serveur proxy qui ouvre une seconde connexion.
L'ingéniosité du routage NAT vient de sa manière de gérer plusieurs ordinateurs locaux d'adresses IP de type 192.168.0.x, de transmettre leurs paquets spécifiques vers Internet, et de leur redistribuer spécifiquement les paquets reçus. L'astuce est la suivante :
Lorsque le routeur NAT reçoit un paquet IP d'un des ordinateurs du LAN, il en modifie :
Le routeur NAT logge ensuite ces informations dans une table.
Lorsque le serveur d'Internet répond à la requête et renvoie des paquets IP sur le routeur, ce dernier vérifie dans ses tables qu'il possède bien l'entrée correspondante (par rapport au port de l'application cliente), puis y réécrit les coordonnées (IP + socket) de l'ordinateur du LAN. Le paquet IP peut ainsi rejoindre sa destination dans le LAN.
Exemple : votre ordinateur du LAN d'adresse IP 192.168.0.7 veut accéder à la page web du serveur www.machin.com (d'adresse IP 124.40.67.43) via un routeur NAT travaillant sur l'IP 192.168.0.1 (locale) et l'IP 195.200.2.149 (Internet). Les deux tableaux suivants montrent précisément ce qui se passe.
Etablissement de la connexion
Ordinateur |
Interface |
Coordonnées du paquet IP |
|
|
destinataire : 124.40.67.43, 80 |
expéditeur : 192.168.0.7, 7364 |
||
LAN |
|
|
|
|
destinataire : 124.40.67.43, 80 |
expéditeur : 192.168.0.7, 7364 |
||
|
destinataire : 124.40.67.43, 80 |
|
expéditeur : 195.200.2.149, 61005 |
||
Internet |
|
|
|
|
destinataire : 124.40.67.43, 80 |
expéditeur : 195.200.2.149, 61005 |
Transfert des données
Ordinateur |
Interface |
Coordonnées du paquet IP |
|
|
destinataire : 195.200.2.149, 61005 |
expéditeur : 124.40.67.43, 80 |
||
Internet |
|
|
|
|
destinataire : 195.200.2.149, 61005 |
expéditeur : 124.40.67.43, 80 |
||
|
destinataire : 192.168.0.7, 7364 |
|
expéditeur : 124.40.67.43, 80 |
||
Internet |
|
|
|
|
destinataire : 192.168.0.7, 7364 |
expéditeur : 124.40.67.43, 80 |
Quelques remarques s'imposent :
Dans la partie 'Pratique', j'explique comment mettre en place un routeur NAT sur un système Microsoft (Windows 9x ou NT).
(C) 02/02/2008 - Dernière modification : 30/10/2013 - F4CVM / Pascal