Multisites WordPress et Drupal sur Debian

Après plusieurs heures et jours de recherche pour mettre en œuvre le multi-site, je vous dévoile en guise de cadeau, les étapes pour en venir à bout. 

Sur VirtualBox configurer le réseau de votre machine en Nat puis commençons doucement et proprement par l’installation des mises à jour : 

Clone de Vm Debian 3D Wp et drupal OK [En fonction] - Oracle VM Virtua180x apt update apt tull-upgrade_  

apt update && apt full-upgrade 

Installation des services 

Afin de ne pas taper votre mot de passe toutes les cinq secondes, je vous conseille de vous connecter en root avec la commande : 

su  

Bitvise - Passage en root 

– Apache2 

On commence avec le célèbre serveur Apache2. Il faut taper la commande suivante : 

apt-get install apache2 

Installation d'Apache2 

N’oubliez pas d’appuyer sur la touche O puis entrée pour valider l’installation du paquet. 

– Installation php

# apt-get -y install php php-mysql php-curl

– Installation de MariaDB Server

# apt-get -y install mariadb-server

– Sécuriser MySql Serveur

On va sécuriser le serveur en créant un mot de passe pour l’accès administrateur, puis créer un autre utilisateur. Pour cela tapez la commande suivante :

mysql_secure_installation 

Sécurisation du serveur MySql 

Le programme vous demande le mot de passe courant à MySQL. Étant donné que c’est une installation neuve, il suffit de taper sur la touche entrée pour signifier qu’il n’y en a pas. Le système demande ensuite si vous souhaitez changer le mot de passe.

Changement du mot de passe Root sur MySql Server 

Vous devez taper sur la touche entrée et saisir un mot de passe. Faites attention à ne pas mettre n’importe quoi. C’est le mot de passe du compte administrateur, alors il doit respecter les règles de création de mot de passe complexe. 

Ensuite MySQL server demande si vous souhaitez supprimer les comptes anonymes qu’il a créé au préalable. Je vous conseille vivement de les supprimer aussi.

Suppression des comptes anonymes de MySql Server 

Pour les supprimer, vous devez taper sur la touche Y et appuyer sur entrée. Maintenant nous allons passer à un autre paramètre. Accepte-t-on ou pas que l’administrateur du serveur puisse s’y connecter à distance ? Encore une fois, je vous conseille de désactiver la fonction de connexion administrateur à distance.

Désactiver la connexion à distance par l'administrateur au serveur MySql 

Maintenant, le programme demande s’il doit supprimer la base de données de test générée par défaut.

Suppression de la base de données de Test sur MySql Server 

Après cela, MySql vous propose de recharger les privilèges sur les tables. Je vous conseille aussi de faire Yes.

Rechargement des privilèges MySql 

Maintenant configurer le réseau de votre machine accès par pont.

Tester notre installation

On a déjà fait pas mal de choses. Je vous propose de vérifier que tout est fonctionnel. Petit récap des opérations précédentes : on a installé notre serveur Apache2 puis MySql et PHP 7. On peut donc maintenant accéder à notre serveur web à partir de notre navigateur. Tapez l’IP de votre serveur dans la barre d’adresse. Pour connaitre l’adresse ip:

# hostname -I

 

Ouverture de la première page Apache2 

Si vous avez bien suivi le tutoriel, vous devez vous retrouver sur la même page que moi.

Installation de WordPress

Téléchargement de l’archive 

Avec la commande wget, nous téléchargeons la dernière version de WordPress.

# cd /tmp 

Décompression de l’archive dans « /var/www/html » 

Nous allons installer unzip pour la décompression ensuite déplacer le dossier vers html.

# apt-get install unzip (install unzip) 

# unzip latest.zip -d /var/www/html  (décompresse le dossiers précédemment téléchargé) 

# cd /var/www/html (on vas dans le répertoire) 

# rm index.html (supprime le fichier index.html) 

Installation de Drupal 

Préparation de l’environnement

Pour commencer, ouvrez votre terminal. Il faut ensuite vous rendre dans le répertoire qui contiendra le site Drupal que nous allons installer. Pour cela, entrez la ligne suivante :

cd /var/www/html

Une fois dans le bon répertoire, il faut maintenant télécharger l’archive depuis le site Drupal.org. 

wget https://www.drupal.org/download-latest/tar.gz 

Le téléchargement de l’archive se lance. Une fois celui-ci terminé extrayez son contenu.

tarxvf tar.gz 

Nous allons maintenant chercher le nom du dossier pour le renommer. 

ls  

img-ls 

Le nom du dossier apparaît alors comme le montre l’image. Dans ce tutoriel, le dossier porte le nom de la version actuelle de Drupal, soit la 8.6.2. De votre côté le nom du dossier doit donc différer car la version ne sera pas la même. 

Vous pouvez le renommer comme vous le souhaitez. 

Pour l’exemple, nous le renommons par ‘site_drupal’. 

Entrez à la place de « drupal-8.6.2 » le nom de votre dossier.

mv drupal-8.6.2 site_drupal 

En faire de même pour wordpress. 

Maintenant on va entrer dans le dossier pour pouvoir y apporter des modifications.

cd site_drupal

Selon votre configuration Apache, il se peut que le propriétaire des fichiers et l’utilisateur Apache soient différents. Cette différence peut poser des problèmes de droit d’écriture dans la suite de l’installation. Pour y remédier, nous allons changer le propriétaire du répertoire pour donner ces droits à Drupal. Il existe une commande qui nous le permet, cependant elle est à manier avec précaution car elle peut avoir de graves conséquences. Cette commande va impacter le répertoire et son contenu. 

 Veillez donc à être dans le bon dossier ! 

Pour vérifier simplement où vous vous situez, utilisez cette commande : 

pwd 

img-pwd 

Si, comme dans l’image, le résultat de cette commande se finit bien par ‘…/site_drupal’ alors vous êtes dans le bon dossier. 

Si ça n’est pas le cas, entrez cette ligne de commande. 

cd /var/www/html/site_drupal 

Une fois assuré d’être au bon endroit vous pouvez entrer cette commande.

sudo chown -R www-data:www-data * 

En faire de même pour wordpress. 

Création d’une base de données pour WordPress et Drupal 

Pour ne pas être bloqué lors de l’installation de WordPress, je vous propose de créer en amont la base de données. Ainsi qu’un utilisateur qui aura les droits de lecture/écriture. Pour cela, on doit d’abord se connecter à la base de données en console. Vous devez taper la commande suivante : 

mysql -u root -p  

Vous devez aussi taper votre mot de passe. 

Connexion MySql-MariaDb 

Une fois connecté à la base de données, tapez les commandes suivantes en changeant password par un mot de passe costaud (pour drupal, changé wordpress par drupal) :

CREATE DATABASE wordpress; 

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER 

ON wordpress.* 

TO wordpress@localhost 

IDENTIFIED BY ‘password‘; 

FLUSH PRIVILEGES;  

Celles-ci vont nous permettre de créer la base de données et de donner les droits à l’utilisateur fraîchement créé. Le résultat est le suivant : 

Création de la base de données WordPress et d'un utilisateur wordpress 

On peut maintenant sortir de la base de données. Pour cela, tapez la commande : 

Exit  

Serveur Web Multi-Site

Déclaration des sites existants

Dans Apache2, les sites disponibles (on parle de virtualhosts, ou vhost) sont déclarés à l’aide de fichier dans le répertoire : /etc/apache2/sites-available 

Partons du principe que vous souhaitez mettre en ligne 2 sites que nous nommerons site_1 et site_2 (pourquoi faire compliqué ?).

