jeudi 29 octobre 2015

Les bases pour comprendre le Web - Episode 2

Cet article est le second d'une série de 3 articles. La lecture du premier article est un pré-requis :
Les bases pour comprendre le web - Episode 1

Si vous ne comprenez pas la notion d'OS (Operating System, Système d'exploitation), je vous invite également en pré-requis à lire cet article. Sa portée est plus large que la seule notion d'OS puisqu'il est question d'assemblage d'ordinateurs mais vous pouvez sauter directement à la section qui explique rapidement ce qu'est un système d'exploitation.


Introduction

Après avoir étudié dans notre premier article les bases de l'informatique distribuée, nous allons maintenant parler des bases de la technologie internet (aka tcp/ip) sur laquelle est basée le réseau Internet.

Cet article est largement plus technique que le précédent car il y a malheureusement un minimum de détails de mise en oeuvre à communiquer. Cependant, nous avons essayé de limiter le plus possible la complexité, et surtout nous déroulons les sujets dans un ordre logique qui devrait permettre de bien appréhender les choses.

Focus sur TCP/IP

Initialisation du réseau

Nous avons expliqué dans l'article précédent que l'informatique distribuée était basée sur une communication réseau, entre un client et un serveur, exprimée selon un certain protocole, que cette communication était gérée par un logiciel qui fait partie du système d'exploitation, et que ce logiciel est une implémentation de la spécification TCP/IP (implémenté par tous les systèmes d'exploitation courants).

Ce logiciel s'initialise automatiquement lors du démarrage de votre système d'exploitation. Pour ce faire, il doit obtenir quelques informations qui lui sont indispensables.

Ces informations peuvent être lues localement depuis le disque de la machine dans le cas d'une configuration manuelle effectuée directement sur la machine. Cependant, ceci n'est pas le cas de fonctionnement le plus simple ni le plus courant.

En effet, le logiciel se débrouille habituellement pour détecter automatiquement la présence d'un logiciel serveur spécifique qui va lui fournir ses données de configuration. Pour ce faire, il envoie un message à toutes les machines du réseau (broadcast) et voit qui lui répond. Une fois qu'il a identifié le serveur qui va bien (celui qui a répondu à son appel général), il entame un dialogue avec lui (modèle client/serveur, notre logiciel est le client) et obtient ainsi les données requises.

Le serveur en question s'appelle un serveur DHCP : Dynamic Host Configuration Protocol : le nom est assez parlant (Protocole de Configuration Dynamique d'une machine hôte, l'hôte c'est votre ordinateur qui est en train de s'initialiser).

Si vous avez suivi, vous devez vous demander d'où il sort ce fameux serveur DHCP. Hé bien, il tourne tout simplement sur votre Box Internet (hé oui, votre Box Internet est un ordinateur, sous  le système d'exploitation Linux en général, et exécute divers programmes).

Nous verrons au fil de l'eau certaines des informations fournies par ce serveur DHCP.

Adresse IP privée

Donc, l'informatique distribuée est basée sur une communication réseau, entre un client et un serveur, exprimée selon un certain protocole.

Alors mettons nous 2 secondes à la place d'un client quelconque qui veut envoyer une requête à un serveur.

Il va avoir besoin de savoir à quelle adresse envoyer sa requête afin que le logiciel réseau puisse l'acheminer au bon destinataire ; exactement comme vous avez besoin du numéro de téléphone de quelqu'un pour lui téléphoner.

Il y a donc le besoin de disposer d'un système d'adressage, c'est à dire d'un système qui attribue une adresse distincte et unique a chaque ordinateur au sein d'un réseau local. Et ça tombe bien, ce système existe et est pris en charge par la technologie TCP/IP. Ainsi donc, au sein d'un réseau local basé sur la technologie internet, chaque machine dispose d'une adresse unique appelée adresse IP privée.

Nous avons dit que chaque ordinateur avait une adresse IP privée. En fait, pour être plus précis, c'est chaque interface réseau (prise réseau RJ45) qui a une adresse. La majorité des machines ayant une seule prise réseau ça revient généralement au même, mais dès lors qu'un ordinateur a plusieurs prises réseau, il dispose de plusieurs adresses.

L'adresse IP privée est généralement obtenue à l'initialisation du système lors de l'appel au serveur DHCP.

Adresse IP publique

L'adresse IP privée est unique au sein d'un réseau local et permet aux machines au sein de ce réseau de communiquer entre elles.

Mais dès lors qu'on interconnecte des réseaux, il faut également pouvoir permettre à certaines machines, celle qu'on souhaite exposer (rendre visibles et joignables) depuis l'extérieur du réseau local, d'être contactées depuis n'importe quelle autre machine appartenant à un des réseaux interconnectés (donc dans le contexte du réseau Internet, n'importe quelle machine sur la planète).

Pour cela on (on, c'est l'administrateur du réseau) attribue une adresse IP Publique aux machines en question (ces machines doivent disposer de deux cartes réseau). Dès lors qu'une machine a une IP Publique, elle peut être contactée par n'importe quelle machine de n'importe quel réseau interconnecté.

Sans trop rentrer dans les détails, il faut savoir que l'obtention d'une IP Publique est PAYANTE et que si il est bien sur possible d'avoir plusieurs machines disposant d'une IP publique sur un même réseau local, ce n'est pas vraiment simple ni intéressant financièrement pour un particulier. En tant que particulier disposant d'une Box Internet, vous disposez d'une seule IP Publique (dynamique ou statique selon votre FAI et vos options, notion expliquée un peu plus loin) et elle est attribuée à votre Box (qui est donc un routeur -  notion expliquée un peu plus loin -  et dispose de deux interfaces réseau).

IP v4, IP v6

Il existe deux versions de la technologie IP.

Celle qui est massivement utilisée est la v4 (IP v4) et une adresse est une série de 4 chiffre.

Le nombre d'adresses distinctes qu'on peut exprimer avec ce format s'est cependant avéré insuffisant compte tenu de l'explosion d'Internet : le nombre de réseaux interconnectés a augmenté continuellement depuis 20 ans, on a maintenant de plus en plus de périphériques connectés (Smart TV, Smartphones ...) et une explosion des ventes d'objets connectés s'annonce qui ne va rien arranger (on appelle ça IOT, Internet Of Things, Internet des objets en Français).

Du coup, on passe progressivement depuis plusieurs années déjà à la norme v6 (IP v6) dans laquelle l'adresse IP est représentée d'une façon différente ce qui permet d'avoir plus de numéros (de la même façon qu'on est passé des numéros de téléphone à 6 puis 8 puis 10 chiffres).

On peut espérer que les adresses IP publiques seront plus aisées à obtenir et moins coûteuse dans l'avenir grâce à IP v6 (qui permet d'exprimer un nombre d'adresse très élevé, contrairement à IP v4 qui avait été conçu à une époque où on n'imaginait pas une telle explosion de la technologie).

IP Fixe, IP Dynamique, NAT

Une adresse IP, qu'elle soit publique ou privée, peut être fixe ou dynamique.

Si elle est fixe, elle ne variera pas dans le temps, ce sera toujours la même (une même machine aura toujours la même adresse). Si elle est dynamique, elle est susceptible de changer sans préavis (mais pas systématiquement) à l'occasion d'un redémarrage de l'ordinateur.

Le choix d'une adresse privée fixe ou dynamique relève de votre responsabilité. Par défaut, elle sera dynamique mais il est possible de faire en sorte qu'elle soit fixe par de la configuration.

Le choix d'un adresse publique fixe ou dynamique (pour votre Box) relève de votre FAI. Certains ne vous laissent pas le choix et vous imposent une adresse dynamique. D'autres vous donnent la possibilité d'avoir une adresse fixe sur demande, moyennant éventuellement un surcoût.

Une IP Fixe est souhaitable en particulier si vous hébergez (faites tourner) un serveur (logiciel) sur un serveur (un ordinateur). Remarque : le terme serveur est ambigu car il peut désigner un élément logiciel comme un élément matériel ; ce n'est pas un problème quand on connait car on voit bien de quoi on parle, mais je vais essayer d'apporter la précision le plus souvent possible dans cet article (mais pas systématiquement, se serait très pénible).

En effet, dans le modèle client/serveur, le client contacte le serveur grâce à son adresse (plus précisément, l'adresse de la machine sur laquelle il s'exécute). Celle ci doit donc être constante dans le temps. Imaginez que vous vouliez contacter par téléphone quelqu'un qui change sans cesse de numéro...

Si votre serveur est appelé uniquement depuis votre réseau local, seule l'adresse IP privée a besoin d'être fixe.

Si votre serveur doit pouvoir être appelé depuis Internet, il doit avoir une IP publique fixe. Ceci pose un problème car nous nous avons vu que seul la Box pouvait avoir une IP publique dans le cadre d'une Box grand public... Et il faut donc recourir à un tour de passe passe : c'est bel et bien votre Box qui sera appelé en premier lieu (car elle seule a une IP publique et elle seule peut être appelée depuis Internet) mais elle se chargera de relayer la requête vers le serveur sur votre réseau local qu'elle contactera via son IP privée (qui devra donc être fixe) en se basant sur des règles de mise en correspondance configurées sur la box par vos soins (la box héberge le routeur - qui est chargé de relayer le trafic réseau entre le réseau local et Internet - et une application web qui permet de configurer le routeur, et parmi d'autres choses de déclarer ces règles de translation). Quand le serveur local lui fournira une réponse, elle se chargera de la relayer vers le client Internet à l'origine de la requête initiale. On appelle ce mécanisme le NAT, Network Adress Translation, Translation d'adresse réseau, le terme est clair je pense.

