浏览代码

5.4 en route

Benoît Hubert 7 年之前
父节点
当前提交
e484cbb379

react-tuto/src/markdown/5. Mini-serveur web/02. Le protocole HTTP.md → react-tuto/src/markdown/5. Mini-serveur web/02. Client, serveur, protocole.md


+ 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.
+

文件差异内容过多而无法显示
+ 1 - 1
react-tuto/src/resources/markdown.json