Apache vous livre lors de son installation dans ce même répertoire un fichier “000-default.conf” qui va nous servir de base pour nos 2 sites. 
On va donc en faire une copie :  

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site_1.conf 

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site_2.conf  

A présent, nous allons éditer le nouveau fichier de configuration en jouant la commande suivante :  

nano site_1.conf  

Nous allons y insérer le chemin pour accéder à notre site web. Faites bien attention à mettre le nom de site choisi précédemment.

Clone de Vm Debian 3D Wp et drupal OK [En fonction] - Oracle VM Virtua180x GNLI nano 3.2 VirtualHost s te_l.con # The ServerName direct ive sets the request scheme, hostname and port that # the server uses to ident ifu itself. This is used when treat ing # redirect ion URLs. In the context of virtual hosts, the ServerName # specif ies uhat hostname must appear in the request 's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicit lg. DocumentRoot ServerName site_l (Directory opt ions Indexes Followsgrrn-inks iVieuJs Require all granted irectorg> Directorylndex index .html index.ohp # Available loglevels: trace8, # error, crit, alert, emerg. tracel, debug, info, not ice, warn , # It is also possible to conf igure the loglevel for part icular # modules, e.g. info ssl:ujarn Error-cog « error . log CustomLog log comb ined # For most conf igurat ion files from conf-available/ , which are # enabled or disabled at a g 10bal level, it is possible to # include a line for only one part icular virtual host. For example the # following line enables the CGI conf igurat ion for this host only # after it has been global lu disabled with « a2disconf ». *Include conf-available/serve-czi-hin. cnnf Lecture de SS I ignes Aide Quitter Écrire Lire fich. Chercher Remplacer Couper C011er Just if ier Orthograp . Pos. cur. Aller lig. Annuler  » />

 

 

DocumentRoot « /var/www/html/site_1 » 

ServerName site_1 

<Directory « /var/www/html/site_1 »> 

Options Indexes FollowSymLinks MultiViews 

Require all granted

DirectoryIndex index.html index.php 

Faites de même pour site_2.conf. 

Activation/Désactivation des sites

  Activation : 

Sudo a2ensite site_1  

 Désactivation : 

Sudo a2dissite site_2

Adaptation du fichier /etc/hosts 

Éditez votre fichier /etc/hosts et modifiez-le comme suit avec l’ip de votre machine pour qu’elle fasse le rapport entre vos vhost et le localhost. 

hosts - Bloc-notes Fichier Edition Format Affichage 127. Ø.Ø.I localhost ::1 localhost 192.168.1.48 site 1 192.168.1.48 site 2 Aide  

Relancer le serveur apache2 et tester

sudo /etc/init.d/apache2 restart 

Ouvrez votre navigateur et testez en tapant dans la barre d’adresse :  

http://site_1/

puis

http://site_2/ 

DMZ

Le terme DMZ vient de l’anglais “DeMilitarized Zone” et veut dire zone démilitarisée en francais. En informatique, la DMZ est un sous-réseau isolé séparant le réseau local (le LAN donc) et un réseau considéré comme moins sécurisé, comme Internet par exemple. Et cette séparation est faite par un firewall.

La DMZ héberge justement des machines du réseau interne qui ont besoin d’être accessibles depuis l’extérieur, c’est le cas notamment lorsqu’ils fournissent un service fourni aux utilisateurs sur Internet (serveur web, un serveur de messagerie, proxy, RP, un serveur FTP public, DNS, VoIP, etc)

La DMZ joue le rôle de « zone tampon » entre le réseau à protéger et un réseau hostile. Les serveurs du LAN ne sont jamais exposés directement à Internet. Et à l’inverse, les personnes de l’extérieur n’ont jamais à accéder directement à des ressources du LAN. Tout doit d’abord transiter par la DMZ

En terme de sécurité cela veut aussi dire qu’en cas de compromission d’un des services dans la DMZ, le pirate n’aura accès qu’aux machines de la DMZ et non au réseau local.

A noter qu’il est aussi tout à fait possible de mettre en place des DMZ en interne afin de cloisonner le réseau interne selon différents niveaux de protection

En termes d’architecture, Il existe plusieurs façons de concevoir un réseau avec DMZ.

La première méthode est d’utiliser Un seul pare-feu avec trois interfaces réseau à créer. Le réseau externe est formé sur la première interface, entre le FAI et le firewall. Le réseau interne est formé à partir de la deuxième interface réseau. Et la DMZ à partir de la troisième interface. Et les différentes règles de firewall vont contrôler le trafic entre lnternet et la DMZ, et entre le LAN et la DMZ. Le principal inconvénient de cette architecture est que si cet unique firewall est compromis, cette architecture tombe.

Une architecture plus sécurisée consiste simplement à utiliser deux firewalls pour créer une DMZ. Le premier laisse passer uniquement le trafic vers la DMZ. Le second n’autorise que le trafic entre la DMZ et le réseau interne. Cette configuration est considérée comme mieux sécurisée, puisqu’un pirate devra compromettre deux machines pour accéder au LAN interne.

Sources: https://bit.ly/2sK5Z40

LE CHIFFREMENT SSL/TLS

Bonjour à tous!

Dans cette vidéo je vais vous parler de chiffrement des communication sur le web. Plus concrètement c’est lorsque vous surfez sur des sites en https. Alors oui, vous savez maintenant que le S c’est pour dire que la communication est sécurisée car chiffrée.

Et dans cette vidéo, je vous explique comment tout ça marche dans cette vidéo.

Mais voyons ce qu’est le chiffremement web avec un exemple :

  • Lorsque vous vous connectez sur le site de votre banque, la connexion se fait toujours en https pour des raisons de sécurité
  • Vous pouvez vérifier ce sera toujours le cas (ou alors changez de banque!)
  • Mais que se passerait-il si la communication se faisait en HTTP?

Eh bien c’est simple, toutes les informations échangées transiteraient en clair. Ce qui veut dire qu’une personne malveillante peut intercepter les échanges avec votre banque et donc avoir toutes les informations qui y transitent

En fait le HTTPS c’est une connexion HTTP dans un tunnel chiffré SSL/TLS. Et ce tunnel va sécuriser vos échanges car mêmce si une personne malveillante intercepte vos échanges, les informations sont chiffrées et donc incompréhensibles pour elles.

SSL veut Secure Sockets Layer. TLS veut dire Transport Layer Security. SSL et TLS sont des protocoles de sécurisation des échanges sur Internet. Aujourd’hui c’est TLS qui est utilisé, SSL étant obsolète. Mais on parle parfois de SSL/TLS pour parler juste de TLS.

Maintenant voyons ce qui se passe derrière ce chiffrement SSL/TLS.

Le chiffrement consiste à transformer vos données afin de les rendre illisible grâce un algorithme de chiffrement et une clé de chiffrement

La clé de chiffrement est utilisé par un algorithme, pour chiffrer et déchiffrer des données utiles (l’information qu’on veut faire transiter). La clé de chiffrement c’est une donnée (en gros c’est une suite de bits comme une phrase ou une série de chiffres) qu’on peut voir comme un mdp. Un algorithme de chiffrement c’est juste une méthode de chiffrement, cad une façon de rendre inintelligible vos données.

Pour pouvoir lire ces données de nouveau, il est nécessaire de connaître l’algorithme et la clé de chiffrement pour les déchiffrer

