mardi 27 octobre 2015

Les bases pour comprendre le Web - Episode 1

Monsieur "Tout le monde" utilise le web aujourd'hui, en entreprise comme pour les loisirs, et comme pour beaucoup d'outils du quotidien ignore les bases mêmes de son fonctionnement ; et c'est tant mieux dirons certains. Après tout qui se soucie du fonctionnement de sa télé ?

Cependant d'autres aiment bien comprendre, par simple curiosité ou pour des usages un peu plus poussés, et tout le monde n'a pas étudié l'informatique durant sa scolarité ; et quand bien même, vu la vitesse à laquelle l'informatique évolue et le niveau de l'enseignement informatique dans les collèges et lycée (du moins si je m'en réfère à mon expérience personnelle), une petite mise en lumière peut s'avérer utile.

Je me suis donc attelé à ce difficile exercice, avec comme d'habitude un angle d'attaque qui vise à démystifier les choses : l'informatique ce n'est pas compliqué dans les concepts. La mise en oeuvre peut être complexe mais si on reste au niveau d'abstraction pertinent pour un utilisateur, il n'y a rien de difficile ; en fait, le plus dur est de lever les freins psychologiques de ceux qui sont persuadés que c'est effroyablement compliqué et qu'ils ne comprendront jamais.

Introduction

Notre démarche tient en 3 points, et 3 articles
  1. Pour comprendre le web, il faut comprendre Internet (le réseau Internet)
  2. Pour comprendre Internet, il faut comprendre internet (la technologie réseau internet)
  3. Pour comprendre internet, il faut comprendre les bases de l'informatique distribuée

Vous aurez remarqué que j'écris Internet avec un I majuscule pour désigner le réseau Internet, et internet avec un i minuscule pour désigner la technologie sous-jacente. Je garderais cette convention tout le long de cet article.


Notions de base en informatique distribuée

Internet c'est de l'informatique, et si on veut comprendre un peu comment ça marche, on ne peut pas faire l'économie d'apprendre quelques notions de base. Rien de bien compliqué je vous rassure, on ne prononcera même pas le mot binaire.

Informatique distribuée ?

L'informatique distribuée c'est un modèle d'architecture (le modèle principal de nos jours) dans lequel les programmes qui constituent un SI (Système d'Information, ensemble de matériel et logiciels qui servent à gérer des données et des traitements) sont distribués c'est à dire répartis sur plusieurs machines qui se répartissent le travail.

Chaque machine (serveur) héberge un ou plusieurs serveurs logiciels (cf explication sur le modèle client serveur ci-après) qui traitent chacun une partie de la problématique globale. Le fait de répartir les traitements sur plusieurs machines est une source de complexité mais apporte de nombreux avantages en terme de coût et de fonctionnalités par rapport aux architectures précédentes.

Alors justement de quelle architecture précédente parlons nous ? Bien logiquement, en opposition à l'architecture distribuée, on avait une architecture centralisée. En simplifiant fortement, dans une architecture centralisée, au lieu d'avoir plein de machines pas chères (tout est relatif) qui traitent chacune un sous ensemble du problème global, on a une seule machine, très grosse, très puissante et très chère, qui gère tout (ce qu'on appelle les gros systèmes ou les mainframe).

Chaque architecture a ses avantages et inconvénients mais quoi qu'il en soit, aujourd'hui c'est l'architecture distribuée qui est majoritaire, même si les gros systèmes (architecture centralisée) restent encore très présents dans différents secteurs de l'économie pour diverses raisons (le poids de l'existant, une capacité de traitement et une robustesse incomparable mais avec des inconvénients liés : coûts, dépendance forte sur les fournisseurs, manque de souplesse).

