Rentrons encore plus dans le détail : comment les ordinateurs communiquent-ils entre eux ? Je veux dire, vraiment, au fond, quelle langue parlent-ils entre eux ?
Ils n’utilisent pas les langages dont je vous ai parlé (HTML, CSS...), car ceux-ci servent à représenter les sites web.
Il nous manque en fait une langue permettant aux ordinateurs de communiquer, pour dire par exemple : "Eh, peux-tu me donner cette page web ? Merci !" Si l’on n’avait pas des "langues communes", les ordinateurs parleraient à coup sûr un dialogue impossible :
Sans langue commune, ce serait le bazar dans les communications entre machines !
Les Protocoles
On a donc inventé des langages de communication pour que les machines se parlent entre elles. On les appelle les protocoles.
Protocoles bas niveau
À la base d’Internet, on a des protocoles de bas niveau. On les retrouve dans toutes les communications :
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
TCP en particulier est très important. Il a été inventé par Vint Cerf, considéré aujourd’hui grâce à cela comme le père d’Internet. Sans TCP, pas de communication réseau... et Tim Berners-Lee n’aurait jamais pu inventer le Web.
TCP est utilisé pour un peu tout : faire transiter des pages web, des e-mails, des vidéos...
Protocoles haut niveau
Les protocoles dits "haut niveau" sont généralement basés sur TCP (ou UDP). Ils forment une surcouche qui englobe TCP.
Les noms des protocoles haut niveau devraient vous être un peu plus familiers pour certains :
HTTP : le protocole qui permet d’échanger des pages web entre le client et le serveur. En plus du langage HTML, Tim Berners-Lee a inventé les bases du protocole HTTP qui permet d’échanger les pages. C’est ce que signifie le "http://" que vous voyez au début des adresses web !
HTTPS : identique à HTTP, avec le "S" en plus qui signifie "Secure". Les pages sont chiffrées, pour garantir que personne ne peut les lire (par exemple quelqu’un qui espionnerait les données qui transitent dans les câbles sous-marins !).
FTP : permet d’échanger des fichiers.
SMTP : permet d’envoyer des e-mails.
Etc.
Un exemple de protocole : une requête HTTP
Je suis sûr que vous mourez d’envie de voir à quoi ressemble l’une de ces langues. Et si l’on regardait en particulier une requête avec le protocole HTTP ?
Voici comment un client demande une page web à un serveur :
GET /page.html HTTP/1.0 Host:GET /page.html HTTP/1.0
Host: example.com
Referer: http://example.com/
User-Agent: CERN-LineMode/2.15 libwww/2.17b3 example.com Referer: http://example.com/ User-Agent: CERN-LineMode/2.15 libwww/2.17b3
On peut traduire ça par : "Hé, toi, le serveur de example.com, peux-tu m’envoyer page.html ? S’il te plaît ?"
Le serveur va ensuite travailler (en utilisant un langage serveur), puis renvoyer la page HTML avec une réponse comme ceci :
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
Last-modified: Fri, 09 Aug 1996 14:21:40 GMT
... que l’on pourrait traduire par : "Ho ho ho, j’ai bien la page que tu veux, elle fait cette taille et elle a été modifiée pour la dernière fois à cette date". Le serveur transmet ensuite le code HTML de la page.
Cette réponse indique que tout s’est bien passé : le code "200 OK" signifie que la page existe et que le serveur peut la renvoyer.
Il existe de nombreux codes, mais il y en a un autre au moins que vous connaissez déjà probablement : 404. Il signifie que la page n’a pas pu être trouvée sur le serveur.
À vous de jouer !
Je vous propose de vous entraîner à parler avec un serveur web. Vous allez utiliser le protocole HTTP en utilisant des commandes que je vais vous apprendre ! Nous allons utiliser un site qui permet d’afficher les retours HTTP d’un serveur. Nous allons littéralement voir le serveur nous parler ! Pour ça, rendez-vous sur https://reqbin.com/curl et suivez les étapes suivantes :
Essayez de contacter la page d'accueil de Google en tapant la commande suivante:
curl https://google.com --head
(1).Cliquez sur “Run” (2).
Au bout de quelques instants, le serveur répond. Cliquez sur “Raw” (3) à droite pour lire le résultat “brut”.
Vous pouvez alors lire le retour HTTP du serveur de Google. La première ligne commence par “HTTP/1.1 200 OK” qui signifie que la page demandée a bien été trouvée (code 200).
Essayez maintenant avec une adresse qui n’existe pas. Par exemple tapez la commande :
Curl https://www.google.com/cudkedpqma --head
Cette fois, le serveur répond par “HTTP/1.1 404 Not Found” : la page demandée n’a pas été trouvée (la fameuse erreur 404 !).
Pour l’instant nous n’avons demandé que l’en-tête HTTP. Si on retire
--head
, on va récupérer tout le contenu de la page, y compris son code HTML ! Essayez par exemple :curl https://www.openclassrooms.com
Si vous lisez un peu plus bas dans la section “Raw” vous allez voir tout le code HTML de la page apparaître !
À vous de jouer, essayez d’autres sites web !
En résumé
Les protocoles indiquent comment les machines doivent communiquer entre elles.
Il existe des protocoles de bas niveau (TCP, UDP) et des protocoles de haut niveau (HTTP, HTTPS, FTP, SMTP)
Vous voilà enfin à la fin de cette partie ! Allez faire un tour dans le dernier quiz pour évaluer vos connaissances.