Maintenant que vous avez compris ça, passons à la notion de cryptographie symétrique :

  1. Ici Alice et Bob ont la même clé secrète.
  2. Alice veut envoyer un message à Bob. Elle veut que personne d’autre que Bob ne puisse lire ce message. Du coup, elle prend sa clé secrète et va chiffrer le message avec
  3. Elle envoie le message chiffré à Bob
  4. Lorsque Bob recoit le message d’Alice, il ne peut pas encore le comprendre à la reception. Il faut d’abord qu’il déchiffre le message avec la même clé secrète. Et c’est seulement là qu’il pourra lire le message
  5. Et si Bob veut répondre à Alice de façon sécurisé, il peut utiliser la clé secrète pour chiffrer sa réponse et ensuite l’envoyer à Alice.

Il y a donc une seule clé pour chiffrer et déchiffrer un message

Le Gros problème de la cryptographie symétrique c’est l’échange de ces clés. En effet, Le fait que les 2 personnes. doivent utiliser la même clé impose d’avoir un canal sécurisé pour l’échange de la clé parce que si quelqu’un d’autre arrive à s’emparer de la clé… il sera capable de lire le message…

Passons maintenant à la cryptographie asymétrique

Le principe du chiffrement asymétrique repose sur l’utilisation de 2 clefs :

  • on appelle une des 2 clefs la clef privée et l’autre la clef publique.
  • Quand l’utilisateur chiffre avec la première clef, il peut déchiffrer avec la deuxième clé
  • Quand l’utilisateur chiffre avec la deuxième clef, il peut déchiffrer avec la première clef.
  • Peu importe l’ordre des clés utilisés parce qu’en fait ces 2 clés ou algorithme de chiffrement sont liés mathématiquement

Reprenons avec Alice qui a maintenant une clé privée et une clé publique :

  • La clef privée n’est jamais transmise à personne (ça porte bien son nom d’ailleurs).
  • Par contre, Alice peut diffuser sa clé publique à n’importe qui,
  • Donc là Alice a envoyé sa clé publique à Bob pour que les 2 puisse communiquer

Voyons maintenant comment ça marche :

  1. Ici Bob et Alice se sont transmis leur clé publique et garde leur clé privé
  2. Bob veut envoyer un message à Alice et veut que seul Alice puisse lire le message. Il chiffre donc son message avec la clef publique d’Alice
  3. Alice déchiffre le message avec sa clef privée (il n’y a qu’elle qui possède cette clef). Alice est la seule à pouvoir déchiffrer les messages qui lui sont adressés
  4. De façon similaire, Si Alice veut répondre à Bob. Alice utilise la clef publique de Bob pour envoyer le message;
  5. Bob utilisera sa propre clef privée pour le déchiffrer le message

Ce procédé assure la confidentialité de l’échange c’est-à-dire être sûr que Alice et Bob sont les seuls à échanger.

Bob est sûr que seul Alice peut lire son message puisque Bob a utilisé la clef publique d’Alice pour chiffrer son message. Seule la clé privé d’Alice peut déchiffrer le message de bob. Bob est donc sûr que seule Alice peut lire le message et inversement pour Alice avec la clef publique de Bob

Ensuite la cryptographie asymétrique garantit aussi l’authenticité de l’expéditeur :

  • C’est-à-dire que pour Bob c’est être sur le message d’Alice vient bien Alice)
  • Eh oui parce que si Bob réussit à déchiffrer le message avec la clé publique d’Alice c’est que le message a été chiffré avec la clé privée d’Alice
  • Tous ceux qui ont la clé publique peuvent déchiffrer le message d’Alice, mais seule Alice possède sa clé privé
  • Si Bob arrive a déchiffrer le message avec la clé publique d’Alice il sait que le message est bien d’Alice

Le problème va venir de la transmission de la clé publique. Notamment si une personne malveillante, qu’on va appeler M pour la suite, se positionne entre Alice et Bob, et se fait passer pour l’un d’eux et donne sa clé publique à la place. C’est l’attaque du MITM ou de l’homme du milieu en français

Il va diffuser une clé publique à Bob en se faisant passer pour ALice. Bob croit alors que c’est la clé publique d’Alice. Alice et Bob ont tous les deux la clef publique de M, en pensant qu’ils ont celle de leur interlocuteur. M intercepte et modifie l’échange de clefs entre Alice et Bob.

Du coup, lorsque Alice veut envoyer un message à Bob, elle va l’envoyer en chiffrant avec la clé publique supposé appartenir à Bob. En fait, M va intercepter le message, il va le déchiffrer avec sa clé privé et lire le message. Ensuite pour ne pas éveiller les soupçon, il va chiffrer le message avec la clé publique de bob et envoyer le message à Bob.

Comme ça Bob déchiffre avec sa clé privé pour lire le message. M est donc capable de lire les conversations entre les 2 et de récupérer des informations importantes.

Et à l’inverse, quand bob veut échanger avec alice, il utilise la clé publique de M pour chiffrer et M fait la même chose cad qu’il intercepte le message, l’ouvre, le lit et le rechiffre avec la clé publique d’alice.

Pour éviter que probleme de MITM, il faudrait pouvoir certifier l’identité du porteur de cette clé. Et ça c’est le rôle du certificat.

Un certificat  est un fichier avec ensemble de données contenant :

  • une clef publique (au minimum)
  • des informations pouvant identifier la personne : nom, e-mail, localisation…
  • des informations liées au certificat, notamment sa date de validité
  • Et une signature électronique d’une autorité de certification

La signature électronique est la preuve le certificat a bien été vérifiée par l’autorité de certification puisque qu’il y a sa signature. Elle est la garantie de son intégrité (cad la preuve que le document n’a pas subit d’altération entre l’instant où il a été signé par son auteur et celui où il a été consulté).

A noter que la signature électronique du certificat c’est la combinaison de vos information et de votre clé publique, tout ça chiffré par la clé privé de l’autorité de certification

une Autorité de Certification est l’institution responsable d’émettre ces certificats et elle garantit que les informations contenus dans ces certificats sont correctes.

Dans notre cas, si Alice veut créer son certificat, il faut qu’elle fournisse sa clé publique et des informations sur elle à l’autorité de certification et des sous (parce que ce n’est pas gratuit), qui elle vérifie tout ça, L’autorité de certification va créer un certificat pour Alice avec la signature électronique de l’AC,

Le certificat atteste donc  que la clef publique du certificat appartient bien à la personne désignée dans le certificat.

Maintenant que vous avez toutes ces notions en tête, on peut passer à l’explication du chiffrement SSL/TLS.

Imaginons que vous voulez vous connecter à votre banque, vous allez taper l’adresse de votre banque en https sur votre navigateur :

  1. Vous allez envoyer une demande de connexion sécurisée à votre banque
  2. Votre banque va alors vous envoyer son certificat avec sa clé publique
  3. Votre navigateur vérifie la signature du certificat et sa validité. Il faut savoir que le navigateur a déjà un certain nombre de clés publique d’AC dans sa base de données
  4. Ensuite le navigateur va prendre la clé publique de l’AC qui a certifié le certificat de la banque.
  5. Il va déchiffrer la signature du certificat, s’il y arrive. Cela veut dire que le certificat est de confiance car seul l’AC possède sa clé privé
  6. Si tout est OK, le client et le serveur négocie ensemble pour se mettre d’accord sur un algorithme de chiffrement ainsi qu’une clé secrète commune qu’ils vont utiliser pour cette session d’échange, connus de 2 seulement comme dans la cryptographie symétrique
  7. C’est avec cette clé que vous allez chiffrer et déchiffrer vos échanges avec votre banque et donc communiquer de façon sécurisé.