En terme de technologies, il y a une opposition entre ces deux mondes et pour autant une complémentarité et des liens. Les informaticiens sont généralement compétents sur l'une ou l'autre des architectures qui requièrent des compétences différentes, mais pour autant les technologies modernes s'inspirent souvent largement des anciennes technologies qui ont largement fait leur preuve et ont eu le temps de prendre du recul pour développer des fonctionnalités très avancées (dont s'inspirent largement les "nouvelles" technologies).

Pour clore le sujet, je dirais qu'en ce qui concerne l'architecture des systèmes informatiques, j'ai le sentiment qu'il y a longtemps qu'on n'invente plus rien et qu'on joue aux chaises musicales : on répartit les problématiques (qui sont toujours les mêmes) de différentes façons selon le dogme du moment, pour le plus grand bénéfice des acteurs majeurs de l'industrie (qui comme par hasard sont les prescripteurs de ces mouvements) ; m'enfin je suis informaticien de profession, je ne vais pas me plaindre, ça me donne du travail :-)

Le modèle client-serveur

C'est un modèle simplissime à expliquer par analogie avec le monde réel : prenez l'exemple du garçon de café (le serveur) et des pochetrons du bar (les clients). Dans ce modèle, on a une multitude de clients qui s'adressent à un serveur en lui demandant de faire quelque chose pour eux (tirer une bière, élaborer un cocktail...). Pour que ça fonctionne, il faut que le serveur soit à l'écoute de ses clients (si il leur tourne le dos et envoie des SMS, ils ne sont pas prêts d'être servis). Le serveur traite les demandes successivement dans l'ordre où il les a reçues, voire plusieurs en même temps si il est doué (pendant que le café infuse, il peut préparer un cocktail). Si il y a un trop grand nombre de clients, certains vont attendre un moment pour avoir leur commande. 

Les clients quant à eux pourraient parfaitement acheter une bière, la décapsuler, et se la verser dans un verre : ils ne le font pas car ils ont choisi de déléguer cette tâche au serveur afin de s'en dégager pour diverses raisons (ils n'ont pas la compétence requise - pour un cocktail disons -, ils n'ont pas le temps car ils racontent leur journée de boulot à leurs potes etc.).

En informatique c'est pareil. 

On a un logiciel serveur qui tourne en permanence et qui est en écoute : il attend de recevoir des requêtes (des commandes pour reprendre notre exemple). Quand il les reçoit, il les satisfait. Si le logiciel serveur est coupé (il a été arrêté pour maintenance, la machine sur laquelle il s'exécute est tombée en panne ...), les clients n'obtiendront jamais satisfaction. Si il reçoit trop de requêtes en même temps, certaines ne seront prises en compte que très lentement.

Et de la même façon, on a des clients qui s'adressent au serveur : ils lui envoient des requêtes (sert moi un demi, fais moi un mojito etc.).

Ce modèle est universel en informatique. Il existe des multitudes de serveurs spécialisés chacun dans un certain type de tâches et auxquels les clients (les logiciels que vous utilisez tous les jours) s'adressent pour réaliser certaines actions.

Déjà, ici vous devez être en mesure de frimer dans les salons en expliquant ce qu'est une attaque informatique de type DDOS. Une attaque DDOS, Distributed Deny Of Service, consiste à saturer un serveur en lui adressant un volume de requêtes supérieurs à ce qu'il peut traiter, depuis de nombreuses machines (d'où le premier D =  Distributed). C'est le type d'attaque informatique le plus répandu et le plus simple à mettre en oeuvre. Bien souvent, les machines en question sont celles de particuliers et elles ont été au préalablement infectées par un virus informatique.

Pour reprendre notre exemple du bistrot, admettons que vous ayez une dent contre le barman qui vous a piqué votre petite amie et que vous vouliez le faire craquer et le mettre en burn-out : vous demandez à des dizaines d'amis de se rendre tous en même temps dans son établissement et de commander au même moment des cocktails compliqués. Il ne vas pas y arriver, il va perdre la face et se suicider,  et votre copine va revenir (ou pas).


La notion de protocole

Hou là, ça devient compliqué ... MEUH non, il suffit d'ouvrir un dictionnaire (vous savez ces drôles de gros bouquins qui sentent la poussière et qui sont pénibles à lire du début à la fin).

"Un protocole est un ensemble de règles sur lequel est basé une communication entre deux parties"

Reprenons notre exemple du bar, situé dans une cité du 93 : pour commandez votre bière, vous allez dire  "vas y fais pas ta tepu, paye ta mousse sale chien galeux", le barman va comprendre et vous servir car vous avez utilisé le bon protocole. Dans un établissement du 16éme arrondissement de la capitale, il aurait probablement demandé au vigile de vous faire sortir. A l'inverse, toujours dans votre bar du 93, si vous aviez dis "Cher Monsieur, auriez vous l'amabilité s'il vous plait de me servir un boisson rafraîchissante à base de houblon", je doute fortement que ça ait fonctionné.

Tout ça pour dire, que le client et le serveur doivent parler dans le même protocole pour se comprendre. 

En informatique, il existe des tonnes de protocole spécialisés selon la nature des activités assurées par le serveur. Pour un serveur chargé d'envoyer des mails par exemple, ce protocole comprendra un vocabulaire du type "envoie tel texte à telle adresse". Pour un serveur chargé de donner la météo, il comprendra un vocabulaire différent du genre "donne moi la température pour telle adresse", si vous lui demandez d'envoyer un mail, il vous répondra "désolé, je ne comprends rien à votre requête" (ou "vas y dégage ou j'te casse la bouche", selon son protocole).

Tous ces protocoles sont normalisés et donc bien définis. Les protocoles d'Internet sont généralement de nature textuelle (d'autres sont exprimés en binaire, zut j'avais dis que je n'utiliserais pas ce mot) et définis au travers d'une RFC (Request For Comment) qui est un processus collaboratif utilisé par des experts en informatique pour faire des propositions de normalisations. Les experts en question constituent l’IETF (Internet Engineering Task Force) qui est un groupe « virtuel » ouvert à tous. 

Modes de communication

La communication entre un client et un serveur peut être :
  • Inter Processus si le logiciel client et le logiciel serveur s'exécutent sur la même machine (un programme qui s'exécute s'appelle un processus en informatique)
  • Réseau si le logiciel client et le logiciel serveur s'exécutent sur deux machines différentes (dans ce cas, les deux machines doivent être reliées, mises en réseau, pour pouvoir communiquer).

Dans notre cas présent, l'étude du Web et d'Internet, ce sont les communications réseau qui vont nous intéresser. Cependant, hormis le fait que ça fait intervenir l'aspect réseau en supplément, c'est exactement la même chose.

L'aspect réseau, nous allons y venir, c'est du matériel et du logiciel supplémentaires qui permettent à des ordinateurs d'échanger des données. 

Ben oui, à l'origine un ordinateur sorti de son carton, il est tout seul dans son coin et il ne peut parler avec personne, le pauvre. Pour qu'il puisse discuter avec d'autres ordinateurs, il lui faut une carte Ethernet et un câble réseau, ou une carte WIFI si on préfère faire passer la communication par ondes radio. Ainsi, il pourra s'adresser à des serveurs pour leur demander divers services tous plus utiles les uns que les autres (pour avoir une messagerie, pour surfer sur le web etc.).

Alors, si vous ne voyez pas ce qu'est une carte Ethernet, vous pouvez lire ce post qui explique grosso modo ce qu'on trouve dans un ordinateur. Sinon, vous pouvez vous contenter de savoir que c'est un des éléments de votre ordinateur qui est chargé de gérer les communications par le biais d'un câble branché sur son connecteur. Il s'agit du connecteur au format RJ45 qui se trouve à l'arrière de votre ordinateur.


Voici un connecteur RJ45. C'est comme une prise de téléphone (RJ11), il n'y a que la taille qui diffère. On branche dessus un câble Ethernet.







Voici un câble Ethernet. C'est la partie mâle qui va dans le connecteur RJ45 (l'autre bout peut être directement relié à un autre ordinateur via un câble croisé - rarement utilisé - ou plus fréquemment à une box Internet).




Pour simplifier l'explication et faire plus court, je ne parlerais pas des communications WIFI mais sachez qu'hormis le fait que les informations circulent par onde radio entre un émetteur et un récepteur, au lieu de circuler par des impulsions électriques sur un câble en cuivre (le câble Ethernet pour ceux qui n'auraient pas suivi), c'est exactement pareil.

J'ai parlé de carte Ethernet, pour être plus précis j'aurais du parler de contrôleur Ethernet (contrôleur réseau). La carte est le support physique du contrôleur (qui est une puce électronique) mais dans les PC actuels et depuis un moment déjà, le contrôleur Ethernet est intégré sur la carte mère, voire le processeur, et il n'y a donc pas besoin d'installer une carte d'extension.

Réseau local, interconnexion de réseaux locaux

Nous venons de voir qu'en raccordant des machines en réseau, on pouvait les faire communiquer. Un ensemble de machines reliées ensemble constituent un réseau local ou LAN (Local Area Network).

Mais ce n'était qu'une première étape. En effet, imaginez une entreprise avec 3 bâtiments différents. Dans chaque bâtiment elle va pouvoir relier ses ordinateurs entre eux et elle va donc avoir 3 réseaux locaux. Fort bien, mais inévitablement à un moment donné, elle va vouloir faire communiquer entre elles des machines qui sont dans différents bâtiments, et donc dans différents réseaux locaux. Du coup, elle va devoir interconnecter des réseaux locaux (et former ce qu'on appelle un réseau étendu ou WAN, Wide Area Network).

Et là, si vous êtes malin, vous commencez à entrevoir où je veux en venir. Un indice, Internet c'est un raccourci pour Interconnected Networks (réseaux interconnectés en bon Français).

Mais d'abord un peu de technique et d'histoire.

Logiciel de communication réseau, TCP/IP

Bon, juste avant on a dis qu'il fallait pour une communication réseau du matériel et du logiciel. On a vu la partie matérielle, passons à la partie logicielle.

Pour que deux ordinateurs communiquent, ils doivent exécuter chacun un logiciel spécifique qui gère la communications réseau et s'appuie sur un protocole spécifique à la problématique de mise en réseau.

Alors, rapidement un peu d'histoire. Il a existé par le passé une multitude de protocole réseaux propriétaires : quand on a commencé à vouloir raccorder les PC, chaque acteur un peu important y allait de son propre protocole (IPX/SPX par Novell, LanManager de Microsoft, TokenRing chez IBM de mémoire). 

Tous ces protocoles réseau respectaient plus ou moins une norme ISO (Internationl Organization for Standardisation, des gens qui font des tas de normes dans pleins de domaines différents, un peu comme la CEE mais au niveau mondial) qui s'appelle OSI (Open Systems Interconnection) et de ce fait pouvaient être interconnectés entre eux ; mais ça restait bougrement difficile et coûteux.

Pendant ce temps, des chercheurs en informatique dans diverses universités ont mis au point un protocole libre (spécifications publiques, utilisation libre sans redevance à payer) appelé TCP/IP, sous l'impulsion du DOD (Département de la Défense Américain) qui avait financé ces travaux afin d'avoir une technologie qui puisse emprunter différents chemins (on parle de routes) et ne pas être sensible au bombardement d'un point unique (la guerre a toujours fait progresser les technologies).

Ce protocole a été implémenté dans les systèmes UNIX, également mis au point par ces mêmes universités, et utilisé pour interconnecter les réseaux des grandes universités de par le monde, et a ainsi fait ses preuves.

Du coup, il s'est imposé comme un standard et a balayé tous les concurrents propriétaires. D'autant qu'il était gratuit... Dès lors, il a été mis en place sur tous les réseaux locaux de la planète. Et du coup, il est devenu aisé de les interconnecter...

Et devinez quoi ? Progressivement, on a interconnecté de plus en plus de réseaux locaux sur toute la planète, on a de fait créé un réseau mondial : Internet (grâce à la technologie internet).

Topologie et équipements réseau

La lecture de ce paragraphe n'est pas indispensable, mais c'est toujours sympa à savoir.

Par topologie, on entend la façon dont on raccorde les PC d'un réseau local entre eux ; la façon de faire a bien évoluée dans le temps (en anneau, en bus, en point à point, en étoile) mais la bonne a été trouvée depuis longtemps et les choses ne bougent plus dans ce domaine depuis un moment. 

Donc, on est aujourd'hui sur une topologie en étoile. 

Les PC ne sont pas raccordés directement entre eux, mais ils sont tous raccordés sur un point central qui fait la jonction entre toutes les machines. Ce point central peut être ce qu'on appelle un Hub (normalement ce n'est plus utilisé) et le plus souvent c'est un Switch. Un Hub comme un Switch permettent à deux machines de dialoguer, simplement le switch fait les choses plus intelligemment (mieux et plus vite). Ils sont équipés de multiples prises RJ45 qui permettent de le brancher à tous les PC du réseau. On peut en mettre plusieurs en cascade (avec des limites) si ils n'ont pas assez de prises.

A votre domicile, vous êtes généralement équipé d'une Box Internet fournie par votre ISP (Internet Service Provider, aka FAI Fournisseur d'Accès Internet). Ces Box ont en général plus ou moins 4 prises RJ45 et remplissent le rôle de switch (parmi de nombreux autres, nous verrons ça plus tard).

Les contrôleurs réseaux (le composant électronique au cul de la prise RJ45 qui gère la communication réseau au niveau physique) existent à 4 niveaux de normes qui correspondent à des vitesses de transmission différentes : 10 Mbits/s (ancien, ne se trouve plus), 100 Mbits/s (dépassé mais encore présent), 1 Gbit/s (la norme actuelle), 10 Gbits/s (émergent, réservé au matériel professionnel haut de gamme actuellement). Selon le niveau de la norme, il faut respecter certaines qualités pour les câbles ethernet utilisés (câble de catégorie 6 pour le 1 Gbits/s). La catégorie détermine un niveau de blindage contre les perturbations électromagnétiques (qui augmentent avec la vitesse de transmission, là c'est de la physique et je rends la main).

Actuellement, les contrôleurs réseau des box grand publics sont généralement en 100 Mbit/s, tandis que tous les PC sont depuis belle lurette équipés de contrôleurs 1 Gbits/s. Les box constituent donc un goulet d'étranglement (je ne comprends toujours pas pourquoi les derniers modèles de box ne sont pas passés au Gbit, un mystère). Pour éviter ceci, et si vous avez besoin d'un débit élevé entre les machines de votre réseau local (par exemple si vous diffusez de la vidéo HD en DLNA, je dis ça je dis rien...), il vous suffira de brancher un switch Gbit/s sur votre box et de raccorder vos PC sur le switch. Bien sur, les communications entre vos PC et Internet resteront en 100 Mbit/s car elles transiteront par votre box (qui est également un routeur, c'est à dire le point d’interconnexion de votre réseau local avec Internet, nous y reviendrons), mais ce n'est pas gênant en général.


A suivre

Nous avons vu le premier point : les bases de l'informatique distribuée.

Dans notre prochain épisode, je rentrerais un peu plus dans le détail de fonctionnement de la technologie internet (c'est à dire de TCP/IP). Nous aurons ainsi les bases pour décrire le fonctionnement d'Internet et de sa principale application, le WEB.