Une IP Fixe peut également être requise pour d'autres raisons, même si vous n'exposez pas de serveur sur Internet. Par exemple, vous pouvez être amenés pour diverses raisons à configurer certains équipements ou logiciels dont vous disposez en précisant l'adresse d'une machine de votre réseau, et dès lors il faut que cette adresse soit constante pour que votre configuration reste valable. Ne pas respecter ceci c'est s'exposer à des pannes aléatoires quand un ordinateur a rebooté (redémarré) pour une raison X ou Y et a changé d'adresse IP (si elle est dynamique).

Enfin sachez qu'il existe des contournements dans le cas où vous auriez absolument besoin d'une IP publique fixe (hébergement d'un serveur dans votre réseau local et qui doive être joignable depuis Internet) et que votre FAI ne vous autorise pas les IP publique fixes. Nous en parlerons un peu plus loin (dyndns).

Numéro de port

Désolé, je n'ai pas pu résister au jeu de mot (port, porc) et un peu de détente peut faire du bien après toute cette lecture.

Alors, un port TCP/IP ça ne sert pas à faire de la bonne charcuterie mais c'est une valeur numérique entière (tiens au hasard, 80 par exemple) qu'on associe à une adresse IP afin de pouvoir héberger plusieurs serveurs (logiciel) sur un serveur (une machine).

Jusqu'à présent j'ai expliqué qu'un client qui voulait parler avec un serveur le contactait grâce à son adresse IP. Mais en fait, ce n'est pas vrai, le serveur est contacté grâce à un couple de coordonnées constitué de son adresse ip ET de son numéro de port. C'est un peu comme si l'adresse IP était l'adresse d'un immeuble et que le numéro de port était le numéro de l'appartement au sein de l'immeuble (et dans cette analogie l'immeuble est le serveur - matériel - sur lequel s'exécute le serveur - logiciel - ).

Quand un logiciel serveur démarre et se met en écoute, il se met en écoute sur un numéro de port précis déterminé par sa configuration, et les clients qui veulent l'appeler devront préciser ce numéro de port (en plus de l'adresse IP).

Comme les informaticiens sont fainéants par nature, ils ont imaginé un système associant un numéro de port par défaut à chaque protocole couramment utilisé. Ceci permet de ne pas le préciser dans la plupart des cas (quelques caractères de moins à saisir, c'est toujours ça de gagné). Nous détaillerons ce point plus loin.

Routeur

Dans tout réseau internet, il y a un serveur (logiciel) particulier qui constitue le point d'interconnexion avec les autres réseaux locaux (et par là, le point d'accès vers et depuis Internet). On appelle ce serveur un routeur.

Il peut s'agir d'un routeur purement logiciel, un simple logiciel installé sur un ordinateur quelconque , ou d'un matériel dédié (appliance).

Dans la plupart des cas pour un usage domestique, ce logiciel est fréquemment confondu avec la Box Internet car le routeur s'exécute sur la Box. En effet la Box est un ordinateur et à ce titre exécute divers logiciels, à commencer par le routeur.

Lors de la configuration de TCP/IP, généralement via un appel DHCP, chaque ordinateur obtient l'adresse IP privée de ce routeur, souvent appelé "passerelle par défaut".


Autres pré-requis, normes, outils

La technologie réseau internet (TCP/IP) est la brique de base d'Internet. Vous savez maintenant la plupart des choses à savoir.

Sur cette base ont été construites d'autres technologies ou normes qui jouent un rôle important et qu'il faut connaitre pour comprendre Internet et le Web.

DNS, FQDN, Ports par défaut (IANA)

Les clients contactent les serveurs via leur adresse IP et leur numéro de port.. C'est acquis.

Une adresse IP c'est une série de 4 chiffres séparés par des points. Rien de ceci n'est très agréable à mémoriser.

Pour rendre tout ceci plus agréable, il a été créé un système d'annuaire qui met en relation un nom simple à retenir, constitué de texte facilement mémorisable (par exemple : www.facebook.com) avec une adresse IP. C'est le système DNS : Domain Name Server, serveur de noms de domaines. On peut tout à fait faire le parallèle avec un annuaire téléphonique qui met en correspondance un Nom+Prénom avec un numéro de ligne.

Il nous faut donc expliquer ce qu'est un nom de domaine. Un nom de domaine est par exemple facebook.com, gouv.fr, yahoo.fr etc. C'est en quelque sorte une marque déposée. Pour détenir un nom de domaine, il faut déjà qu'il soit libre, et ensuite il faut le réserver auprès d'un bureau d'enregistrement (registrar en Anglais, la plupart des FAI fournissent ce service), et enfin il faut payer une redevance annuelle dépendant du TLD. Le TLD, Top Level Domain, c'est la fameuse extension .org, .fr, .com etc.

Donc en admettant que vous vouliez monter un site Internet, il vous faut commencer par définir un nom de domaine, vous assurer qu'il est disponible, puis vous enregistrer et payer. Pour l'exemple on va imaginer que vous allez prendre le domaine lesupersitequidechire.com

Une fois que ceci sera fait, vous aurez la possibilité de définir des alias (raccourci, synonyme) vers des ressources de votre domaine. Par exemple, il est fort probable que vous aurez quelque part sur une machine un serveur web qui hébergera les pages de votre site. Cette machine aura bien sur une adresse IP publique fixe, par exemple 87.230.168.82. Et comme vous ne voulez pas que vos utilisateurs tapent http://87.230.168.82 dans leur navigateur mais un truc plus sexy comme http://www.lesupersitequidechire.com, vous allez configurer le système DNS pour spécifier que la machine www du domaine lesupersitequidechire.com a l'IP 87.230.168.82. Comme ça vos utilisateurs pourront taper http://www.lesupersitequidechire.com dans leur navigateur.

Si vous le souhaitez, vous pouvez découper votre domaine en sous-domaines tout simplement en ajoutant un texte devant votre domaine. Par exemple : compta.lesupersitequidechire.com, sav.lesupersitequidechire.com, etc. Attention ici compta et sav ne sont pas un alias IP, quand on voudra adresser une machine dans ces sous domaines on aura son nom avant le sous domaine, par exemple www.compta.lesupersitequidechire.com et www.sav.lesupersitequidechire.com. Conclusion, l'alias DNS c'est la totalité du texte et ça s'appelle un FQDN : Fully Qualified Domain Name (nom de domaine complètement décrit, en bon Français).

Première remarque : j'ai appelé le serveur web www, ce n'est en rien une obligation, juste une habitude. J'aurais pu mettre toto ou serveurdefichier ou n'importe quoi d'autre.

Seconde remarque : pour l'explication, j'ai pris un exemple où vous hébergez vous même votre site. La plupart des personnes utilisent les services d'un hébergeur professionnel qui héberge pour elles les ressources de leur domaine (le serveur web en premier lieu - généralement mutualisé pour de nombreux domaines -, les pages html bien sur, et bien souvent un moteur de script PHP pour les sites dynamiques), et ne voient généralement rien de ces détails techniques (le nom de domaine étant souvent loué chez l'hébergeur, c'est lui qui se charge de configurer le DNS pour faire pointer l'adresse de votre site sur leur infrastructure).

Troisième remarque : j'ai dis que vos utilisateurs allaient pouvoir joindre votre site en tapant http://www.lesupersitequidechire.com, ceci suppose que votre serveur web tourne sur son port par défaut (le port par défaut d'un serveur web, c'est à dire implémentant le protocole http, est 80), et donc qu'il a été configuré pour écouter sur le port 80. Si pour une raison X ou Y, vous aviez décidé de le faire tourner sur le port 90, vos utilisateurs auraient dû taper http://www.lesupersitequidechire.com:90. Ceci est simplement une application de ce que nous avons expliqué plus haut.

