Aujourd’hui, je vous présente un article sur ce qu’est Internet, et comment ça marche. Quand je parle d’Internet, je ne parle pas du World Wide Web, des sites Internet, je parle d’Internet en tant que réseau informatique.
Définition
Commençons par une citation tirée de Wikipédia :
« Internet est un système mondial d’interconnexion de réseaux informatiques, utilisant un ensemble standardisé de protocoles de transfert de données. C’est donc un réseau de réseaux, sans centre névralgique, composé de millions de réseaux aussi bien publics, privés, universitaires, commerciaux et gouvernementaux. Internet transporte un large spectre d’information et permet l’élaboration d’applications et de services variés comme le courrier électronique, la messagerie instantanée et le World Wide Web. »
Un réseau informatique, c’est quoi ? De manière basique, c’est quelque chose qui permet à plusieurs ordinateurs de communiquer entre eux, de manière simultanée (contrairement à un réseau téléphonique qui ne permet de communiquer qu’avec une seule personne en même temps). Internet, c’est donc la mise en commun de milliers de réseaux informatiques différents. Ça marche parce que tous ces réseaux utilisent les mêmes normes pour communiquer entre eux.
Update : paquets et routeurs
Sur un réseau informatique, l’information est découpée en petits « paquets ». Quand vous téléchargez une vidéo, cette dernière est trop grosse pour être envoyée d’un coup du serveur à votre ordinateur. Le serveur découpe donc cette dernière, envoie toutes les pièces du puzzle indépendamment à votre ordinateur et votre ordinateur reconstitue le puzzle à la fin.
Les composants physiques principaux d’un réseau sont les routeurs. Ce sont des ordinateurs un peu spéciaux dont la tâche principale est de décider où va un paquet donné. Imaginez un employé de la SNCF qui a pour tâche de bien aiguiller les trains, et bien c’est à peu près pareil en remplaçant les trains par les paquets d’information : « Ce train-là va à Paris, je l’envoie donc sur la voie 3. Ce train-ci va à Brest, je l’envoie sur la voie 1. »
Ce qui compose Internet
Internet étant le regroupement de milliers de réseaux, Internet n’a pas de centre : il n’y a pas un point par lequel transite toute l’information. En réalité, Internet est subdivisé en plusieurs entités appelées Autonomous Systems (AS). Les AS sont (généralement) des entités administratives distinctes : entreprises, universités… Par exemple le MIT et KTH ont leur propre numéro d’AS, tout comme Orange, Google et le FBI. Ces AS sont interconnectés. Bien sûr chaque AS n’est pas connecté avec tous les autres (il y en a environ 60 000), mais chaque AS a quelques voisins qui eux même sont connectés à d’autres AS, ainsi de suite… Donc, quand un message veut aller d’un AS à un autre, il suit un chemin et va d’AS en AS jusqu’à arriver à destination. Par exemple, prenez ce traceroute (ça indique le chemin entre moi et la destination, ici KTH) :
$ traceroute www.kth.se
traceroute to lvs-vip-6.sys.kth.se (130.237.32.143), 64 hops max, 52 byte packets
1 (192.168.X.X) 13.949 ms 10.239 ms 1.497 ms
2 something.tele2.se (X.X.X.X) 1.498 ms 2.508 ms 1.476 ms
3 avk1-pe-1.port-channel2.tele2.net (130.244.9.177) 5.232 ms 7.709 ms 1.949 ms
4 avk-pe-1.tengigabiteth2-4.tele2.net (130.244.49.249) 3.113 ms 1.893 ms 2.150 ms
5 avk1-core-1.bundle-ether4.tele2.net (130.244.49.28) 3.612 ms 6.571 ms 3.659 ms
6 netnod-ix-ge-b-sth.sunet.se (194.68.128.19) 1.981 ms 2.173 ms 2.009 ms
7 m1tug-ae0-v1.sunet.se (130.242.83.42) 1.933 ms
t1fre-ae0-v1.sunet.se (130.242.83.37) 2.844 ms
m1tug-ae0-v1.sunet.se (130.242.83.42) 2.340 ms
8 m1fre-ae1-v1.sunet.se (130.242.83.45) 2.384 ms
m1fre-ae0-v1.sunet.se (130.242.83.50) 2.458 ms
m1fre-ae1-v1.sunet.se (130.242.83.45) 3.149 ms
9 ls-kth-br1.sunet.se (193.11.0.194) 2.399 ms 5.197 ms 5.390 ms
10 cn6-br1g-p2p.gw.kth.se (130.237.0.2) 2.880 ms 2.571 ms 2.515 ms
11 vss1-cn6-p2p.gw.kth.se (130.237.211.117) 446.094 ms 384.580 ms 271.835 ms
12 lvs-vip-6.sys.kth.se (130.237.32.143) 3.833 ms 2.968 ms 2.978 ms
Les lignes 2 à 5 indiquent que le chemin passe d’abord par l’AS de Tele2 (mon fournisseur d’accès à Internet), ensuite il passe par sunet (6 à 9) et arrive ensuite à KTH (10, 11 et 12). La question qui se pose maintenant, c’est la manière dont les AS communiquent entre eux. La réponse tient dans l’utilisation de BGP (Border Gateway Protocol).
BGP, entre les AS
Update : Vous vous souvenez de ce qu’est un routeur ? Bien. Il existe en réalité deux types de routeurs : ceux qui sont à l’intérieur d’un AS et ceux qui sont à sa frontière. Ceux qui sont à sa frontière ont la tâche de communiquer avec leurs homologues dans d’autres AS. Ils sont appelés border routers (border = frontière en anglais).
BGP est un protocole utilisé par les « border » routeurs d’un AS pour communiquer avec les border routeurs d’un autre AS. Ces routeurs s’échangent des informations grâce à ce protocole. Ces informations sont des informations de routage. Par exemple, l’AS 2 peut dire à l’AS 1 la chose suivante : « je sais aller à l’AS 18 en passant par l’AS 5, puis l’AS 10, puis l’AS 8, puis l’AS 18 ». Si dans le même temps, l’AS 3 dit à l’AS 1 « je sais aller à l’AS 18 en passant par l’AS 8 puis par l’AS 18 » alors l’AS 1 saura qu’il vaut mieux pour lui envoyer ses messages à l’AS 3 plutôt qu’à l’AS 2 s’il veut joindre l’AS 18.
À son tour, l’AS 1 va informer ses voisins des AS qu’il peut joindre, lui, en ajoutant son propre numéro à la liste. De manière assez intuitive, ce mécanisme permet de trouver le plus court chemin entre deux AS.
Là où ça se complique c’est que trouver le plus court chemin entre deux AS n’est qu’un des buts de BGP. Ce protocole permet aussi de définir des politiques comme « je ne veux pas que mon traffic passe par l’AS 3, donc même si le chemin est plus court par là, je vais quand même passer par l’AS 2 ». Les différentes règles que l’on peut paramétrer sont passablement complexes, je ne vais donc pas rentrer dans les détails. Mais la raison d’être de ces dernières est essentiellement économique : le traffic coute cher (en matériel, en accords commerciaux avec les autres AS), donc moins on en a, le mieux on se porte.
Comme je viens de le mentionner, il existe des accords commerciaux entre les différents AS. Ces accords commerciaux dépendent de la « symétrie » du traffic entre les deux AS. Si la bande passante utilisée dans un sens est à peu près la même que celle utilisée dans l’autre sens alors il se peut qu’il n’y ait pas d’argent échangé. Par contre s’il y a une grosse asymétrie alors, ça devient problématique. Prenons un FAI, type Orange, et un fournisseur de contenu, type YouTube. Le débit YouTube vers Orange est beaucoup plus important que le débit Orange vers YouTube parce que les abonnés de chez Orange aiment les vidéos de YouTube et que les employés de YouTube n’ont à peu près rien à faire du contenu hébergé chez Orange. YouTube est donc perçu comme une nuisance chez Orange, puisque générateur de traffic, donc de coûts, de problèmes etc. Orange va alors faire payer la différence à YouTube.
Bon, en vrai, je ne sais pas si Orange et YouTube sont connectés directement, mais c’était à titre d’exemple.
À l’intérieur d’un AS
Une fois que le paquet d’information est arrivé dans le bon AS, il faut encore qu’il soit distribué à la bonne adresse. Comment est-ce que Free sait où amener ce bout de vidéo que vous venez de demander ? Et bien les routeurs de Free utilisent des protocoles de routage. Les trois plus connus sont RIP, OSPF et IS-IS. Leur fonctionnement est assez différent et pas très important pour ce que je veux expliquer. La seule chose importante à savoir, c’est qu’ils font à peu près la même chose.
Chaque routeur est responsable pour une plage d’adresse (généralement ce sont des adresses IP, mais ça peut aussi être des adresses IPv6 ou encore autre chose). Chaque routeur dit « Moi, je suis responsable pour les adresses entre X et Y, si vous avez des paquets pour une de ces adresses, envoyez-les moi ». Ensuite, le protocole de routage se charge de transmettre ce message à tous les routeurs à l’intérieur de l’AS. La différence principale entre RIP, d’une part, et OSPF et IS-IS, d’autre part, c’est que dans les deux derniers, chaque routeur connait exactement le routeur de destination d’un paquet alors que dans RIP, il ne connait que la direction dans laquelle il faut envoyer le paquet.
Entre vous et votre FAI
Chez vous, vous avez un modem (peut-être caché dans une box, mais vous en avez un). Ce modem est connecté directement à un routeur. Votre FAI assigne une adresse au modem (adresse qui est dans la plage de responsabilité du routeur). Et c’est à peu près tout ! Une fois que vous avez votre adresse, vous pouvez communiquer (théoriquement) avec le monde entier. Pour mieux comprendre, nous allons voir un exemple entier.
Exemple & résumé
Vous êtes abonné chez le FAI Foo (qui est un AS). Vous voulez accéder au site internet www.site.com. Qu’est-ce qui se passe exactement ? Revoyons toutes les étapes :
- Votre navigateur détermine l’adresse IP du site www.site.com grâce à une requête DNS. La réponse est quelque chose comme « www.site.com se trouve à l’adresse a.b.c.d ».
- Votre ordinateur envoie un message « GET / » à l’adresse a.b.c.d. Ce message est contenu dans un paquet qui porte donc comme adresse de destination a.b.c.d.
- Ce paquet arrive au premier routeur de Foo (celui qui est le plus proche de vous). Là, plusieurs choses peuvent se passer, mais la plupart du temps, ce routeur a une règle du genre « si je ne connais pas l’adresse de destination d’un paquet, alors je l’envoie à cet endroit » (c’est une route par défaut). Cette destination par défaut, c’est généralement un border router (un de ceux qui utilisent BGP) et lui sait où il faut envoyer le paquet qui a l’adresse a.b.c.d.
- Il sait que l’adresse a.b.c.d se trouve chez l’AS Bar. Il sait que pour joindre Bar, il doit envoyer le paquet à Toto qui, lui, le transmettra à Tutu qui le transmettra à son tour à Bar. Bar envoie donc le paquet à l’AS Toto.
- Toto reçoit le paquet et sait que pour joindre a.b.c.d, il doit envoyer le paquet à Bar à travers Tutu. Il envoie donc le paquet à Tutu qui fait la même chose et envoie le paquet à Bar.
- Bar reçoit le paquet et voit que l’adresse de destination est une de ses adresses à lui. Il cherche lequel de ses routeurs est responsable pour cette adresse et route le paquet jusqu’à lui.
- Ce routeur envoie alors le paquet à www.site.com.
- www.site.com traite la requête et veut répondre avec une page web. Cette page web va être envoyé à votre adresse, x.y.c.z, qui était contenue dans le champs « expéditeur » du premier paquet. Cette page web est aussi contenue dans un paquet et ce paquet va être acheminé chez vous exactement de la même manière.