Sources: https://bit.ly/2OSGsyb

LE DNS

Sur Internet, quand vous voulez accéder à un site web via votre navigateur, on va utiliser ce que l’on appelle un nom de domaine, par exemple cookieconnecté.fr, Wikipedia.org, Youtube.com …

Bref, c’est l’adresse du site web que vous tapez sur votre navigateur.

Dans la réalité, votre navigateur, lui il va avoir besoin de l’adresse IP du serveur sur lequel est hebergé votre site web. Par exemple 194.153.205.26

L’adresse IP est un numéro d’identification qui est attribué  à chaque appareil connecté à un réseau informatique utilisant l’Internet Protocol (d’ailleurs le IP c’est pour Internet Protocol). En gros, ca veut dire que chaque ordinateur connecté à internet possède une adresse IP.

Sauf que vous l’avez compris ce serait un peu compliqué pour nous de retenir ces adresses IP. Et c’est là qu’intervient le DNS (Domain Name System) qui va “traduire” ces noms de domaines en adresses IP. La résolution de noms de domaines, c’est la corrélation entre les adresses IP et le nom de domaine associé.

Les serveur DNS sont tout simplement des serveurs qui font la correspondance entre les adresses IP et les noms de domaine associés.

Maintenant, voyons comment tout ça marche un peu plus dans le détail. Je vais vous expliquer maintenant à la notion de Hiérarchie  DNS

Le système des noms de domaine est en fait une hiérarchie dont le sommet est appelé la racine. On représente cette dernière par un point “.” pour info ce point n’apparait pas dans les addresses de site web qu’on utilise sur Internet mais c’est bien le plus haut niveau.

Les domaines se trouvant immédiatement sous la racine sont appelés domaine de premier niveau “.fr”, .com, .org, etc (ou top domain level en français)

Dans un nom de domaine, les domaines successifs sont séparés par un point, les noms de domaines supérieurs étant à droite. Le domaine wikipedia.org. est un sous-domaine de .org. et vous l’avez compris fr.wikipedia.org est un sous domaine de fr.wikipedia.org

Il est possible d’avoir plusieurs sous-domaines ainsi qu’une délégation, c’est-à-dire une indication que les informations de ce sous-domaine sont enregistrées sur un autre serveur.

On peut voir fr.wikipedia.org comme un sous domaine hébergé sur un serveur spécifique par exemple et de.wikipedia.com sur un autre serveur spécifique

La résolution des noms de domaines est réalisée en parcourant la hiérarchie depuis le sommet et en suivant les délégations successives.

Voyons maintenant comment se passe la résolution du nom de domaine avec un navigateur

Imaginez que vous entrez fr.wikipedia.org dans votre navigateur. votre navigateur doit commencer par le résoudre en une adresse IP. tous simplement Parce qu’il faut qu’il sache à quel serveur se connecter.

Ici, on va taper fr.wikipedia.org sur notre navigateur. Il va alors s’adresser à un serveur dit “récursif”.

Pour information, les fournisseurs d’accès à Internet mettent à disposition de leurs clients ces serveurs récursifs par défaut quand il se connecte à Internet. Mais Il existe également des serveurs récursifs ouverts comme ceux de Google Public DNS ou OpenDNS ou Cloudfare

Quand un serveur DNS récursif doit trouver l’adresse IP de fr.wikipedia.org, un processus itératif commence pour consulter la hiérarchie DNS du nom de domaine :

  • Ce serveur demande aux serveurs DNS de nom racine quels serveurs peuvent lui répondre pour la partie org.
  • Le serveur va indiquer quels serveurs connaissent l’information pour la zone wikipedia.org.
  • Ensuite, ce serveur donnera à son tour l’information pour avoir l’adresse IP du serveur hébergeant fr.wikipedia.org. car il connait déjà l’adresse IP du serveur hébergeant le sous domaine fr de wikipedia.org

Et une fois que vous avez l’adresse IP de ce domaine, le navigateur y accède est affiche la page demandée.

Sources: https://bit.ly/2Lmg2mr

SERVEUR WEB

Dans cette vidéo, je vous explique le rôle d’un serveur web avec l’image du restaurant

Un client passe sa commande au serveur. Le serveur prend alors en note la commande, part en cuisine et ramène au client ce qu’il a demandé. Et bien le rôle du serveur web est exactement le même que celui du serveur au restaurant

En effet, un serveur web permet de stocker et de publier des pages web (sur internet ou intranet) et généralement écrites en HTML. Le client, un navigateur web, fait une demande de page web au serveur web qui lui envoie en réponse la page demandé

Le protocole de communication HTTP permet au serveur web de communiquer avec le client,

Le serveur web peut être logiciel ou matériel ou une combinaison des 2 :

  • Au niveau matériel, un serveur web est un ordinateur qui stocke les fichiers constituant un site web (par exemple les documents HTML, les images, les feuilles de style CSS et les fichiers JavaScript)
  • Au niveau logiciel, les composants logiciels seront différents en fonction la nature du serveur web

