2 Commits 5746e0be84 ... e484cbb379

Autor SHA1 Mensagem Data
  Benoît Hubert e484cbb379 5.4 en route 7 anos atrás
  Benoît Hubert b1a057f1e0 Fini 5.2 7 anos atrás

+ 27 - 0
react-tuto/src/markdown/5. Mini-serveur web/02. Client, serveur, protocole.md

@@ -0,0 +1,27 @@
+Le navigateur web est un *client* HTTP. Il sait émettre des *requêtes* vers un *serveur* HTTP et lire les *réponses* du serveur à ces requêtes.
+
+Reparlons un peu du "protocole HTTP". Cette formulation est redondante car HTTP signifie *HyperText Transfer Protocol*.
+
+Faisons un parallèle avec la vie quotidienne pour illustrer les notions de client, de serveur, et de protocole.
+
+Par exemple, tu te rends certainement de temps en temps dans un café, en tant que *client*.
+
+Dans ce lieu public, le *protocole* - c'est à dire les habitudes de la vie en société - t'impose certaines règles.
+
+Par exemple, tu ne vas pas te faire un café toi-même derrière le comptoir ! Non, pour obtenir une boisson, tu fais signe au *serveur*. 
+
+Si tu t'adresses à lui en disant "Bonhomme, fais péter le champagne !", il t'adressera plus ou moins poliment une fin de non-recevoir. Ce qui est très exactement ce qui se passe si un client HTTP adresse à un serveur une requête mal formulée - à ceci près que les programmes ne se vêxent pas.
+
+Il y a un ordre à respecter dans les interactions sociales. On utilise des salutations et des formules de politesse. Ton dialogue avec le serveur pourrait ressembler à ceci :
+
+- Bonjour !
+- Bonjour Madame/Monsieur, que désirez-vous ?
+- Je voudrais un café s'il vous plaît.
+- Expresso ou allongé ?
+- Expresso.
+- Très bien, je vous amène ça tout de suite.
+- Merci !
+
+En résumé : le **serveur** peut **répondre** à ta **requête** de **client**, à condition que tu respectes un certain **protocole**.
+
+On va voir concrètement comment fonctionne HTTP à la page suivante !

+ 0 - 1
react-tuto/src/markdown/5. Mini-serveur web/02. Le protocole HTTP.md

@@ -1 +0,0 @@
-Le navigateur web est un *client* pour le protocole HTTP. Il sait émettre des *requêtes* et lire les *réponses* à ces requêtes.

+ 29 - 0
react-tuto/src/markdown/5. Mini-serveur web/03. HTTP.md

@@ -0,0 +1,29 @@
+Une petite illustration :
+
+<img src="img/tuto/HTTP.png" alt="HTTP" />
+
+- HTTP est un protocole client-serveur à requêtes et réponses. Il est *asymétrique* : c'est le client qui "tire" (pull) de l'information du serveur, en émettant une requête à laquelle le serveur répond.
+- HTTP est un protocole *stateless*, sans état. La requête courante ne "sait" pas ce qui s'est passé lors des requêtes précédentes (ce qui peut te faire te demander *comment* on gère l'authentification, s'il n'y a pas d'état persistant).
+- HTTP permet au client de "négocier" avec le serveur un certain type de données demandé (exemples : HTML, JSON, XML).
+
+Allez, tu vas mettre les "mains dans le cambouis" maintenant ! Tu vas apprendre à envoyer des requêtes à un serveur HTTP manuellement, *sans passer par le navigateur* !!
+
+J'espère que tu as gardé ouverte la fenêtre de terminal, avec le mini-serveur vu au point n°1. Ouvre un deuxième onglet ou fenêtre de terminal, et saisis :
+
+    telnet 127.0.0.1 8081
+
+La commande telnet existe normalement sous tous les systèmes. Elle permet de communiquer directement avec un serveur, quel qu'il soit : serveur web, serveur mail sortant (SMTP), serveur mail entrant (IMAP, POP3), etc.
+
+Les arguments qu'on lui passe sont :
+- l'hôte sur lequel tourne le serveur qu'on veut contacter. Ici on utilise l'IP locale qui est *toujours* `127.0.0.1`, quel que soit  ton OS.
+- le *port* auquel ce serveur est lié, et sur lequel il *écoute*.
+
+Les ports sont un peu comme des "canaux" de communication. Quand tu envoies un courrier à un organisme de grande taille, tu vas préciser sur l'enveloppe le service auquel tu t'adresses, pour que les gens qui reçoivent ce courrier puissent savoir à qui le distribuer.
+
+C'est le rôle des ports. Sur une même machine *physique* (un serveur au sens ordinateur), plusieurs *applications* ou *processus* serveurs peuvent fonctionner : si tu loues un serveur privé chez OVH ou autre, tu peux y faire tourner un serveur web, des serveurs mail entrants, un serveur mail sortant, etc. &Agrave; chacun d'eux est assigné un port, et ceux-ci sont standardisés, du moins pour ceux *en-dessous de 1024* :
+
+- Serveur web : ports 80 (HTTP non sécurisé) et 443 (HTTPS ou HTTP sécurisé).
+- Serveur mail sortant (SMTP) : port 25 (non sécurisé) ou 587 (sécurisé).
+- serveur SSH : port 22.
+
+Ici le mini-serveur web tourne sur un port non-standard, 8081. C'est tout à fait permis: les ports à partir de 1024 sont libres pour un usage personnalisé. Le mini-serveur n'écoute pas sur le port 80, pour la bonne raison qu'il est fort possible que tu aies *déjà* un serveur qui écoute sur ce port ! C'est le cas si tu as WAMP/MAMP/LAMP installé et actif : Apache écoute sur 80, et *un seul* processus peut écouter sur un port à un instant donné.

+ 11 - 0
react-tuto/src/markdown/5. Mini-serveur web/04. Telnet comme client HTTP.md

@@ -0,0 +1,11 @@
+Revenons à notre Telnet. Tu vas émettre une requête au mini-serveur, en saisissant `GET / HTTP/1.1`, et en validant *deux fois* par entrée.
+
+Tu dois voir s'afficher :
+
+    HTTP/1.0 200 OK
+    Server: BaseHTTP/0.6 Python/3.5.2
+    Date: Mon, 12 Feb 2018 02:24:43 GMT
+    Content-type: text/html
+
+    Hello world!Connection closed by foreign host.
+

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
react-tuto/src/resources/markdown.json