====== Qu'est-ce qu'Internet ? ====== ===== Internet - Le routage ===== Comprendre ce que nous faisons lorsque nous utilisons Internet. Un réseau est le transport d'une information d'un point **A** à un point **B** via des //nœuds// d'acheminement ((des lieux intermédiaires au destinataire où aboutissent une ligne et d'où plusieurs lignes différentes peuvent être utilisées pour l'acheminement suivant)) reliés entre eux. Internet utilise la commutation de paquet, par opposition à la commutation de circuit. ==== Commutation de circuit ==== === Un exemple simple de réseau de circuit : === Un commutateur électrique qui allume ou éteint une ampoule créant et réservant ainsi un circuit en continu. :-) === Le téléphone un exemple type de réseau par circuit === Le téléphone crée une ligne en continuité, de nœud en nœud, du point **A** au point **B** et en __réserve le circuit dans sa totalité__ tout le temps que durera l'appel. Le réseau par circuit du téléphone - doit connaître l'intégralité des nœuds du réseau, - créer une ligne unique, réservée, - la maintenir constante entre tous les nœuds, tout le temps de la communication, que l'on se parle ou non. Le réseau par circuit ne permet pas la communication simultanée __et différenciée__. Le circuit par commutation de circuit __planifie et maintien le circuit__ ouvert entre le point **A** et le point **B**, tout le temps de la communication. Par exemple, les propos de **A** destinés à un point **F** seraient alors mêlés à tous les propos simultanés des point **C** ou **D** qui seraient ouverts et reliés au même circuit. \\ //Ça arrive, hein !// :-). ==== Commutation de paquet ==== Pour acheminer un fichier, Internet utilise une ligne du point **A** à un premier nœud et y envoie un paquet((une partie du fichier total. Par rapport au téléphone, un paquet représente un millième de seconde de conversation)) numéroté, sans planification pour la suite de l'acheminement jusqu'au destinataire. \\ Le nœud choisi va acheminer ce paquet vers un nouveau nœud de son voisinage immédiat, toujours sans planification de la totalité du chemin. \\ Ce nouveau nœud agira de même, les suivant aussi, jusqu'à destination. Chaque paquet du même fichier passera ainsi entre des nœuds qui pourront être différents de ceux ayant traité le paquet précédent, avant de parvenir au point **B** qui se chargera lui de les remettre en bon ordre afin de recréer le fichier originel à la réception. Le réseau par paquet achemine le fichier : - en le découpant par paquets numérotés, - sans prédictibilité((en ne prenant connaissance de la disponibilité que d'un seul nœud d'acheminement, sans se préoccuper des nœuds suivants jusqu'à destination)), - avec un risque de perte occasionnel. Cela permet des communications multiples et simultanées, dans un parfait mélange. Par exemple, de **A**, lors de l'expédition en parallèle d'un fichier vers **B** et d'un autre vers **F**, les paquets de chacun des fichiers pourront être mêlés lors de leurs acheminement, mais arriveront bien différenciés à chacun de leurs ports respectifs. ==== Récapitulatif ==== - Sur le minitel par exemple, on ne pouvait se connecter que sur un site à la fois, alors qu'avec Internet, on peut se connecter sur plusieurs sites web en même temps. - Sur Internet, on raisonne paquet par paquet et non par circuit en continue. - Le même terminal (notre pc) peut communiquer en parallèle avec plusieurs serveurs différents sans que cela se mélange. - Lorsque l'on télécharge un fichier, le serveur envoie de toutes petites parties du fichier total par paquets indépendants, les bouts sont numérotés pour être reconstruits à la destination et rendre le fichier dans sa totalité. Sur Internet, __il n'existe pas de continuité dans le circuit utilisé__. Les //paquets// sont acheminés indépendamment les uns des autres. === Nota historique === La commutation par paquet vient de France (Cyclade), Internet qui l'utilise vient des États Unis. ===== Bases de routage ===== Comment chaque paquet se transmet. ==== Routage statique ==== On dit à une machine de communiquer tel fichier à tel autre machine par une sortie qui, généralement correspond à votre fournisseur d'accès. C'est le premier passage obligé. \\ //En image, cela correspond au cheminement allant de la sortie d'une voiture depuis le garage jusqu'au portail avant la voie publique.// Une route s'écrit par exemple ainsi : 192.168.0.0/24 via 1.2.3.4 Cela veut dire : Pour faire suivre à telle adresse IP, il faut faire suivre à telle personne. //En français// : pour toutes les destinations vers **machin** jusqu'à **truc**, il faut passer par ça. Pour un ordinateur, cela s'écrit en binaire ainsi : \\ de **3232235520** à **3232235775** via **16909056** Ce binaire pour vous dire que : * il faut savoir que les ordinateurs ne parlent qu'en chiffres, * les opérations de routage ne parlent que de chiffres //plus petits que...(un chiffre)// ou //plus grand que...(un chiffre)//. //Very easy, is'nt ?// ;-) Donc, une **route** (nommée plus justement **préfixe**) c'est : \\ * pour les adresses de tant à tant, c'est par là (car ils sont plus petits que...), * pour les adresses de tant à tant, c'est par là (car ils sont plus grands que...). === Conclusion === Avec le routage statique, chaque nœud du réseau connait les adresses précises de ses voisins et par quels voisins il faut passer pour joindre tel autre bout du réseau. C'est tout. === Exemple === Une **adresse** (une destination, ou une source, ou un nœud d'acheminement...), c'est par exemple : 192.168.0.12 Une route ou un **préfixe** (ce qui désigne une plage d'adresses.) c'est : 192.168.0.0/24 Une **passerelle** (Par comparaison avec le courrier, le bureau de poste) c'est : 1.2.3.4 ===== Les routeurs ===== Une //BiduleBox//, est un routeur simple qui a : - 1 passerelle (celle du FAI((fournisseur d'Accès Internet)) ), - 2 adresses , - 3 préfixes-routes. Un routeur plus gros, qui correspondrait par exemple aux nœuds des acheminements sur Internet, possède environ 150 passerelles et 300.000 préfixes. Les préfixes connus de notre BiduleBox sont : * les IP (adresses) de nos pc reliés à la BiduleBox. * la Box * Le routeur du FAI * Internet La Box a une première route : \\ 192.168.0.0/24 C'est la route directe vers nos pc personnels. \\ Lorsque la Box reçoit des messages à destination de ces préfixes, elle sait que c'est de ce côté là qu'elle doit les //router// : direction la patte 2. \\ La Box a aussi un interlocuteur connu, c'est le routeur du FAI. Pour lui : direction la patte 1. Ça veut dire que tout ce qui n'est pas pour la patte 2 (nos pc perso) sera pour la patte 1, le FAI et Internet derrière. Ainsi, dans notre routeur BiduleBox : - Toute provenance vers les préfixes de nos pc iront **patte 2**. - Toute provenance vers les 4 milliards de préfixes restant iront sur la **patte 1** et Internet. Le nœud que représente notre routeur BiduleBox connait parfaitement les nœuds (nos pc et le routeur du FAI) de proximité immédiate, et seulement ceux-là. :-) ===== Le routage dynamique ===== Pour créer un routage dynamique, il est nécessaire de "nommer un réseau" (son **AS** : //Autonomus System//) c'est le numéro de l'opérateur. Le calcul du routage se fait par un échange d'information des **AS** qui se disent mutuellement. Par exemple : \\ //Je sais joindre telle adresse en trois sauts, via :// tel **AS** -> tel **AS** -> tel **AS**. Les routeurs passent leur vie à se partager les nouvelles routes pour joindre la même adresse. \\ En cas de pépin, ils précisent également la nouvelle route à emprunter. C'est à dire qu'un routeur va apprendre des **5 routeurs** qui le côtoient chacune des **300.000 routes** qui lui sont proposées et va prendre la meilleure route possible entre chaque **AS** pour l'acheminement des paquets. ===== Le nœud d'échange ===== C'est le rassemblement dans un bâtiment de toutes les lignes d’interconnexion des routeurs sur un seul point. Autres noms : * GIX((Global Internet Exchange)) * IXP((Internet Exchange Point)) * peering((Accord Internet d'échange)) Cela permet de se raconter un très grand nombre de routes avec un minimum de câbles de connection. Chacun des opérateurs (AS) gère et connait l'acheminement dans son réseau. Lorsque deux AS s'échangent des routes possibles, on dit qu'ils sont interconnectés. - Chacun annonce des routes - Chacun apprend des routes. Pour permettre le lancement des échanges, chaque routeur commence par annoncer : - son nom (numéro), - son adresse précise (IP), - les plages d'adresses (les routes - prefixes) qu'il contient et gère directement via les BidulesBox qu'il fournit. Immédiatement, tous les **AS** qui le cotoient savent : - son nom - son adresse précise, - toutes les plages d'adresses qu'il contient et lui communiquent les leurs. Pour l'**AS-1** * Telle plage d'adresses. * Telle plage d'adresses. * Telle plages d'adresses. * .... Pour l'**AS-2** * Telle plage d'adresses. * Telle plage d'adresses. * Telle plage d'adresses. * .... etc. //C'est pas le meilleur des mondes possibles ça ?// ;-) ===== Quelques termes ===== ==== Peering ==== Le peering est l'échange des routes locales uniquement contenues dans chacun des AS interconnectés. En règle générale, ce service (peering ou GIX OU IXP...) est gratuit. ==== Transit ==== Le Transit, c'est quand deux opérateurs (AS) s'annoncent des routes qui ne sont pas les leurs, ce sont des adresses qui ne sont pas à destination du second réseau mais vont transiter quand même par son réseau pour arriver à la sortie vers le réseau d'un autre AS, qui lui-même, éventuellement, sera utilisé comme transitaire, jusquà l'AS final qui distribuera le paquet à l'adresse dont il a la gérance. Typiquement, entre un opérateur de France et un aux États Unis, les paquets vont systématiquement transiter par 3 ou 4 AS. Ce service est systématiquement facturé. ==== Symétrie du trafic ==== La symétrie du trafic est la quantité envoyée entre les réseaux et ne peut pas être identique partout. Ce point n'a d'intérêt que commercialement. :-) Par exemple un fournisseur de contenu comme //Youtube// sera davantage un expéditeur de paquets plutôt qu'un récepteur, sinon marginalement. Des négociations privées sont en cours pour faire cesser ou bien pour monnayer ces trafics unilatéraux. Trafics qui n'ont par ailleurs aucune incidence technique, hein ! :-) ==== Volume ===== Le volume est la quantité de paquets traitée par une AS. Par un lien sur lequel on va émettre des millions de videos tous les jours, les AS qui les véhiculent ont tout intérêt à s'interconnecter directement pour éviter les trafics monnayés. === Négociations des AS === Actuellement, les négociations entrent les AS portent sur ces trois points : - Le peering - La symétrie du réseau - Le volume échangé. ===== Résumé ===== On route toujours des paquets. Même pour lire une vidéo, où on a besoin d'un flot en continue, avec un réseau qui fonctionne par paquets, il suffit d'accumuler un premier nombre de paquets dans un buffer, puis de commencer la diffusion. \\ Au cas où un paquet vient à se perdre, le routeur a tout le temps d'en redemander un exemplaire pour conserver l'approvisionnement des paquets en continue et maintenir le visionnage de la vidéo sans interruption. ==== Le routeur pour téléphone. ==== Un routeur pour téléphone est épouvantablement plus compliqué car il doit prendre connaissance de tout le réseau avant de créer et construire un circuit. ==== Le routeur pour Internet. ==== Le routeur pour Internet ne fait que deux choses, des milliards de fois mais seulement deux. Il décide d'envoyer le paquet reçu là ou là, selon l'adresse contenue qui est inférieure à ou supérieure à un chiffre donné. C'est tout. ---- Un routeur pour Internet est universel. * Il se contente de transporter sans comprendre qui que quoi du paquet transporté. ---- Il n'y a pas de nature d'adresse. * Il n'y a pas des adresses d'un type pour serveurs et des adresses d'un type différent pour clients. ---- Le réseau transporte des paquets. Il ne sait pas qui est **client** et qui est **serveur**. \\ //Par contrario, sur un réseau d'eau (qui est en fait un réseau par circuit) on sait qui est le //**serveur**// d'eau et qui est l'utilisateur //**client**// de l'eau.// ---- Ce qui fait Internet, ce sont les 40.000 AS qui sont interconnectés et qui utilisent le protocole IP pour nommer leurs adresses. \\ Leur travail le plus important consiste à éviter les doublons d'adresse entre eux tous. :-) Tous les autres réseaux (IP ou autres) sont des réseaux privés qui utilisent des adresses qui ne sont pas celles utilisées par les AS. ---- On ne signifie jamais ce que contient les paquets. ---- Plusieurs machines connectées sur le réseau Internet peuvent s'interconnecter en même temps. (Par exemple sur facebook). ;-) ---- Une machine peut être **serveur** et **client**, c'est à dire que l'on peut consulter plusieurs sites et envoyer des pages web à des consultants, tout cela en même temps. ===== La numérotation des paquets. ===== Pour savoir quel paquet va avec quel paquet et non pas un autre, le plus simple en informatique est de numéroter les paquets. Pour savoir quel paquet va avec quel paquet et non pas un autre, le plus simple en informatique est de rajouter un numéro sur les paquets. \\ C'est ce que l'on appelle un numéro de port. \\ En fait le numéro de port est simplement un identifiant de la connection. \\ La machine indique : tel connection porte tel numéro chez moi. ==== Exemple avec une requête web : ==== Si nous tapons cette url que nous cherchons : \\ %%http://www.fdn.fr/minitel.avi%% Voilà ce que cela donne sur le réseau : A5038 ---> D.53 : où habite www.fdn.fr ? Ce qui veut dire : - Ma machine emet depuis le port numéro (par exemple) : A5038 (quand on emet on utilise toujours un port au hasard) - à destination du serveur D (comme dns) - sur le port 53 - une requête qui dit : où habite %%http://www.fdn.fr%% Si le serveur ne connait pas le port où il faut renvoyer la réponse, il va retourner la réponse sur la bonne machine, mais pas nécessairement pour la bonne question. Le serveur répond : D.53 ---> A5038 : il est en 80.67.169.12 (W) (W pour web). Soit : - port du serveur : D.53 - port de la requête de ma machine : A5038 - IP de l'AS du destinataire : 80.67.169.12 (W) cette AS se chargeant de communiquer la requête à l'adresse finale dont elle possède la gérance. La machine envoie alors par un autre port, le port 80 : A.5039 ---> W.80 : donne-moi le fichier /minitel.avi Retour : W.80 ---> A.5039 : //tiens, gaffe, c'est long ! Prévoir plusieurs paquets, environ 600.000 !// ===== Résumé ===== Vu du réseau de transport, il n'y a pas de différence structurelle entre les paquets de la question et ceux de la réponse. \\ La seule différence qui se fera, c'est au niveau des ports utilisés. * Autant le numéro de port du **client** n'a pas d'importance au-delà de la connection établie, sinon pour permettre l'acheminement de la bonne réponse à la bonne question, pas plus. \\ Il peut donc être indifférent. * Autant le numéro de port du **serveur** est vital. **Par exemple :** Si les serveurs **Web** et **DNS** sont //la même machine//, * sur le port **53** c'est le port DNS des noms de domaine, * sur le port **80**, c'est bien le port du serveur Web que j'interroge. Il est donc important que les numéros de port des applications sur les serveurs, soient fixés. ===== Les ports standardisés des serveurs. ===== * Port 53 = DNS (l'annuaire) Si vous enlevez le DNS, vous êtes obligé de taper les adresses des machines * Port 80 = le web * Port 443= le web chiffré * Port 25 = l'envoie du mail * Port 110 = sert à relever une boîte au lettre * Port 179 = BGP (routage) C'est le port utilisé par les routeurs pour se raconter leur vie. * etc... Il y a en tout une centaine de ports réservés. ===== Traduction d'adresse ===== Les paquets sont généralement partis dans l'ordre, mais, du fait des aléas du réseau, ils arrivent dans un ordre différents. ==== Un réseau local privé ==== Chez nous, on peut avoir besoin d'adresses pour : * ordinateur * portable-un * portable-une * téléphone-un * téléphone-une * imprimante Tout cela fait 6 adresses. \\ Multiplié par le nombre d'internaute, environ deux milliards, cela fait plus de 12 milliards d'adresses. \\ Il n'y a que 4 milliards d'adresses possibles sur Internet actuellement. \\ Pour traiter cela, on choisi des blocs d'adresses qui sont interdites sur le réseau. \\ Exactement comme il y a des numéros de téléphone que vous n'avez pas le droit d'avoir, par exemple, les **00** qui sont réservés pour l'international. Il n'y a pas non plus de numéros de téléphone par **99**... Il y a des plages qui sont pas autorisées ou qui sont réservées à des usages internes. De la même manière, sur le réseau, il y a des plages d'adresses qui sont interdites __sur le réseau publique__. \\ C'est à dire que les **serveurs** savent que s'il y a des paquets qui utilisent une de ces //adresses//, en provenance ou à destination, il doit les jeter. Ces adresses sont correctes, juste c'est l'application d'une convention qui dit : "//Ces adresses-là, on ne les distribue à personne.//" \\ Nous pouvons donc être certain qu'aucune de ces adresses ne sont utilisées par personne sur Internet, et c'est pourquoi nous pouvons les utiliser chez nous, en privé. Nous pouvons ainsi relier nos six appareils connectés cnous //en réseau privé// avec pour chacun __une adresse privée__ qui n'interférera jamais avec __une adresse publique__ sur le web. \\ Il n'y a aucune route d'annoncée pour ces adresses et, sur le web, les serveurs vont immédiatement en jeter les paquets. Une adresse privée ne donne aucun moyen de parler en public. === Exemple de requête depuis une adresse privée et traitée par notre BiduleBox === Depuis une adresse privée : 192.168.0.42 Vers le port xxx (n'importe quoi) à destination d'une adresse publique : 80.67.109.12.80 La BiduleBox note : 6734 est 192.168.0.42.5076 (5076 est le port pour cette requête) Puis elle efface les adresses privées et met la vrai adresse de la BiduleBox en spécifiant le numéro de port qu'elle a réservé pour le retour de la requête : 80.67.176.93.6734 vers 80.67.169.12.80 Ce paquet à bien maintenant une adresse publique client (la demande) et une adresse publique serveur. Le serveur à l'adresse publique : 80.67.169.12.80 répond à l'adresse publique de la BiduleBox : 80.67.176.93.6734 Pas du tout à destination de la machine qui a demandé la page. La BiduleBox regarde ses notes et voit que le port **6734** est pour la machine //192.168.0.42.5076// et le lui remet. La machine n'a pas connaissance des bidouilles faites, qu'on a changé le destinataire de la requête, changer l'expéditeur, tout bricolé dans le milieu, et pourtant, cela arrive tout bien au même endroit. C'est ce que fait votre routeur personnel quand il permet du partage de connexions. Lui il a une vraie connexion, et il la prête aux machines qui sont connectées dessus. Un modem, c'est juste une partie qui gère le traitement du signal, il n'a pas d'adresse IP. Il y a un modem, et il y a un routeur. L'ensemble s'appelle d'ailleurs un **Modem-Routeur**. Ça marche en tant que machine client, cela ne permet de stocké un serveur. L'adresse IP : 192.168.0.42.80 n'est pas joignable de l'extérieur. Ce petit artifice d'utilisation vous empêche d'avoir un serveur. Vous pouvez consulter des données à l'extérieur, vous ne pouvez pas faire consulter des données depuis l'extérieur à cette adresse-là : 192.168.0.42.80 C'est ce que l'on appel de la traduction en entrée.