On parle de serveur web « statique » lorsque le serveur web envoie les fichiers hébergés « tels quels » vers le client. Le serveur web statique contient un OS (comme Windows ou Linux) et un serveur http. Le serveur HTTP est le logiciel qui prend en charge les requêtes client serveur en HTTP (Les plus connus sont Apache ou IIS.

Le serveur web dynamique inclus lui en plus de l’OS et du serveur http, une BDD comme par exemple My SQL qui va stocker toute les données de l’application et un langage de script comme le php par exemple. Son rôle est d’interpreter les demandes du client et les traduire en html. On parle donc de serveur web dynamique quand les fichiers hébergés sont mis à jour avant d’être envoyé au client via HTTP.

Sources: https://bit.ly/2Yl2lcv

DHCP

DHCP (Dynamic Host Configuration Protocol) est un protocole de communication. Les administrateurs réseau l’utilisent pour gérer et automatiser de manière centralisée la configuration réseau des appareils rattachés à un réseau IP (Internet Protocol).

Le protocole DHCP permet à des appareils nécessitant une adresse IP d’en demander une lors de leur démarrage. Cette approche évite, par exemple, l’affectation préalable et la configuration manuelle de cette adresse pour chaque appareil.

DHCP permet, en outre, lorsqu’un appareil est déplacé, de lui affecter une nouvelle adresse à chaque nouvel emplacement. En effet, sans le protocole DHCP, les administrateurs réseau doivent non seulement configurer manuellement chaque appareil en lui attribuant une adresse IP valide, mais le reconfigurer avec une nouvelle adresse IP dès qu’il change d’emplacement sur le réseau. Le protocole DHCP existe pour les deux versions du protocole IP : IPv4 et IPv6

Les appareils qui se connectent au réseau local contactent tout serveur DHCP disponible et sollicitent des informations sur la configuration du réseau. Les serveurs administrent des réserves, ou « pools », d’adresses valides, et affectent des adresses selon les besoins.

Le protocole DHCP fait appel au concept de bail. L’adresse IP qu’il accorde à un appareil sera valide pour une durée définie. La durée du bail varie selon la période pendant laquelle l’utilisateur aura besoin de la connexion Internet à un emplacement spécifique. Les appareils libèrent les adresses une fois leurs baux expirés, puis demandent un renouvellement auprès du serveur DHCP s’ils doivent rester en ligne. Le serveur DHCP peut leur affecter une nouvelle adresse au lieu de renouveler l’ancienne.

Le protocole prend également en charge les adresses statiques, notamment pour les serveurs Web qui ont besoin d’une adresse IP permanente.

Si le protocole DHCP est généralement considéré comme un protocole d’automatisation de l’adressage, les administrateurs réseau s’en servent également pour véhiculer d’autres informations de configuration réseau. Par exemple, DHCP peut envoyer l’adresse d’un serveur de nom de domaine (DNS), l’adresse d’un serveur Ntwork Time, un nom d’hôte pour l’appareil qui reçoit la configuration, un nom de domaine ou une adresse de passerelle par défaut.

DHCP est l’extension d’un protocole réseau de gestion IP plus ancien appelé BOOTP. Il est plus sophistiqué, mais ses serveurs peuvent gérer les demandes de clients BOOTP encore présents sur un segment de réseau.

DHCP n’est pas un protocole routable ; il se limite à un réseau local (LAN, Local Area Network) spécifique. Si les administrateurs réseau veulent qu’un serveur DHCP donné fournisse des adresses à plusieurs sous-réseaux, ils doivent configurer des services de relais DHCP sur les routeurs par lesquels les demandes DHCP seront amenées à transiter.

DHCP n’est pas un protocole sécurisé : il n’intègre aucun mécanisme permettant une authentification entre clients et serveurs. Ces deux parties sont ainsi vulnérables en termes d’usurpation (un ordinateur se fait passer pour un autre) et d’attaque (des clients mal intentionnés peuvent épuiser le pool d’adresses d’un serveur).

Sources: https://bit.ly/2DRQJUY

La différence entre UDP et TCP

Dans ce tutoriel , nous allons découvrir la différence entre les protocoles UDP et TCP

UDP

UDP signifie User Datagram Protocol. Ce protocole de connexion envoi des packets de données indépendants. On appelle ces packets indépendants des datagrams. Ces datagrams passent d’un ordinateur à un autre. Il n’y a pas de garantie sur la réception des données. Ce n’est pas un protocole de communication fiable.

UDP est utile lorsque l’on as pas à vérifier chaque packet. Ce protocole est beaucoup plus rapide que le protocole TCP due au fait qu’il n’y a pas de vérifications à la réception.

Le meilleur exemple du protocole UDP est l’exemple de l’horloge. Imaginez un programme qui envoi l’heure à un ordinateur lorsque celui-ci le demande. Si jamais l’ordinateur ne reçois pas le packet, ça n’as pas de sens de le renvoyer puis qu’entre temps , l’heure as changée.

TCP

TCP signifie Transmission Control Protocol. C’est probablement le protocole le plus utilisé sur internet. TCP est un protocole orienté connexion qui assure une certaine sécurité au niveau de l’échange des packets. Les informations sont testées et vérifiés. Ainsi, si un ordinateur ne reçois pas correctement un packet, ce-dernier est renvoyé.

Le protocole TCP établit une communication entre un ordinateur source et un ordinateur de destination. Les ports sont reliés via un lien jusqu’à ce que la connexion soit terminée. Contrairement à UDP, les packets ne sont pas envoyés de manière indépendante, il y a une vérification à la récéption.

Un des protocole TCP les plus connu est une conversation téléphonique. En effet, il faut bien que tout les packets soit réceptionnés. Sinon, la qualité de l’appel seras médiocre.

Schéma protocol UDP et TCP

 

Schéma protocol UDP et TCP

Les différences entre UDP et TCP

TCPUDP
1 ) Le protocole est orienté connexion1) Le protocole n’est pas orienté connexion
2) Le protocole est sécurisé2) Le protocole n’est pas sécurisé
3) Le protocole TCP crée une connexion entre une source et une
destination
3)UDP envoi des packets indépendants appelés
datagrams de la source à la destination
4) Pas de perte de packets , le protocle est stable4) Les packets peuvent se perdre
5) La sécurité et la stabilité est plus importante que la vitesse5) La vitesse est plus importante que la stabilité
6) Le header de TCP est de 20 bytes6) Le header de UDP est de 8 bytes
7) TCP effectue trois vérification de récéption7) UDP n’effectue aucune vérification
8) TCP utilise des méchanismes de détéction d’erreur, on peux donc catcher sur ces
erreurs
8) UDP n’as pas de système de vérification, on ne
peux donc pas les détecter dans le code
9 ) Exemple : un appel téléphonique9 ) Exemple : un jeux vidéo en ligne
10 ) TCP est utilisé pour les protocoles HTTP , HTTPS , FTP, SMTPUDP est utilisé pour les protocoles DNS , DHCP, SNMP , RIP , VOIP , TFTP

Sources: https://bit.ly/2DVmQ69

Adresse IP

Sur Internet, les ordinateurs communiquent entre eux grâce au protocole IP (Internet Protocol), qui utilise des adresses numériques, appelées adresses IP, composées de 4 nombres entiers (4 octets) entre 0 et 255 et notées sous la forme xxx.xxx.xxx.xxx. Par exemple, 194.153.205.26 est une adresse IP donnée sous une forme technique. Ces adresses servent aux ordinateurs du réseau pour communiquer entre-eux, ainsi chaque ordinateur d’un réseau possède une adresse IP unique sur ce réseau.

C’est l’ICANN (Internet Corporation for Assigned Names and Numbers, remplaçant l’IANA, Internet Assigned Numbers Agency, depuis 1998) qui est chargée d’attribuer des adresses IP publiques, c’est-à-dire les adresses IP des ordinateurs directement connectés sur le réseau public internet.

Déchiffrement d’une adresse IP

Une adresse IP est une adresse 32 bits, généralement notée sous forme de 4 nombres entiers séparés par des points. On distingue en fait deux parties dans l’adresse IP :

  • une partie des nombres à gauche désigne le réseau est est appelée ID de réseau (en anglais netID),
  • Les nombres de droite désignent les ordinateurs de ce réseau est est appelée ID d’hôte (en anglais host-ID).

Soit l’exemple ci-dessous :

 
exemple de réseau
 

Notons le réseau de gauche 194.28.12.0. Il contient les ordinateurs suivants :

  • 194.28.12.1 à 194.28.12.4

Notons celui de droite 178.12.0.0. Il comprend les ordinateurs suivants :

  • 178.12.77.1 à 178.12.77.6

Dans le cas ci-dessus, les réseaux sont notés 194.28.12 et 178.12.77, puis on numérote incrémentalement chacun des ordinateurs le constituant.

Imaginons un réseau noté 58.0.0.0. Les ordinateurs de ce réseau pourront avoir les adresses IP allant de 58.0.0.1 à 58.255.255.254. Il s’agit donc d’attribuer les numéros de telle façon qu’il y ait une organisation dans la hiérarchie des ordinateurs et des serveurs.

Ainsi, plus le nombre de bits réservé au réseau est petit, plus celui-ci peut contenir d’ordinateurs.

En effet, un réseau noté 102.0.0.0 peut contenir des ordinateurs dont l’adresse IP peut varier entre 102.0.0.1 et 102.255.255.254 (256*256*256-2=16777214 possibilités), tandis qu’un réseau noté 194.26 ne pourra contenir que des ordinateurs dont l’adresse IP sera comprise entre 194.26.0.1 et 194.26.255.254 (256*256-2=65534 possibilités), c’est la notion de classe d’adresse IP.

Adresses particulières

Lorsque l’on annule la partie host-id, c’est-à-dire lorsque l’on remplace les bits réservés aux machines du réseau par des zéros (par exemple 194.28.12.0), on obtient ce que l’on appelle l’adresse réseau. Cette adresse ne peut être attribuée à aucun des ordinateurs du réseau.