L'IANA est une autorité régulatrice d'Internet qui est en charge d'attribuer un numéro de port par défaut aux différents protocoles utilisés sur le réseau Internet. Ce sont ces ports par défaut qui permettent de ne pas devoir systématiquement préciser un numéro de port en plus d'une adresse IP (ou d'un Alias DNS) ; ce n'est obligatoire que si le serveur tourne sur un port différent de la convention par défaut.

Le DNS a d'autres usages que le fait de définir des alias pour les adresses IP des machines installées pour faire tourner les services associés à un domaine. En fait, on associe à un nom de domaine toute une série d'entrées à divers usages (notamment la messagerie). Le type d'entrée correspondant à un alias IP est "CNAME". C'est une différence avec notre annuaire téléphonique où on n'a qu'une seule information (numéro de ligne) en face d'un nom+prénom (pour continuer sur notre analogie).

L'adresse du serveur DNS primaire et secondaire (si le primaire est en panne) utilisé par votre ordinateur est obtenu à l'initialisation de tcp/ip, habituellement par un appel DHCP. Ce serveur DNS est opéré par votre FAI (c'est lui qui l'a installé et qui s'assure de son fonctionnement).

Il existe probablement des centaines de millions de noms de domaines de par le monde, il s'en crée de nouveaux à une fréquence élevée et d'autres disparaissent aussi vite (un domaine a une date de péremption, si on ne paye pas la redevance annuelle, il redevient disponible). Gérer tout ceci sur un seul serveur DHCP poserait un problème de charge (le serveur serait appelé en permanence du monde entier et nécessiterait une puissance colossale) et de sécurité (il suffirait à quelqu'un de mal intentionné de faire tomber ce serveur pour qu'Internet soit en panne sur toute la planète de façon instantanée). Pour cette raison, il n'y a pas un mais des milliers de serveurs DHCP de par le monde qui gèrent chacun un sous ensemble des domaines et qui diffusent leurs mises à jour (nouveaux domaines, modification de domaines, domaines périmés) aux autres serveurs DHCP de par le monde. Pour cette raison, une mise à jour d'un serveur DNS peut requérir jusque 24H (pendant 24H, certains serveurs DNS seront déjà à jour et d'autres pas encore, du coup l'accès à votre site sera aléatoire selon le serveur DNS utilisé par la machine d'un utilisateur, ceci dépendant généralement de son fournisseur d'accès).

DynDns

DynDns est le nom d'un service dît de DNS Dynamique. Ce n'est pas le seul mais sans doute le plus ancien et le plus connu.

Ce type de service est indispensable dans le cas suivant :
  • vous voulez héberger un serveur exposé sur Internet dans votre réseau local
  • votre FAI ne vous permet pas d'avoir une IP publique FIXE (uniquement dynamique)

Etant donné que vous n'avez pas d'IP fixe, vous ne pouvez pas de façon réaliste associer un nom de domaine à une IP dans le système DNS. En effet, votre IP changeant régulièrement (à priori toutes les 24H), il vous faudrait mettre à jour manuellement tous les jours le DNS, or le délai de prise en compte de ce type de changement dans le système DNS mondial est de 24 Heures.

DynDns propose de surveiller automatiquement (via un logiciel installé sur un ordinateur de votre réseau local, et très souvent pré-installé sur votre Box Internet) votre IP publique afin de détecter tout changement et aller mettre à jour automatiquement la correspondance entre votre IP et un nom de machine (un alias) qui vous est alloué dans leur domaine (dyndns.org ou un truc du genre). La prise en compte est immédiate. Vous pouvez ainsi contourner l'absence d'IP fixe mais vous n'avez pas le choix du nom de domaine.

URL

URL, facile ! Tout le monde connait... pas si sur à mon avis, et à la lumière des explications précédentes vous devriez comprendre un peu mieux à qui ça correspond précisément.

URL est un acronyme pour Uniform Resource Locator, c'est donc une norme qui permet d'exprimer de façon Uniforme (toujours de la même façon) la localisation (Locator) d'une ressource. Par exemple, complètement au hasard, une page web. Mais il existe bien d'autres ressources : des images (ben oui, il y a des images dans vos pages web, elles viennent bien de quelque part), des programmes (quand vous validez un formulaire sur une page web, vous appelez généralement sans le savoir un programme quelque part sur Internet), des serveurs (www.facebook.com est un serveur), et bien d'autres choses encore.

Une URL est composée de plusieurs parties (version simplifiée)

  • Le protocole utilisé pour accéder à la ressource : http: si on accède à la ressource par le protocole HTTP, ftp: si on accède à la ressource par le protocole FTP etc.
  • L’adresse IP du serveur chargé de fournir la ressource. Cette adresse est généralement remplacée par le FQDN du serveur (ex : www.google.com)
  • De façon facultative un « : » et le numéro de port utilisé pour établir la connexion avec le serveur. Si il n’est pas précisé, c’est le numéro de port par défaut associé au protocole qui est utilisé (voilà pourquoi on ne tape pas http://www.google.com:80)
  • Le nom complet de la ressource incluant son chemin d’accès (ex:/livres/sf/1984.pdf)
  • Eventuellement des données supplémentaires précédées par le caractère « ? » et respectant une certaine forme (nom=valeur, séparateur « & » dans le cas où il y a plusieurs données, codification des valeurs suivant une règle précise)


Jouons à décrypter une URL :
http://www.sousdomaine2.sousdomaine1.sitedelamortquitue.com:90/page/accueil

On va établir une communication réseau avec un serveur (logiciel) qui tourne sur un serveur (machine) dont l'adresse IP va être obtenue en interrogeant un serveur DNS (dont l'adresse a été obtenue lors de l'initialisation de tcp/ip par un appel au serveur DHCP) qui va renvoyer l'ip correspondant à l'entrée CNAME de valeur "www" en correspondance avec le sous domaine "sousdomaine2" de "sousdomaine1" du domaine "sitedelamortquitue.com". Cette communication sera établie sur le port 90 (le serveur ne tourne pas sur le port par défaut). Cette communication se fera selon le protocole http. Le serveur nous renverra le fichier (http est un protocole dont le but et de permettre la lecture de fichiers distants, généralement des pages html - tout ceci est expliqué dans le 3éme article de cette série) que le serveur connaît sous le nom "accueil" et dont le chemin d'accès (par exemple, un nom de répertoire sur le disque du serveur) est "/page" (donc par exemple ici, un répertoire page à la racine du répertoire où le serveur web range les fichiers pour le site sousdomaine1.sousdomaine2.sitedelamortquitue).

Alors ici j'ai pris un exemple avec le protocole http car c'est ce qui est le plus connu, mais on peut avoir des url en ftp://... nntp://... et tout un tas d'autres protocoles Internet moins connus du grand public.


Proxy, Firewall


Bon j'ai entendu tellement de conneries sur ce sujet, en particulier dans les films, que je me sent obligé d'en parler rapidement même si ce n'est pas indispensable.

Proxy

Alors Proxy en anglais ça veut dire "Intermédiaire". Un Proxy est un serveur qui va venir s'interposer dans une communication entre une machine de votre réseau local et une machine sur Internet. En fait, quand vous allez demander (enfin pas vous directement on est d'accord, mais le logiciel que vous utilisez, par exemple votre navigateur) à établir une connexion, elle va être établie avec le Proxy, puis le Proxy va appeler pour vous la machine sur Internet, va recevoir sa réponse, et vous la re-fournir en retour.

Ceci permet différents choses :
  • accélérer les accès  : le proxy peut mettre en cache la réponse du serveur. Si un autre client du réseau local demande la même chose, il la renvoie directement de son cache au lieu de rappeler le serveur et c'est ainsi plus rapide (mais pose des problèmes si le proxy est mal configuré)
  • filtrer les accès : le proxy peut décider d'autoriser ou d'interdire l'accès à Internet selon le client qui le contacte. C'est utilisé par certaine entreprises pour donner accès à certains postes et pas à d'autres. Il peut autoriser les accès au web et interdire l'accès à d'autres types de serveurs (ftp, nntp, p2p ...)
  • filtrer les sites accessibles : certains sites sont dangereux (virus), d'autres sont illégaux (pédophilie), d'autres simplement interdits par l'entreprise car sans rapport avec l'activité (jeu en ligne). Le proxy peut décider d'autoriser ou d'interdire l'accès à un site selon une politique définie par l'entreprise
  • tracer les accès : le proxy peut (et il le fait en général) tracer (conserver une trace dans un fichier journal, aka log) un appel. Tel personne a appelé tel site tel jour à telle heure. L'exploitation ultérieure de ces informations peut s'avérer utile (virer quelqu'un qui passe son temps sur des sites X, voir qui est le crétin qui a ramené le virus qui a paralysé l'entreprise pendant 48H ...)

Le Proxy est donc un élément de la politique de sécurité. Son bon fonctionnement est critique car il constitue un nœud d'étranglement, si il est saturé ou en panne, c'est l'accès de tous les postes à Internet qui est compromis

Sur un réseau local domestique, vous n'aurez pas de proxy (sauf si vous décidez d'en installer un). Certains utilisent des proxy publics (disponibles sur Internet) pour diverses raisons (par exemple pour essayer d'anonymiser leur navigation et ne pas être reconnus via leur IP par les sites qu'ils consultent). Les proxy se rencontrent par contre souvent en entreprise (où ils posent souvent des soucis pour cause d'administrateurs incompétents mais c'est une autre histoire).

Firewall

Le Firewall comme le proxy (ou le routeur) intervient dans toute mise en communication entre une machine du réseau local et une machine sur Internet (et fréquemment, il peut également jouer dans la communication entre deux réseaux locaux dans les entreprises pour des raisons de sécurité et de cloisonnement).

Son rôle consiste à autoriser ou interdire une communication en se basant sur des règles de permission ou d'autorisation. Ces règles sont définies par l'administrateur réseau (vous, quand vous êtes à votre domicile).

Il permet par exemple d'autoriser ou d'interdire l'accès à certaines adresses, depuis certaines adresses, en fonction du port utilisé par la communication. Certains plus sophistiqués savent reconnaître le protocole utilisé (pas le cas dans les Box), voire analyser la nature de l'échange.

Le firewall est un élément important de la politique de sécurité. Son bon fonctionnement est critique car il constitue un nœud d'étranglement, si il est saturé ou en panne, c'est l'accès de tous les postes à Internet qui est compromis

Toutes les Box Internet comportent un firewall. Il est généralement configuré avec des règles satisfaisantes pour un usage courant. La sécurité est correctement assurée en interdisant les appels depuis l'extérieur à un certain nombre de services souvent ouverts par défauts sur vos ordinateurs sans que vous en ayez conscience (un gros défaut de Windows est de démarrer par défaut des services souvent non indispensables et qui constituent des trous béants de sécurité que les pirates détectent et exploitent avec une grande facilité pour infecter vos machines), tout en autorisant un usage classique d'Internet. Par contre, vous aurez besoin d'y mettre les mains pour des usages un peu avancés.


Box Internet, petite synthèse

Votre Box Internet est un ordinateur.

Cet ordinateur exécute généralement un système d'exploitation Linux

Le système d'exploitation fait tourner différents services (serveurs) :
  • serveur DHCP (contacté par les machines de votre réseau local pour obtenir leur configuration)
  • routeur (qui assure notamment les opérations de NAT)
  • serveur web qui héberge l'application de configuration de votre Box
  • un firewall pour configurer des règles de sécurité
  • souvent, un client DynDns 
La Box fait également office de Switch (sans que je sache dire si c'est implémenté au niveau hardware ou au niveau logiciel).

Les box depuis quelques années (en France) fournissent de multiples services :
  • téléphonie par IP (le service de téléphone gratuit)
  • réception de la télévision
  • services multimédia divers (DLNA en particulier)
On appelle ces box triple-play : Internet, téléphone, télévision.

Le Box fournit également le matériel et le logiciel pour assurer les communications réseau avec votre opérateur (FAI) qui vous interconnecte avec Internet. Là on tombe dans le domaine des télécoms, un domaine affreusement compliqué - pour moi en tout cas -, et je rend la main.


Conclusion (temporaire)

Vous disposez maintenant de toute la connaissance requise pour comprendre le fonctionnement d'Internet. Avec ces bases, vous pouvez même vous lancer dans la lecture de ressources beaucoup plus techniques, vous devriez pouvoir vous en sortir.

Attention, je parle bien d'Internet et pas du Web. La confusion entre Web et Internet est fréquente dans l'esprit du grand public car le Web est l'application la plus connue d'Internet et celle qui en a popularisé l'utilisation. Pour autant ce sont deux choses bien distinctes :

  • Internet est simplement une interconnexion au niveau mondial de milliers de réseaux locaux fonctionnant sous la norme tcp/ip
  • Internet offre de nombreuses applications : le courrier électronique, la messagerie instantanée, la diffusion de flux vidéos (le fameux streaming), des tonnes d'autres, et bien sur le Web
  • Le Web n'est qu'une application possible parmi d'autres


Pour comprendre le Web, il nous faut encore expliquer quelques éléments : http, html, javascript, rôle et fonctionnement d'un navigateur, et un peu de cryptographie pour les plus courageux.

Tout ceci sera expliqué dans le 3éme et dernier article de cette série

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.

mercredi 21 octobre 2015

Le B-A BA de l'assemblage (hardware)

J'ai écrit cet article initialement dans le cadre d'une série consacrée à l'assemblage d'un NAS (un type d'ordinateur spécialisé sur certaines tâches), il met donc le focus, par moment, sur certains aspects particulièrement intéressants dans ce contexte.

Cependant, je me suis rendu compte après coup qu'il est d'une portée plus générale ; il décrit les composantes principales d'un ordinateur, le matériel pour l'essentiel (hardware), avec inévitablement quelques mots sur les aspects logiciels (le software, Bios/Uefi et Système d'exploitation).

Si vous avez des bonnes notions en hardware et que vous avez déjà assemblé des PC, cet article ne devrait pas vous concerner.

Si vous n'avez aucune notion en hardware mais que ça vous intéresse, ça devrait constituer une bonne vulgarisation (et en tout état de cause un pré-requis pour envisager de monter un NAS ou plus généralement un ordinateur quel que soit son usage). J'ai fait dans le concis (tout est relatif) car il existe des multitudes de ressources intéressantes sur le web ; j'en ai hyperlinké certaines dans l'article qui compléteront très utilement cette introduction, et recensé d'autres à la fin.

Je vais commencer par définir ce que sont une architecture et une micro-architecture car ces sujets ne sont que rarement abordés alors même qu'ils constituent la base de tout (comme si c'était évident pour tout le monde).


Architecture processeur

Une architecture de processeur détermine les caractéristiques essentielles d'un processeur d'un point de vue externe (du point de vue de ceux qui l'utilisent, typiquement le système d'exploitation, Windows par exemple).

Les architectures les plus courantes sont désignées par des termes barbares : x86, ARM. x64 (aka EM64T, x86-64, Intel 64)

Parmi les caractéristiques définies par une architecture, la principale est le jeu d'instruction qui détermine les opérations élémentaires que le micro-processeur est capable d'exécuter (et par là, une partie importante des capacités de la plateforme).

Tout programme qui s'exécute sur un ordinateur est à un moment ou à un autre traduit en code machine et est donc constitué au final d'une suite d'instructions exprimées dans le jeu d'instruction supporté par le processeur et défini par l'architecture. Cette suite d'instruction constitue un programme informatique et est donc exprimée dans ce qu'on appelle du code machine (un code informatique exprimé dans le langage de la machine, c'est à dire dans le langage du processeur).

Précision importante : le paragraphe précédent est inexact car il existe en fait plusieurs types de programmes et que certains ne sont pas traduits en code machine ; c'est toutefois une approximation suffisante pour notre explication sur le hardware, il est inutile de vous encombrer l'esprit avec ceci pour le moment. Je prévois un article là-dessus ultérieurement, je viendrais le référencer ici quand il sera prêt.

La conséquence concrète de ceci est que tout programme directement écrit en code machine pour une plateforme donnée, ou encore compilé pour cette plateforme (traduit en code machine par un logiciel utilisé par les développeurs) pourra s'exécuter sur n'importe quelle machine équipée d'un processeur, quel qu'il soit, dès qui est basé sur la même architecture. C'est pourquoi vous pouvez installer Windows, par exemple, sur n'importe quel PC compatible, quel que soit le fabricant du processeur.

L'essentiel des processeurs pour serveurs ou machines de bureau est basé depuis plus de 30 ans sur l'architecture x86 définie par Intel et qui a évoluée ensuite en x64 pour permettre l'émergence des systèmes 64 bits (pour faire court, des systèmes plus puissants car capable d'adresser plus de mémoire, le x86 étant 16 bits  à la base dans la fin des années 70 et ayant évolué en 32 bits avec les PC 386 -ça parlera aux anciens-).

Intel n'est pas le seul fondeur (on appelle fondeurs les fabricants de processeurs) qui propose des processeurs x86/x64 (core i3, i5, i7, Pentium, Celeron, Atom, Xeon ...), la société AMD en propose également (Athlon, Fx, Phenom, Sempron). x64 est simplement une évolution de x86 et on continue parfois à parler d'architecture x86 par abus de langage pour désigner un système 64 bits Intel/AMD. Nous en ferons autant par simplicité, la mention x64 ne sera portée que si on a besoin de préciser spécifiquement la nécessité d'une version 64 bits (ce qui sera le cas).

Cette architecture x86 a trusté le marché mais de nouveaux besoins sont apparus plus récemment, liés au développement du marché des tablettes et smartphones par exemple, et pour lesquels cette architecture ne s'est pas avérée optimale.

Dès lors d'autres architectures ont émergées, la plus importante dans le cas d'un NAS étant ARM (il existe également d'autres architectures pour d'autres besoins spécifiques mais c'est au delà de ce qui nous intéresse). Un détail à connaître, la société éponyme ARM ne produit pas de processeur mais en commercialise le design (les plans ou les dossiers de conception si vous préférez) sous licence de propriété intellectuelle ; ainsi ce sont d'autres sociétés qui achètent le design et fabriquent les processeurs qu'on trouve majoritairement dans les tablettes et smartphones. Qualcomm par exemple est un fournisseur réputé de processeurs pour smartphones ou tablettes (gamme de processeurs snapdragon).

Une petite revue de presse semble montrer que la progression des architectures ARM risque de s'amplifier au delà des tablettes et smartphones qui constituent son marché actuel

Maintenant vous devez comprendre pourquoi quand vous achetez un Windows par exemple, vous devez choisir entre une version 32 bits si votre machine est en architecture x86 (car le code source de Windows est compilé pour cette architecture cible), et une version 64 bits si votre machine est en architecture x64 (aka EM64T, x86-64, Intel 64). Même punition si vous téléchargez une version de Linux depuis un site web, il faudra choisir une version 32 ou 64 bits selon l'architecture de votre processeur. Si votre processeur est en architecture ARM, il vous faudra une version spéciale de Windows compilée pour cette architecture (Windows RT, cette version est assez récente), du moins si vous voulez utiliser Windows.

Une petite précision : les systèmes d'exploitation 64 bits (windows, linux, Mac OS etc.)  peuvent exécuter la plupart des programmes compilés initialement pour un système 32 bits même si il est toujours préférable sur une plateforme 64 bits d'installer des programmes compilés en 64 bits et optimisés pour le 64 bits (ils seront généralement plus performants).


Micro-Architecture processeur

Alors que l'architecture définit le fonctionnement du processeur d'un point de vue externe (en gros son interface pour ceux à qui ça parle), sa micro-architecture définit son implémentation interne (comment le processeur est construit et comment il fait pour respecter ce qui est défini par son architecture).

A titre d'illustration, pour l'architecture x86, Intel a produit ses processeurs grand public selon les micro-architectures suivantes (non exhaustif, seulement le passé récent) :
  • NetBurst ; micro-architecture des PC à l'époque où on pensait augmenter la puissance continuellement en augmentant la fréquence (vitesse) de fonctionnement des processeurs ce qui s'est avéré une impasse technologique (trop d'échauffement, les processeurs fondaient et provoquaient des perturbations électro- magnétiques de mémoire) et a conduit à l'abandon de cette technologie au profit de la suivante (le dernier modèle de processeur basé sur cette micro-architecture était le le Pentium IV de mémoire)
  • Nehalem ; architecture "core" 1ére génération qui marque une rupture forte avec NetBurst en abandonnant la course à la fréquence au profit d'une réflexion approfondie et d'une remise à plat du fonctionnement du micro-processeur. C'est l'apparition des premiers processeurs core (core 2 duo de mémoire). Gravure en 45 nm
  • Sandy, 2nde génération, gravure en 32 nm (tac)
  • Ivy, 3éme génération, gravure en 22 nm (tic)
  • Haswell, 4éme génération, gravure en 22 nm (tac)
  • Broadwell, 5éme  génération, gravure en 14 nm (tic)
  • Skylake, 6éme génération (génération actuelle, à la date de rédaction de cet article), 14 nm (tac)

Pour l'anecdote, Intel après avoir du renoncer au dogme de l'augmentation continue de la puissance par l'augmentation de la fréquence de fonctionnement (abandon de NetBurst) vient de se manger une nouvelle claque en devant renoncer au dogme du tic/tac qui voulait que chaque année sorte une amélioration de l'architecture , avec une alternance tic/tac : 
  • une année en tac voyait une nouvelle version améliorée de la micro-architecture
  • une année en tic voyait simplement une diminution de la finesse de gravure des composants sans autre changement (en théorie car dans les faits, Intel a violé cette règle)

Or, Intel vient de renoncer à ce système en raison de son incapacité à produire la prochaine génération (la 7éme donc) avec une finesse de gravure de 10 nm. L'intérêt d'une finesse de gravure plus fine est multiple : gain de place, moins de dégagement thermique ...


Maintenant vous devez comprendre que à architecture constante, les ordinateurs améliorent leurs capacité grâce à des améliorations régulières de leur micro-architecture. Les micro-architectures les plus récentes permettent de gérer les dernières versions des normes respectées par les autres composantes d'un ordinateur (mémoire, disques etc.), de fonctionner plus vite, de gérer plus de périphériques, de consommer moins d'électricité etc.

Voici un exemple avec une copie d'écran issue d'une publicité Intel. La 4éme génération de processeurs Core, Haswell donc, apporte la technologie "Quick Sync Video" qui permet, en résumé rapide, d'accélérer le temps de conversion d'une vidéo d'un format à un autre (par exemple pour la diffuser vers un smartphone, ou pour du montage vidéo). Cette technologie utilise les capacités du contrôleur graphique (qui est un processeur) pour soulager le processeur de l'ordinateur, et par là améliorer les temps de réponse (mais pour en bénéficier, il faut également utiliser des logiciels compatibles qui savent l'exploiter, tout n'est donc pas si simple).

Vous pouvez par exemple gagner en performance en changeant le processeur de votre machine par un autre processeur plus rapide et/ou plus récent. Ce sera transparent (moyennant éventuellement une mise à jour de pilote) pour le système d'exploitation (dépendant de l'architecture et non de la micro-architecture). Ce point est cependant à tempérer pour plusieurs raisons que je ne vais pas exposer tout de suite car cela nécessite d'abord d'introduire d'autres notions (socket et chipset en particulier).


OS : Operating System

Système d'exploitation. C'est le premier logiciel installé sur un ordinateur et qui permet de le rendre utilisable.

Windows 95, XP, Seven (ie Window 7), Vista, 10 sont des OS propriétaires (c'est à dire payants, dont le code source est inaccessible et non modifiable) grand public, connus de tous et commercialisés par Microsoft pour les PC basés sur une architecture Intel x86. Pour les PC Macintosh de la société Apple, l'OS est Mac OS.

Il existe pour un public plus averti différentes distributions de Linux (un OS open source basé sur les principes d'UNIX qui est un OS ancien mais de référence) et tout un tas d'OS spécialisés. Pour la petite histoire, Mac OS est un système Unix ce qui est assez amusant quand ont sait que les Mac sont loués pour leur facilité d'utilisation et qu'Unix a la réputation d'être un système complexe.

Il y a un lien fort entre OS et matériel : pour que votre matériel fonctionne avec un OS donné, il faut que le support de ce matériel soit implémenté dans l'OS directement dans le code de son noyau, ou indirectement via un pilote (ou driver). Si ce point n'est pas problématique avec les systèmes mainstream (grand public) comme Windows sur architecture x86 (le fameux Wintel), il n'en est pas du tout de même avec d'autres architectures / systèmes, et il faudra être particulièrement attentif à ceci lors de l'assemblage d'une configuration.

Pilote ou driver : je reprend la définition de Wikipedia > Un pilote informatique, souvent abrégé en pilote, est un programme informatique destiné à permettre à un autre programme (souvent un système d'exploitation) d'interagir avec un périphérique.


Petite parenthèse ; Unix vs Linux (résumé très lapidaire). Les premiers systèmes Unix ont été développés notamment par des chercheurs en informatique de diverses grandes universités ; leur travaux ayant abouti et permis de déterminer le modèle d'un OS moderne et robuste (il faut se replacer dans le contexte de l'époque), des sociétés commerciales ayant collaborées au projet ont rendu le système propriétaire et payant (du fait qu'elles ont soumis à licence intellectuelle payante les parties du code dont elles avaient financé le développement) ce qui a bien entendu fâché les bénévoles qui avaient fortement contribué au développement initial. Du coup, des initiatives diverses ont tentées de remédier à cette situation. Le projet open source GNU a produit énormément d'outils indispensables (shell, compilateur, portage des principales commandes unix, nombreuses librairies indispensables) mais a échoué à développer le noyau du système (le kernel, la partie la plus complexe et la plus importante). L'université de Berkeley a ré-implémenté les parties du code source de son Unix qui comportaient du code sous licence (produit par des sociétés commerciales) et fournit sous licence open-source diverses moutures de systèmes UNIX (Unix de souche BSD, dont FreeBSD qui est la base de FreeNas, un OS dédié aux NAS dont nous parlerons). Par ailleurs, le projet  open source Linux a permis de développer un noyau opérationnel qui couplé aux outils GNU a permis de diffuser le système Linux (qu'on devrait en fait appeler Linux/GNU ou GNU/Linux) qui existe en de nombreuses versions qui servent pour certaines de base à différents OS dédié NAS. Donc Linux est très proche d'Unix dans ses concepts mais il en diffère cependant (pas la même base de code source) et n'est pas un système Unix (quelques différences significatives). Les différentes versions de Linux sont appelées des distributions, elles sont toutes open source mais certaines sont payantes (confusion fréquence, le Free de Free Software veut dire code source ouvert, et pas logiciel gratuit). Citons quelques distributions parmi les plus connues : RHEL (RedHat Enterprise Linux), Debian, Ubuntu, Mint, Suse, CentOS etc. Il en existe des dizaines, très proches mais customisées et spécialisées pour telle ou telle raison (un usage particulier, un recours plus ou moins permis à des éléments soumis à licence etc).


Un ordinateur est un assemblage de pièces

Carte mère
C'est la carte électronique principale de tout ordinateur, sur laquelle on trouve tous les autres éléments constitutifs de l'ordinateur, directement enfichés dessus comme la mémoire ou le micro-processeur par exemple, ou reliés par des câbles comme les disques durs par exemple, ou encore directement soudés sur la carte.

Les cartes mères existent en différents formats (taille physique). Le format définit aussi l'emplacement réservé aux connecteurs externes (les prises à l'arrière de votre PC et qui permettant de brancher le clavier, la souris, l'écran etc.), de telle façon que toutes les cartes au même format aillent dans tous les boîtiers prévus pour accueillir ce même format.

Les formats les plus répandus sont ATX (format classique des cartes mère de PC de bureau), micro ATX (une variante plus petite), mini-ITX (encore plus petit).



Les cartes mères prévoient des emplacement, ou slots, d'extension qui permettent d'étendre leur capacité pas l'ajout de cartes supplémentaires, appelées cartes filles ou cartes d'extension. Ces slots existent principalement (aujourd'hui) dans deux formats qui sont PCI et PCI-E (aka PCI Express, ou PCIe) en diverses versions. Pour faire court, les slots PCI-E sont intéressants pour connecter des périphériques (écrans, disques ...) qui vont pour leur fonctionnement devoir échanger rapidement beaucoup de données avec le processeur (débit élevé), tandis que les slots PCI sont moins performants mais suffisamment pour certains usages. Les slots PCI-E existent en diverses versions de la spécification (v2 et v3 se rencontrent actuellement) et avec un nombre de lignes de communication (lanes) variable (plus de lignes = débit plus élevé, dernière version = débit plus élevé, plus de lignes et dernière version = on explose tout en terme de débit autorisé par le slot).


BIOS / UEFI :
Plus haut je vous ai dis que le premier logiciel chargé sur un ordinateur était l'OS. Ben je vous ai menti, et volontairement en plus.

En fait, il y a d'abord le BIOS ou l'UEFI qui sont deux choses très similaires (UEFI est une version plus moderne, plus récente, et améliorée de BIOS. D'ailleurs on continue souvent à dire BIOS UEFI ce qui est un abus de langage). Il s'agit en fait d'un code informatique embarqué directement sur la carte mère  (on parle de firmware) et stocké dans une mémoire permanente réinscriptible (on peut la mettre à jour, on dit la flasher, pour charger une mise à jour du micro-code pour améliorer une fonctionnalité ou corriger un bug, chose qu'on est très rarement amené à faire, je vous rassure).

Ce code fournit une première couche d'abstraction pour faciliter l'utilisation du matériel. C'est également ce programme qui teste le bon fonctionnement des composants au démarrage (ça s'appelle le POST, Power On Self Test ou un truc dans le genre) et qui affiche les messages incompréhensibles que vous voyez quand vous allumez votre machine.

Exemple d'écran affiché par le BIOS à l'allumage du PC (au POST)

Pour finir, c'est le BIOS (ou UEFI) qui va démarrer l'exécution du votre système d'exploitation ; ensuite, une fois l'OS chargé, c'est lui qui prendra la main et qui se chargera de lancer les programmes dont vous avez besoin.

Donc au final et dans la vraie vie les programmes (navigateur, traitement de texte ...) s'adressent au système d'exploitation, qui s'adresse à son tour au BIOS, qui cause directement avec le petit personnel (les composants électroniques).  Les ordinateurs restent très vieux jeu en quelque sorte, ils n'ont jamais entendu parler des nouvelles tendances du management.

Cette couche d'abstraction permet à votre OS de fonctionner avec n'importe quel ordinateur compatible, quel que soit le matériel (les composants électroniques) qu'il met en oeuvre pour les entrées/sorties (écran, clavier, souris, réseau, prise usb etc.). En effet, il parle toujours de la même façon au BIOS, et ce dernier se débrouille pour traduire les demandes de façon correcte en fonction des composants utilisés sur la carte mère ; chaque carte mère a donc un BIOS spécifique (on lui parle toujours de la même façon, et il traduit en fonction des composants sur la carte mère).

Le fonctionnement du BIOS (ou UEFI je vais pas le répéter à chaque fois) est paramétrable via des écrans qu'on peut activer au démarrage de l'ordinateur en appuyant sur une touche variable selon les cartes mères (suppr en général, F2 parfois, ou F12, ou autre chose encore, à voir dans le manuel de la carte mère, et généralement c'est affiché rapidement au démarrage de la machine).

Alors s'agissant du paramétrage du BIOS : en général, vous n'avez que rarement à y toucher, aussi je donnerais une consigne simple : "pas touche" sauf si vous savez précisément ce que vous faîtes. Et en cas de souci, il y a toujours une option de menu qui permet de revenir aux valeurs par défaut, donc pas de panique. Le cas d'utilisation le plus fréquent est le paramétrage de l'ordre de boot qui consiste à définir depuis quels disques, et dans quel ordre, le BIOS doit chercher un système d'exploitation à charger au démarrage de la machine ; typiquement pour mettre le lecteur de DVD en premier avant le disque dur quand on a déjà un OS installé sur le disque et qu'on veut démarrer depuis un DVD pour installer un nouvel OS. Ensuite, c'est sans doute désormais la désactivation du secureboot (je m'égare, je détaillerais tout ceci dans un article plus avancé quand je trouverais le temps -sujet potentiellement très complexe-).

Précision : encore une fois j'ai volontairement simplifié la réalité... Dans les faits, les OS d'aujourd'hui s'adressent rarement au BIOS car ils s'appuient sur d'autres couches d'abstractions plus modernes, Le BIOS est utilisé principalement dans la séquence de démarrage de l'OS (bootloading) tant que les autres mécanismes ne sont pas encore disponibles.

Pour plus de détail, j'ai trouvé cette ressource qui m'a semblé plutôt lisible pour le commun des mortels. Sinon, pour ceux qui n'ont pas peur, on trouve sur wikipedia version rosbeef de très bonnes explications (mais bon c'est déjà beaucoup beaucoup beaucoup plus technique).


CPU
c'est le micro-processeur d'un ordinateur, son composant principal, son moteur.



Pentium, Celeron, Atom, Core i3, Core i5, Core i7 par exemple sont les processeurs de marque Intel parmi les plus répandus, mais on a également des processeurs fourni par AMD, Qualcomm, MediaTek et des tas d'autres fondeurs.

Le CPU est enfiché sur la carte mère de l'ordinateur via son socket. La CPU respecte une architecture processeur qui est implémentée (mise en oeuvre) de façon interne par une micro-architecture.

La CPU tourne à une certaine vitesse exprimée en Mhz (vitesse d'horloge). Plus cette vitesse est élevée, et plus le processeur est rapide (à micro-architecture équivalente, on peut avoir dans des micro-architectures différentes, des processeurs moins rapides mais plus puissant) mais plus il consomme d'électricité et corollaire plus il dégage de chaleur. Le dégagement de chaleur, appelé TDP, s'exprime en Watts et est une caractéristique importante d'un processeur (comme sa consommation)

Le choix d'un CPU se fait selon de nombreux critères. De façon basique on peut déjà consulter un benchmark de processeurs pour voir leur classement en terme de performance, puis consulter les prix et établir un ratio prix/performance. De nombreux sites spécialisés ont déjà fait de travail et il suffit de les consulter. En outre, de nouveaux modèles ne sortent pas tous les jours, et à une époque donnée, il est assez aisé de distinguer le très haut de gamme (très cher, avec des capacités d'overclocking, un peu plus puissant seulement que le haut de gamme), du haut de gamme (performance un peu moindre, pas de capacité d'overclocking), puis du milieu et bas de gamme. De nombreux sites spécialisés vous donnent ces infos, et en français s'il vous plait (giyf).

Overclocking ; c'est un ensemble de techniques qui consiste à pousser les performances d'un processeur au delà de la vitesse à laquelle il a été certifié par le constructeur. En effet, les fondeurs se gardent des marges d'erreur car la production de processeurs n'est pas une science tout à fait exacte et que statistiquement un certain nombre brûleront à une vitesse donnée parmi un lot donné ; ils sont donc certifiés pour une vitesse moindre pour éviter les retours en garantie, mais du coup il est possible de les pousser et si on a de la chance, ça fonctionnera... si on en a moins, ben on perdra tout mais c'est le jeu. Overclocker un processeur requiert un très bon niveau de maîtrise et n'est absolument pas recommandé si on ne sait pas ce qu'on fait. Sans entrer dans les détails, il s'agit d'augmenter le voltage et la fréquence d'horloge de certains composants, ce qui n'est pas simple car dans un ordinateur tout est lié, et on ne peut pas accélérer un processeur sans tenir compte des autres éléments avec lesquels il échange des données et qui doivent pouvoir suivre le rythme faute de quoi ça va bugger grave. Ceci implique des processeurs dont le coefficient d'horloge n'est pas bloqué (et qui sont vendus plus chers, les constructeurs ayant fini par comprendre que l'overclocking les pénalisait financièrement) et des cartes mères évoluées et plus onéreuses.

Gammes de processeurs : pour une micro-architecture donnée, les constructeurs segmentent leur offre en dégradant volontairement les performances de leurs meilleurs processeurs pour en réduire le coût de production (raisons techniques) et adresser des marchés différents (raisons marketing). Les processeurs différent en premier lieu par le nombre de cœurs (mono core, dual core, quad core, octo core) ; plus il y a de cœurs, plus le processeur sera apte à faire fonctionner en parallèle plusieurs programmes ou à faire tourner plus vite les programmes spécifiquement optimisés pour exploiter les architecture à plusieurs cœurs. Ensuite, les processeurs peuvent différer par de nombreux critères moins évidents à cerner en terme d'impacts (d'où l'intérêt des benchmarks) tels que la quantité de mémoire cache interne, la taille ou la vitesse de tel bus de communication, et le support ou non de tel jeu d'instructions facultatif ...

Jeu d'instructions facultatifs : si l'architecture définit un jeu d'instruction requis, il y a également des jeux d'instructions supplémentaires dédiés à des usages spécialisés qui sont facultatifs (et implémentés par des puces supplémentaires spécialisées qui assistent le processeur dans son travail). Ces jeux supplémentaires sont divers et œuvrent dans le domaine du son et de l'image (afficher rapidement une image 3D en haute résolution demande une puissance de calcul phénoménale et le processeur seul n'y arriverait pas), de la cryptographie (AES-NI chez Intel ; le cryptage des données implique le recours a des algorithmes mathématiques très complexes qui nécessitent une grande puissance de calcul, ici aussi le processeur a besoin d'aide si on ne veut pas ralentir toute la machine à cause de ces calculs), de la sécurité et du support à la virtualisation (domaine professionnel, je laisse de côté).

Si vous prévoyez de crypter toutes vos données sur vos disques, ou de crypter les communications réseau effectuées par votre machine - SSL, VPN etc. - il sera préférable de choisir un modèle qui a le support requis. De même, si vous prévoyez de faire un usage très important de l'image (exécuter des jeux dernier cri en haute résolution sur des grands écrans, faire de la retouche photo professionnelle sur des très grosses images), il vous faudra prévoir un processeur adapté ainsi qu'un contrôleur vidéo dédié.

Contrôleur vidéo: c'est un dispositif dédié à l'affichage (c'est lui qui est relié à votre prise VGA ou DVI ou HDMI qui connecte votre écran à votre ordinateur), communément appelé carte (à tort) ou contrôleur vidéo.

La plupart des processeurs modernes embarquent en leur sein un contrôleur vidéo largement assez performant pour un usage bureautique mais pour un usage plus poussé (jeux, traitement vidéo), il est requis d'ajouter une, voire deux pour les fous furieux (systèmes Crossfire et SLI), cartes vidéos dédiées. Ces cartes sont onéreuses et amènent des problématiques supplémentaires (elles prennent de la place sur la carte mère et dans le boitier, elles chauffent et nécessitent des systèmes de refroidissement, il faut que la carte mère dispose des bons slots d'extension pour les brancher et en optimiser l'usage).


Socket
On trouve à la base de tout CPU un certain nombre de broches avec une certaine disposition, et pour pouvoir le brancher sur une carte mère, celle ci doit prévoir la partie femelle correspondante. On appelle cette prise femelle un Socket.

On voit donc ici que le choix d'un processeur implique le choix d'une carte mère disposant du socket adapté (voir plusieurs pour les machines multi-processeur mais nous n'aborderons pas ce type de solution).

Nous avons parlé plus haut de la possibilité d'upgrader un ordinateur en changeant son processeur pour un plus moderne (et bien sur basé sur la même architecture, on ne peut pas mettre un ARM à la place d'un x86 sinon l'OS ne fonctionnerait plus). Cependant, de plus en plus souvent chez les fondeurs un changement de micro-architecture entraîne un changement de format du socket ; parfois pour des raisons normales (liées à l'évolution de la micro-architecture), parfois sans raison valable apparente > il s'agit alors d'une volonté de l'industrie de forcer les consommateurs à changer leur carte mère (et potentiellement en cascade d'autres composants branchés dessus) pour bénéficier des dernières améliorations, une forme scandaleuse d'obsolescence programmée.


Chipset
Un poil plus délicat à expliquer en raison d'un abus de langage fréquent.

Le terme Chipset est normalement générique et désigne un ensemble de composants informatiques (set = ensemble, chip = puce). On trouve sur une carte mère de nombreuses puces ou ensemble de puces pour divers besoins.

Mais dans le contexte de l'assemblage d'une machine on utilise ce terme pour désigner plus spécifiquement un chipset particulier (le southbridge pour les férus d'architecture) qui est chargé, en gros et en simplifiant un peu (bon beaucoup), de gérer l'accès aux disques (disques durs ou SSD), aux prises USB, au clavier, à la souris, aux cartes d'extension.

Dans les faits, le chipset est directement soudé sur la carte mère et le choix de la carte mère implique donc le choix du chipset, et comme nous l'avons déjà vu celui du socket, qui conditionne lui même le choix du processeur (parmi plusieurs possibilités).

Quelle importance ? Comme pour un même format de socket, il peut exister des cartes mères proposant différents chipsets, on se trouve à faire un choix, et ce choix est d'importance : en effet, le chipset détermine par exemple le nombre de disques qu'on peut utiliser dans l'ordinateur, le type de disques durs qu'on peut brancher (selon la version de la norme supportée par le chipset), le support de l'USB en version 2 ou 3 (USB 3 est 10x plus rapide que USB2, c'est très loin d'être négligeable) etc.


SoC
System On a Chip

Comme en informatique tout est toujours compliqué, il existe des architectures où au lieu d'avoir un couple CPU + Chipset, on a uniquement un CPU qui intègre directement en son sein les fonctions habituellement gérées par le chipset. On appelle ceci SoC (System On a Chip).

Ceci permet d'avoir des CPU qui consomment moins d'électricité, qui dégagent moins de chaleur et qui donc n'ont pas besoin d'un système de refroidissement actif (pas besoin d'installer au dessus de la CPU un ventilateur qui prend de la place). Par contre, ces SoC sont moins performants que le couple CPU + Chipset. Ils sont utilisés par exemple dans les tablettes (ben oui, allez mettre un ventilateur dans un truc qui fait 1 cm d'épaisseur ...), les smartphones (même punition et en outre la question de la consommation électrique est encore plus essentielle ici), et diverses appliances comme par exemple les box Internet (là plus pour une question de coût je dirais, et de meilleure fiabilité dans le temps que pour une question d'encombrement).

Ces SoC sont, à ma connaissance du moins, toujours vendus pré-installés sur des cartes mères (on ne peut pas acheter la CPU et une carte mère de son choix et les assembler, c'est fait en amont à la fabrication).


SSD
C'est comme un disque dur mais ça n'utilise pas de partie mécanique, c'est basé sur l'utilisation de mémoires particulières qui sont non volatiles (quand le courant est coupé, l'information qui est dans la mémoire n'est pas perdue contrairement à la RAM).

Bref, c'est beaucoup plus rapide et fiable qu'un disque dur traditionnel qui utilise des parties mécaniques (un moteur, des roulements à bille, un doigts de lecture etc.). Par contre, c'est beaucoup beaucoup beaucoup plus cher et on en réserve donc généralement l'usage au stockage de l'OS (les données, beaucoup plus volumineuses, restant stockées sur des disques durs traditionnels de beaucoup plus grande capacité)

En alternative aux disques SSD avec des capacité parfois superflues (on ne trouve désormais plus sur le marché que des modèles d'au moins 120 Go), il est possible sur certaines cartes mères d'installer une mémoire flash ou une clé USB pour stocker l'OS (assez similaire au SSD mais plus petit et moins coûteux).


RAM
C'est la mémoire vive d'un ordinateur (à ne pas confondre avec les disques qui servent à stocker les données et qu'on appelle parfois mémoire de masse, ni avec d'autres type de mémoires utilisées pour divers besoins mais dont vous n'avez généralement pas à vous soucier). Bon ceci dis, si confondez mémoire vive et mémoire de stockage, je doute que vous soyez en train de lire cet article.


Il existe différentes normes de mémoire, à priori la RAM à utiliser sera de la DDR3. L'utilisation de DDR4 sera sans doute possible avec certaines configurations récentes (dernières génération Intel Core) mais à priori ça ne présente pas grand intérêt, voire c'est contre-productif (norme trop récente).

La RAM ECC est une variante qui apporte la correction automatique des erreurs, ce type de RAM est fréquemment utilisé dans les serveurs qui ne supportent pas l'approximation et peut être requise dans certains cas.

Certaines configuration autorisent ou requièrent (plus rarement) des variantes un peu spécifiques :
  • LP, Low Profile pour entrer sur des cartes mère de petite taille permettant de bâtir des systèmes peu encombrants
  • mémoire dîte DDR3L pour Low Voltage qui se content d'une tension de 1.35V où une mémoire classique requiert 1.5V et consomment donc moins. Pour les machines qu'on veut les plus petites et silencieuses possible (moins de consommation = moins de besoin de refroidissement = plus petit boitier ...) 
Il est préférable de choisir des barrettes de RAM certifiées par le fournisseur de la carte mère retenue mais ce n'est en rien une obligation.

Pour pouvoir utiliser une quantité de RAM supérieure à 4 Go, il faut impérativement une architecture 64 bits (architecture processeur 64 bits, système d'exploitation 64 bits).

Stockage
Le stockage des données et des programmes est généralement effectué sur des disques durs mécaniques (par opposition aux SSD qui sont totalement électroniques).

La capacité de stockage des disques ne cesse de progresser au fil des années. On trouve actuellement des disques de 4To. Attention cependant, pour profiter pleinement des disques de grande taille ( > 2.2 To), il faut  une carte mère UEFI (le BIOS ne vous permettra pas de démarrer un OS installé sur un disque de plus de 2.2 To).

Les disques existent en différents formats physiques (on parle bien de leur taille, pas de leur capacité, ou des normes qu'ils supportent). Pour l'essentiel, il existe des disque 3"1/2 et des disques 2" 1/2. Les disques 2"1/2 sont surtout utilisés dans les ordinateurs portables, et les 3"1/2 dans les PC de bureau. En général, les disques 3"1/2 tournent à 7 200 RPM, et les disques 2" 1/2 à 5 400 RPM (ils sont utilisés dans les portables car ils tournent moins vite et consomment moins d'électricité et chauffent moins, mais du coup ils sont moins rapide ce qui est une des raisons pour lesquelles les portables sont moins puissants que les PC de bureau, et qu'ils sont de plus en plus souvent équipés de disque SSD ou hybrides - un disque mécanique avec un petit SSD couplé utilisé en cache pour accélérer les accès aux données les plus fréquemment utilisées).

Cependant, comme toujours en informatique cette règle n'est pas absolue. Il existe par exemple chez Western Digital la célèbre gamme des VelociRaptor qui tournent à 10 000 RPM et sont au format 2"1/2. Ce sont cependant des périphériques bien plus coûteux.

Par ailleurs, sur le marché professionnel on trouve des disques SAS (évolution de la norme SCSI) qui tournent à 15 000 RPM. Mais ce sont des solutions extrêmement onéreuses réservées au marché professionnel des serveurs de production.

Autre donnée importante (après la capacité de stockage, la taille, la vitesse de rotation), la norme supportée. Autrefois, on utilisait des disques à la norme IDE (également appelée PATA, Parallel ATA) mais ceci fait maintenant partie du passé et les derniers modèles de carte mères ne proposent souvent même plus de connecteurs à la norme IDE (on ne peut donc y brancher de disques à cette norme). Aujourd'hui la norme utilisée est la norme SATA (Serial ATA) qui existe en 3 versions. La meilleure version est la SATA III (6 Gbits de débit) mais son support n'est pas encore universel et le SATA II (3 Gbirs de débit) reste très présent à cette date.


Boitier
Bon tout ceci est bien beau mais pour le moment, on a une carte mère et plein de merdier branché dessus ce qui n'est pas très pratique.

Donc pour finir (ou presque), il nous faut un boitier pour ranger tout ça. Alors, les boîtiers (case en anglais) existent en divers formats : grande tour, moyenne tour, petite tour, pc de bureau etc.., les dénominations sont nombreuses ; les format "tour" sont plutôt prévus pour être posés au sol en position verticale, les plus grands permettent d'embarquer plus de matériel (de nombreux disques, des systèmes avec deux cartes vidéos puissantes et encombrantes, et plein de ventilateurs pour refroidir tout ça). Les formats PC bureau sont plutôt prévus pour être posés horizontalement sur le bureau, voir sous l'écran et peuvent être plus ou moins gros. Puis on a des formats divers destinés à des machines qu'on veut poser discrètement dans un coin de son salon.



Plus que la taille, ce qui est à considérer est le format de carte mère que les boîtiers savent accueillir en leur sein : ATX, micro ATX, mini ITX. Il faut bien sur une cohérence entre le format de votre carte mère et le format que le boitier sait recevoir

Ensuite, les boîtiers prévoient des emplacements pour fixer des disques durs ou SSD, en format 2"1/2 et 3"1/2, ainsi que pour des périphériques au format 5"1/4 (lecteur/graveur de DVD pour l'essentiel). Il faut que votre boitier puisse recevoir le nombre de disques que vous prévoyez de brancher sur votre carte mère.

Les boîtiers comportent souvent sur le devant, le dessus, voire le côté des connecteurs USB ou audio (prise casque, prise microphone). Selon l'usage que vous prévoyez, ça peut être un critère de choix. Ces connecteurs seront reliés à la carte mère au moment de l'assemblage.

Les boîtier peuvent être vendus avec ou sans alimentation électrique. Les alimentations électriques fournies sont généralement de qualité moindre que celles vendues par ailleurs, et il est préférable d'acheter une boitier sans alimentation électrique et d'acheter à part une alimentation et de l'installer dans le boitier.

Enfin, la qualité d'assemblage et de conception d'un boitier est à considérer. Il ne s'agit pas de se couper avec des arrêtes saillantes, que le boitier vous reste dans les mains au second démontage, ou de piquer une crise de nerf en essayant de fixer un disque. Il existe des acteurs reconnus (mais souvent chers) qui ont des produits très qualitatifs.


Alimentation électrique
Un ordinateur fonctionne avec du courant continu, sous des tensions bien précises. Le courant délivré par EDF est du courant alternatif. L'alimentation électrique a donc pour fonction de convertir le courant alternatif en courant continu de qualité (sans pics qui pourraient endommager les fragiles composants électroniques).

Les alimentations sont, à ma connaissance, au format ATX et s'installent dans tout type de boitier "standard" (je suppose qu'il doit exister des cas particuliers exotiques).

Au moment du choix, il faut s'assurer de bien dimensionner la puissance de l'alimentation ; trop faible ça ne fonctionnera pas, trop puissante vous la paierez trop cher et elle dégagera de la chaleur inutilement. Là pas de miracle, il faut regarder la puissance requise cumulée de l'ensemble de vos composants... pas évident mais heureusement il existe des sites pour ça, sinon vous n'avez plus qu'à trouver un pote électricien.

Le bloc d'alim fournit des connecteurs qui permettent de raccorder les éléments à alimenter :
  • Un connecteur spécifique (en deux parties généralement) pour alimenter la carte mère (connecteur ATX)
  • plusieurs connecteurs à 4 broches femelles, appelés MOLEX, plus très utiles aujourd'hui qui permettent d'alimenter certains ventilateurs ou des périphériques un peu anciens (périphériques IDE comme les anciens disques durs et encore parfois les lecteur/graveur de DVD)
  • plusieurs connecteurs à la norme SATA qui permettent d'alimenter les périphériques à cette norme (donc vos SSD et disques durs, lecteur/graveur de DVD récents)
  • et parfois des connecteurs plus exotiques pour certains besoins spécifiques (par exemple fournit un surplus d'alimentation à une carte vidéo surpuissante de la mort qui tue)

Connecteur MOLEX
Connecteur SATA


Il faut veiller à ce que votre alimentation prévoie suffisamment de connecteurs du bon type en fonction de ce que vous avez à brancher (en particulier, faire attention au nombre de disques). Il existe des adaptateurs Molex vers Sata qui permettent d'utiliser les connecteurs Molex pour alimenter des périphériques Sata (et en outre de les dédoubler pour certains).

Il existe des alimentations modulaires ou semi modulaires. Vous pouvez enlever les connecteurs inutiles, ce qui évitera qu'ils encombrent inutilement le boitier et gênent la circulation d'air.

Pour vous aider à choisir une alimentation : voir ici par exemple.


Trucs divers et variés
Le refroidissement de votre ordinateur se fait généralement par des ventilateurs (il existe aussi des systèmes de refroidissement liquide mais je n'en parlerais pas). Certains ventilateurs fonctionnent en aspiration (ils aspirent l'air frais extérieur vers l'intérieur pour le refroidir) et d'autre en aspiration (ils évacuent l'air chaud de l'intérieur vers l'extérieur).

Il y a généralement un ventilateur au dessus du processeur (pas le cas pour les SoC et modèles de processeur basse consommation qui se contentent d'un refroidissement passif constitué par un bloc de métal - alu en général- posé sur le processeur et qui le refroidit par capillarité via ses ailettes), plus un nombre variable dans le boitier.  Celui du processeur est fourni avec le processeur lors de son achat, en général, et les bons boîtiers sont bien équipés en ventilateurs de qualité (et bien conçus pour ne pas trop se prendre la tête tant qu'on reste dans des configurations assez standards, faut de quoi le manuel de votre boitier vous donnera les instructions pour mettre en place un refroidissement plus important pour des configurations musclées).

Un ventilateur de qualité n'est pas bruyant, résiste dans le temps, et peut adapter sa vitesse de rotation en fonction des besoins de refroidissement.  Cette adaptation peut se faire en statique : suivre ce lien pour plus d'informations. Mais il peut également se faire de façon dynamique avec les cartes mère modernes : dans ce cas, on branche les ventilateurs sur la carte mère (ils sont alors alimentés par la carte mère au lieu d'être alimentés par le bloc d'alimentation) et c'est la carte mère qui va adapter leur vitesse en fonction de la température de la carte (ou du processeur) mesurée en temps réel via des capteurs de température intégrés à la carte mère. Des logiciels permettent également d'agir dans ce cas (et également le BIOS).

Si vous achetez des ventilateurs supplémentaires ou remplacez ceux fournis avec votre boitier, faites attention au fait qu'il existe deux type de connectiques pour les ventilateurs (à trois ou quatre broches).

Quand on installe un processeur dans une carte mère, on doit généralement (sauf Soc etc.) mettre de la pâte thermique entre celui ci et son bloc de refroidissement. De nos jours, on n'a généralement pas besoin de s'en préoccuper car tout est fourni en standard (avec le processeur vient le ventilateur et une version simplifiée d'utilisation de pâte), mais si ce n'est pas votre cas, ou que vous voulez changer le ventilateur fourni par un autre modèle, il vous faudra acheter de la pâte thermique. Artic Silver est réputé pour ses produits.


Assemblage

Quelques conseils de bon sens. Il faut faire les choses dans le bon ordre.

Il faut un peu de dextérité et ne pas se comporter en brute épaisse, la casse coûte cher. Si vous avez de gros doigts maladroits, trouvez vous un acolyte ou passez votre chemin.

L'électronique craint l'électricité statique. Déchargez vous en touchant un élément métallique quelconque avant de manipuler les composants (cramer un processeur à 200 euros ça peut mettre de mauvaise humeur).

Pas de crainte à avoir sur les branchements ; il y a des détrompeurs et on ne peut pas brancher un câble à l'envers (enfin on ne peut plus, j'ai cramé le premier ordinateur que j'ai voulu assembler au siècle dernier). Si ça ne rentre pas, c'est à priori que vous n'êtes pas dans le bon sens. De façon générale, ne forcez pas, quelque fois c'est un peu dur mais en cas de doute, commencez par vérifier, lubrifiez un peu (heu je m'égare là), c'est juste du bon sens et de l'observation. Et en cas de doute, google est là pour vous aider.

La carte mère est fragile de par sa taille et sa faible épaisseur, le processeur s'enfonce en force dessus, il faut donc mieux le faire avant de la fixer au fond du boitier pour éviter de la casser en deux (elle repose sur des vis au fond du boitier et donc en appuyant dessus on la fait fléchir). 

La mémoire peut aussi être installée avant de fixer la carte  mère dans le boitier mais c'est secondaire.

Sur la carte mère peuvent se brancher des petits connecteurs (tout petits...) pour par exemple relier les connecteurs en façade du boitier. Il peut être plus simple de les brancher avant de fixer la carte  mère dans le boitier, on a plus de place et on voit mieux ce qu'on fait.

Si il y a la place, il est sans doute mieux de fixer l'alimentation électrique et les disques dans le boitier avant de poser la carte mère, vous éviterez peut être de faire tomber une vis, un tournevis, un disque, votre belle mère, sur la carte mère.

Par contre, les cartes d'extensions, je les met une fois la carte en fond de panier pour éviter de galérer pour la positionner sur ses points de fixation et me battre avec la découpe au fond du boitier dans lequel viennent se caler les connecteurs externes de la carte mère (prise écran, prise câble réseau etc.).

Je fais le câblage en dernier : raccordement des connecteurs SATA entre la carte mère et les disques, raccordement de l'alimentation électrique ...

Avant de fermer le boitier, je branche écran/clavier/souris et j'essaie d'allumer le PC, je teste les connecteurs en façade, je vais dans le BIOS vérifier que les disques sont bien reconnus, histoire de ne pas devoir le ré-ouvrir si il y a un souci quelconque.


Conclusion (temporaire toujours)

Si à ce stade vous n'êtes toujours pas rebuté par la difficulté et toujours motivé pour assembler votre ordinateur, vous avez passé une grosse étape (surtout si vous partez de zéro).

Dans le contexte de l'assemblage d'un NAS, il nous reste à étudier quelques préconisations spécifiques pour le choix des composants, selon les cas d'usage et les logiciels choisis (OS en premier lieu), tout étant lié (selon ce qu'on vaut faire avec son NAS, ça dictera nos choix en terme de logiciels et de composants).

Si tout ceci vous a fait peur, sachez que c'est moins compliqué que ça en a l'air. Et qu'on trouve facilement des ressources bien plus détaillées que cette introduction rapide sur internet ; par contre, il ne faut pas avoir peur d'y passer du temps et de se gratter un peu la tête.

Pour chacune des composants évoqués, il existe des geeks qui écrivent des blogs dédiés ; il y a des gars capables de se prendre la tête pendant des jours pour choisir tel ou tel modèle de ventilateur car il a un roulement à bille ultra haute performance ou je sais pas quel truc encore ; alors conservez un regard critique car nombreux sont ceux qui sont là pour vous pousser à acheter des modèles onéreux où souvent un truc à 5 euros fait à peu près le même job, mais ça reste une bonne source d'infos.


Sources utiles

Pour moi le meilleur site pour progresser dans sa compréhension du fonctionnement d'un ordinateur, faut fouiller un peu mais c'est une mine d'or. D'ailleurs le thème est parlant "uncomplicating the complicated" et c'est extrêmement didactique (mais en anglais faut pas non plus trop en demander) : http://www.hardwaresecrets.com (cherchez les articles, "tout ce que vous devez savoir sur ...").

Le site incontournable, version française du site US, pour se tenir au courant de l'actualité hardware avec des articles de fonds et des tutoriaux : www.hardware.fr

Un autre site que je trouve très bien pour ses nombreux dossiers de synthèse parfois très fouillés  et pleins d'enseignements : http://www.lesnumeriques.com. J'aime aussi beaucoup tom's hardware http://www.tomshardware.fr/

Vous trouverez avec facilité de nombreux guides d'achat expliquant tout ce qu'il y a à savoir : ils sont mis en ligne par les marchands en ligne, ils poussent un peu à la consommation des composants plutôt haut de gamme plus rémunérateurs pour les commerçants, mais pour autant ils sont une assez bonne source d'information. Cependant, ils sont surtout utiles pour les bases et le mainstream. Par exemple, la rubrique "Guide d'achat" de http://www.configspc.com/ sera un complément utile de cet article.

Ha et pour aller plus loin et creuser le sujet du hardware des serveurs, allez donc ici.

Enfin, je répète GIYF : faites simplement attention à croiser les sources et à vérifier la date de publication des articles (car les choses évoluent très vite et un article datant d'un an peut raconter des choses vraies à sa date de parution mais qui ne sont plus du tout d'actualité).