Lorsque la partie netid est annulée, c’est-à-dire lorsque les bits réservés au réseau sont remplacés par des zéros, on obtient l’adresse machine. Cette adresse représente la machine spécifiée par le host-ID qui se trouve sur le réseau courant.

Lorsque tous les bits de la partie host-id sont à 1, l’adresse obtenue est appellée l’adresse de diffusion (en anglais broadcast). Il s’agit d’une adresse spécifique, permettant d’envoyer un message à toutes les machines situées sur le réseau spécifié par le netID.

Enfin, l’adresse 127.0.0.1 est appelée adresse de rebouclage (en anglais loopback), car elle désigne la machine locale (en anglais localhost).

Classes de réseaux (obsolète)

Dans le système de définition des réseau ip originel les adresses IP étaient réparties en classes, selon le nombre d’octets qui représentent le réseau, lui même déterminé par les premiers bits de l’adresse ip: Aujourd’hui ce système a été remplacé par le CIDR au milieu des années 90 . On avait à cette époque 3 classes pour les adresses unicast, une classe pour les adresses multidestinataires (multicast), la classe D et une classe E non utilisée:

Classe A

Dans une adresse IP de classe A, le premier octet représente le réseau.

Le bit de poids fort (le premier bit, celui de gauche) est à zéro, ce qui signifie qu’il y a 2^7 (00000000 à 01111111) possibilités de réseaux, soit 128 possibilités. Toutefois, le réseau 0 (bits valant 00000000) n’existe pas et le nombre 127 est réservé pour désigner votre machine.

Les réseaux disponibles en classe A sont donc les réseaux allant de 1.0.0.0 à 126.0.0.0 (les derniers octets sont des zéros ce qui indique qu’il s’agit bien de réseaux et non d’ordinateurs !)

Les trois octets de droite représentent les ordinateurs du réseaux, le réseau peut donc contenir un nombre d’ordinateur égal à : 2^24-2^1 = 16777214 ordinateurs.

Une adresse IP de classe A, en binaire, ressemble à ceci :

0 xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
Réseau Ordinateurs

Classe B

Dans une adresse IP de classe B, les deux premiers octets représentent le réseau.

Les deux premiers bits sont 1 et 0, ce qui signifie qu’il y a 2^14 (10 000000 00000000 à 10 111111 11111111) possibilités de réseaux, soit 16384 réseaux possibles. Les réseaux disponibles en classe B sont donc les réseaux allant de 128.0.0.0 à 191.255.0.0

Les deux octets de droite représentent les ordinateurs du réseau. Le réseau peut donc contenir un nombre d’ordinateurs égal à : 2^16-2^1 = 65534 ordinateurs.

Une adresse IP de classe B, en binaire, ressemble à ceci :

10 xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
Réseau Ordinateurs

Classe C

Dans une adresse IP de classe C, les trois premiers octets représentent le réseau. Les trois premiers bits sont 1,1 et 0, ce qui signifie qu’il y a 2^21 possibilités de réseaux, c’est-à-dire 2097152. Les réseaux disponibles en classe C sont donc les réseaux allant de 192.0.0.0 à 223.255.255.0

L’octet de droite représente les ordinateurs du réseau, le réseau peut donc contenir: 2^8-2^1 = 254 ordinateurs.

Une adresse IP de classe C, en binaire, ressemble à ceci :

110 xxxxx xxxxxxxx xxxxxxxx xxxxxxxx
Réseau Ordinateurs

Attribution des adresses IP

Le but de la division des adresses IP en trois classes A,B et C est de faciliter la recherche d’un ordinateur sur le réseau. En effet avec cette notation il est possible de rechercher dans un premier temps le réseau que l’on désire atteindre puis de chercher un ordinateur sur celui-ci. Ainsi, l’attribution des adresses IP se fait selon la taille du réseau.

Classe Nombre de réseaux possibles Nombre d’ordinateurs maxi sur chacun
A 126 16777214
B 16384 65534
C 2097152 254

Les adresses de classe A sont réservées aux très grands réseaux, tandis que l’on attribuera les adresses de classe C à des petits réseaux d’entreprise par exemple

Adresses IP réservées

Il arrive fréquemment dans une entreprise ou une organisation qu’un seul ordinateur soit relié à internet, c’est par son intermédiaire que les autres ordinateurs du réseau accèdent à internet (on parle généralement de proxy ou de passerelle).

Dans ce cas de figure, seul l’ordinateur relié à internet a besoin de réserver une adresse IP auprès de l’ICANN. Toutefois, les autres ordinateurs ont tout de même besoin d’une adresse IP pour pouvoir communiquer ensemble en interne.

Ainsi, l’ICANN a réservé une poignée d’adresses dans chaque classe pour permettre d’affecter une adresse IP aux ordinateurs d’un réseau local relié à internet sans risquer de créer des conflits d’adresses IP sur le réseau des réseaux. Il s’agit des adresses suivantes :

  • Adresses IP privées de classe A : 10.0.0.1 à 10.255.255.254, permettant la création de vastes réseaux privés comprenant des milliers d’ordinateurs.
  • Adresses IP privées de classe B : 172.16.0.1 à 172.31.255.254, permettant de créer des réseaux privés de taille moyenne.
  • Adresses IP privées de classe C : 192.168.0.1 à 192.168.255.254, pour la mise en place de petits réseaux privés.

Netmask

Pour comprendre ce qu’est un masque de sous-réseau, il peut-être intéressant de consulter la section « assembleur » qui parle du masquage en binaire

En résumé, on fabrique un masque contenant des 1 aux emplacements des bits que l’on désire conserver, et des 0 pour ceux que l’on veut annuler. Une fois ce masque créé, il suffit de faire un ET logique entre la valeur que l’on désire masquer et le masque afin de garder intacte la partie que l’on désire et annuler le reste.

Ainsi, un masque réseau (en anglais netmask) se présente sous la forme de 4 octets séparés par des points (comme une adresse IP), il comprend (dans sa notation binaire) des zéros aux niveau des bits de l’adresse IP que l’on veut annuler (et des 1 au niveau de ceux que l’on désire conserver).

Interet d’un masque de sous-réseau

Le premier intérêt d’un masque de sous-réseau est de permettre d’identifier simplement le réseau associé à une adresse IP.

En effet, le réseau est déterminé par un certain nombre d’octets de l’adresse IP (1 octet pour les adresses de classe A, 2 pour les adresses de classe B, et 3 octets pour la classe C). Or, un réseau est noté en prenant le nombre d’octets qui le caractérise, puis en complétant avec des 0. Le réseau associé à l’adresse 34.56.123.12 est par exemple 34.0.0.0, car il s’agit d’une adresse IP de classe A.

Pour connaître l’adresse du réseau associé à l’adresse IP 34.56.123.12, il suffit donc d’appliquer un masque dont le premier octet ne comporte que des 1 (soit 255 en notation décimale), puis des 0 sur les octets suivants. Le masque est: 11111111.00000000.00000000.00000000 Le masque associé à l’adresse IP 34.208.123.12 est donc 255.0.0.0. La valeur binaire de 34.208.123.12 est: 00100010.11010000.01111011.00001100 Un ET logique entre l’adresse IP et le masque donne ainsi le résultat suivant :

00100010.11010000.01111011.00001100         
  ET
11111111.00000000.00000000.00000000  
  =    
00100010.00000000.00000000.00000000
Soit 34.0.0.0. Il s’agit bien du réseau associé à l’adresse 34.208.123.12

En généralisant, il est possible d’obtenir les masques correspondant à chaque classe d’adresse :

  • Pour une adresse de Classe A, seul le premier octet doit être conservé. Le masque possède la forme suivante 11111111.00000000.00000000.00000000, c’est-à-dire 255.0.0.0 en notation décimale ;
  • Pour une adresse de Classe B, les deux premiers octets doivent être conservé, ce qui donne le masque suivant 11111111.11111111.00000000.00000000, correspondant à 255.255.0.0 en notation décimale ;
  • Pour une adresse de Classe C, avec le même raisonnement, le masque possédera la forme suivante 11111111.11111111.11111111.00000000, c’est-à-dire 255.255.255.0 en notation décimale

Création de sous-réseaux

Reprenons l’exemple du réseau 34.0.0.0, et supposons que l’on désire que les deux premiers bits du deuxième octet permettent de désigner le réseau. Le masque à appliquer sera alors :

11111111.11000000.00000000.00000000
C’est-à-dire 255.192.0.0

Si on applique ce masque, à l’adresse 34.208.123.12 on obtient :

34.192.0.0

En réalité il y a 4 cas de figures possibles pour le résultat du masquage d’une adresse IP d’un ordinateur du réseau 34.0.0.0

  • Soit les deux premiers bits du deuxième octet sont 00, auquel cas le résultat du masquage est 34.0.0.0
  • Soit les deux premiers bits du deuxième octet sont 01, auquel cas le résultat du masquage est 34.64.0.0
  • Soit les deux premiers bits du deuxième octet sont 10, auquel cas le résultat du masquage est 34.128.0.0
  • Soit les deux premiers bits du deuxième octet sont 11, auquel cas le résultat du masquage est 34.192.0.0

Ce masquage divise donc un réseau de classe A (pouvant admettre 16 777 214 ordinateurs) en 4 sous-réseaux – d’où le nom de masque de sous-réseau – pouvant admettre 2^22 ordinateurs, c’est-à-dire 4 194 304 ordinateurs.

Le nombre de sous-réseaux dépend du nombre de bits attribués en plus au réseau (ici 2). Le nombre de sous-réseaux est donc :

Nombre de bits Nombre de sous-réseaux
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 (impossible pour une classe C) 256
Sources: https://bit.ly/2rXKJYo

TCP/IP

Si vous vous baladez sur Internet, vous avez dû, à un moment ou à un autre, entendre parler de TCP/IP. Qu’est-ce que c’est que cette bête ?

Cette page est un peu longue, mais une fois terminée, vous aurez compris ce que sont IP, UDP, TCP et à quoi ils servent.

TCP/IP est un protocole, c’est à dire des règles de communication.

IP signifie Internet Protocol : littéralement « le protocole d’Internet ». C’est le principal protocole utilisé sur Internet. Internet signifie Inter-networks, c’est à dire « entre réseaux ». Internet est l’interconnexion des réseaux de la planète. Le protocole IP permet aux ordinateurs reliés à ces réseaux de dialoguer entre eux.

Faisons un parallèle avec la poste. Quand vous voulez envoyer une lettre par la poste:
  • vous placez votre lettre dans une enveloppe,
  • sur le recto vous inscrivez l’adresse du destinataire,
  • au dos, vous écrivez l’adresse de l’expéditeur (la votre).

(GIF 11 ko)

Ce sont des règles utilisées par tout le monde. C’est un protocole.

Sur Internet, c’est à peu près la même chose: chaque message (chaque petit paquet de données) est enveloppé par IP qui y ajoute différentes informations:

  • l’adresse de l’expéditeur (votre adresse IP),
  • l’adresse IP du destinataire,
  • différentes données supplémentaires (qui permettent de bien contrôler l’acheminement du message).
(GIF 8 ko)
L’adresse IP est une adresse unique attribuée à chaque ordinateur sur Internet (c’est-à-dire qu’il n’existe pas sur Internet deux ordinateurs ayant la même adresse IP).

De même, l’adresse postale (nom, prénom, rue, numéro, code postal et ville) permet d’identifier de manière unique un destinataire.

Tout comme avec l’adresse postale, il faut connaître au préalable l’adresse IP de l’ordinateur avec lequel vous voulez communiquer.

L’adresse IP se présente le plus souvent sous forme de 4 nombres (entre 0 et 255) séparés par des points. Par exemple: 204.35.129.3

Le routage IP

Pour envoyer votre lettre, vous la postez dans la boîte aux lettres la plus proche. Ce courrier est relevé, envoyé au centre de tri de votre ville, puis transmis à d’autres centres de tri jusqu’à atteindre le destinataire.

(GIF 7 ko)

C’est la même chose sur Internet !

Vous déposez le paquet IP sur l’ordinateur le plus proche (celui de votre fournisseur d’accès en général). Le paquet IP va transiter d’ordinateur en ordinateur jusqu’à atteindre le destinataire.

(GIF 7 ko)

Les ports

Bien !

Avec IP, nous avons de quoi envoyer et recevoir des paquets de données d’un ordinateur à l’autre.

Imaginons maintenant que nous ayons plusieurs programmes qui fonctionnent en même temps sur le même ordinateur: un navigateur, un logiciel d’email et un logiciel pour écouter la radio sur Internet.

Si l’ordinateur reçoit un paquet IP, comment savoir à quel logiciel donner ce paquet IP ?

(GIF 12 ko) Comment savoir à quel logiciel est destiné ce paquet IP ? Le navigateur, le logiciel de radio ou le logiciel d’email ?

C’est un problème sérieux !

On pourrait attribuer un numéro unique à chaque logiciel dans l’ordinateur.

Il suffirait alors de mettre ce numéro dans chaque paquet IP pour pouvoir s’adresser à tel ou tel logiciel.

On appelle ces numéros des ports (pensez aux « portes » d’une maison: à une adresse donnée, on va pouvoir déposer les lettres à différentes portes à cette adresse).

(GIF 11 ko)

Avec la poste, à une même adresse, on peut s’adresser à différentes personnes en indiquant un numéro de porte.

(GIF 16 ko)

De même, à une même adresse IP, on peut s’adresser à différents logiciels en précisant le numéro de port (ici: 3).

Ainsi, l’adresse IP permet de s’adresser à un ordinateur donné, et le numéro de port permet de s’adresser à un logiciel particulier sur cet ordinateur.


« Mais TCP/IP ?« . On y vient, on y vient… patience.

UDP/IP est un protocole qui permet justement d’utiliser des numéros de ports en plus des adresses IP (On l’appelle UDP/IP car il fonctionne au dessus d’IP).

IP s’occupe des adresses IP et UDP s’occupe des ports.

Avec le protocole IP on pouvait envoyer des données d’un ordinateur A à un ordinateur B.

(GIF 2 ko)

Avec UDP/IP, on peut être plus précis: on envoie des données d’une application x sur l’ordinateur A vers une application y sur l’ordinateur B.

Par exemple, votre navigateur peut envoyer un message à un serveur HTTP (un serveur Web):

(GIF 24 ko)

  • Chaque couche (UDP et IP) va ajouter ses informations. Les informations de IP vont permettre d’acheminer le paquet à destination du bon ordinateur. Une fois arrivé à l’ordinateur en question, la couche UDP va délivrer le paquet au bon logiciel (ici: au serveur HTTP).
  • Les deux logiciels se contentent d’émettre et de recevoir des données (« Hello !« ). Les couches UDP et IP en dessous s’occupent de tout.

Ce couple (199.7.55.3:1057, 204.66.224.82:80) est appelé un socket. Un socket identifie de façon unique une communication entre deux logiciels.

TCP

Bon… on peut maintenant faire communiquer 2 logiciels situés sur des ordinateurs différents.

Mais il y a encore de petits problèmes:

  • Quand vous envoyez un paquet IP sur Internet, il passe par des dizaines d’ordinateurs. Et il arrive que des paquets IP se perdent ou arrivent en double exemplaire. Ça peut être gênant : imaginez un ordre de débit sur votre compte bancaire arrivant deux fois ou un ordre de crédit perdu !
  • Même si le paquet arrive à destination, rien ne vous permet de savoir si le paquet est bien arrivé (aucun accusé de réception).
  • La taille des paquets IP est limitée (environ 1500 octets). Comment faire pour envoyer la photo JPEG du petit dernier qui fait 62000 octets ? (la photo… pas le bébé).

C’est pour cela qu’a été conçu TCP.

TCP est capable:

  • de faire tout ce que UDP sait faire (ports).
  • de vérifier que le destinataire est prêt à recevoir les données.
  • de découper les gros paquets de données en paquets plus petits pour que IP les accepte
  • de numéroter les paquets, et à la réception de vérifier qu’ils sont tous bien arrivés, de redemander les paquets manquants et de les réassembler avant de les donner aux logiciels. Des accusés de réception sont envoyés pour prévenir l’expéditeur que les données sont bien arrivées.

Par exemple, pour envoyer le message « Salut, comment ça va ?« , voilà ce que fait TCP (Chaque flèche représente 1 paquet IP):

(GIF 18 ko)

A l’arrivée, sur l’ordinateur 204.66.224.82, la couche TCP reconstitue le message « Salut, comment ça va ? » à partir des 3 paquets IP reçus et le donne au logiciel qui est sur le port 80.

Pour conclure TCP/IP

Pas mal tout ça, hein ?

Avec TCP/IP, on peut maintenant communiquer de façon fiable entre logiciels situés sur des ordinateurs différents.

TCP/IP est utilisé pour des tas de choses:

  • Dans votre navigateur, le protocole HTTP utilise le protocole TCP/IP pour envoyer et recevoir des pages HTML, des images GIF, JPG et toutes sortes d’autres données.
  • FTP est un protocole qui permet d’envoyer et recevoir des fichiers. Il utilise également TCP/IP.
  • Votre logiciel de courrier électronique utilise les protocoles SMTP et POP3 pour envoyer et recevoir des emails. SMTP et POP3 utilisent eux aussi TCP/IP.
  • Votre navigateur (et d’autres logiciels) utilisent le protocole DNS pour trouver l’adresse IP d’un ordinateur à partir de son nom (par exemple, de trouver 216.32.74.52 à partir de ‘www.yahoo.com’). Le protocole DNS utilise UDP/IP et TCP/IP en fonction de ses besoins.

Il existe ainsi des centaines de protocoles différents qui utilisent TCP/IP ou UDP/IP.

L’avantage de TCP sur UDP est que TCP permet des communications fiables. L’inconvénient est qu’il nécessite une négociation (« Bonjour, prêt à communiquer ? » etc.), ce qui prend du temps.

Sources: https://bit.ly/33PZPfD

Qu’est ce qu’un protocole ?

Définition d’un protocole

Un protocole est une série d’étapes à suivre pour permettre une communication harmonieuse entre plusieurs ordinateurs ou périphériques reliés en réseau.

Les protocoles sont classés en deux catégories :

  • Les protocoles où les machines s’envoient des acusés de réception (pour permettre une gestion des erreurs). Ce sont les protocoles dits orientés connexion.
  • Les autres protocoles qui n’avertissent pas la machine qui va recevoir les données sont les protocoles dits non orientés connexion

Couches de protocoles

Les protocoles sont hiérarchisés en quatre couches dans le modèle TCP/IP (Transmission Control Protocol / Internet Protocol), ou en sept couches dans le modèle OSI (Open Standard Interconnection).

Chaque couche s’occupe d’apporter un plus permettant la transmission de données, et de fournir des éléments avec les couches de niveau supérieur.

Plus on monte dans le niveau des couches, plus l’abstraction entre les données physiques (signal électrique) et logiques (langage de programmation) est accentuée. Les couches hautes sont plus proches de l’utilisateur (programmation) et gèrent des données de plus en plus abstraites dès lors que l’on redescend jusqu’à la couche physique.

Modèle OSI

Il y a longtemps, avant que tout ne soit standardisé, les grands constructeurs informatiques ont proposé des architectures propres à leurs matériels (propriétaires donc). Le défaut majeur de ce type d’architecture est qu’il n’est pas facile de les faire communiquer, à moins de trouver un accord et de rédiger un protocole de communication.

Pour éviter que chaque fabricant y aille de son propre protocole et connecteurs (ce qui deviendrait ingérable et freinerait notablement l’évolution des réseaux), l’ISO (International Standards Organisation) a développé un modèle de référence appelé modèle OSI (Open Systems Interconnection). Ce modèle décrit les notions utilisées pour normaliser l’interconnexion de systèmes. Il est organisé en sept couches distinctes, portant chacune un numéro, allant des données les plus abstraites (couche numéro 7) aux données physiques (couche numéro 1).

N° de coucheNomFonction
7ApplicationPoint d’accès aux services réseaux (messagerie, transfert de fichier, P2P, etc.)
6PrésentationGère le chiffrement/déchiffrement des données et convertit des données machines en données exploitables.
5SessionGère le dialogue entre les différentes applications (qui parle, qui attend, etc.). Gère les reprises suite aux pannes de dialogue.
4TransportGère le bon acheminement des messages et optimise les ressources du réseau. Utilise les messages de la couche session, les découpe s’il le faut en unités plus petites et les transmet à la couche réseau, tout en s’assurant que les morceaux arrivent correctement de l’autre côté. Cette couche rassemble aussi les morceaux du message à la réception.
3RéseauC’est la couche qui permet de gérer le routage des paquets et l’engorgement du réseau.
2LiaisonElle fractionne les données d’entrée de l’émetteur physique (signaux) en trames, en gérant le début et la fin de celles-ci, transmet ces trames en séquences et gère les trames d’acquittement renvoyées par le récepteur. Cette couche détecte et corrige (quand elle peut) certaines erreurs intervenues sur la couche physique.
1PhysiqueLa couche physique s’occupe de la transmission des bits sur un canal de communication. Cette couche doit garantir la parfaite transmission des données (un bit 1 envoyé doit bien être reçu comme bit valant 1). Cette couche normalise les tensions de seuil faisant passer un bit de 0 à 1 ainsi que les caractéristiques physiques des connecteurs de liaisons (forme des connecteurs et topologies).

Et Internet dans tout ça ?

Internet est un ensemble de protocoles regroupés sous le terme « TCP-IP » (Transmission Control Protocol/InternetProtocol). Voici une liste non exhaustive des différents protocoles qui peuvent êtres utilisés :

  • HTTP: (Hyper Texte Transfert Protocol): c’est celui que l’on utilise pour consulter les pages web.
  • FTP: (File Transfert Protocol): C’est un protocole utilisé pour transférer des fichiers.
  • SMTP: (Simple Mail Transfert Protocol): c’est le protocole utilisé pour envoyer des mails.
  • POP: C’est le protocole utilisé pour recevoir des mails.
  • Telnet: utilisé surtout pour commander des applications côté serveur en lignes de commande
  • IP (internet Protocol): L’adresse IP vous attribue une adresse lors de votre connexion à un serveur.

Sources: https://bit.ly/33P7pXG