Cours “Programmer l'Internet des objets” proposé sur la plateforme FUN-MOOC par l'Institut Mines Télécom.
Dans cette manipulation, nous allons explorer les concepts qui vont être utiles pour la suite du MOOC. En particulier, nous allons analyser le protocole HTTP, que vous connaissez certainement, au moins de nom. C'est le protocole qui nous permet de faire ce MOOC en allant chercher les pages qui s'affichent sur votre navigateur. Nous allons comprendre les principes de base de son architecture. Certains protocoles de l'internet des objets utilisent les mêmes principes. Nous allons aussi utiliser un outil très pratique pour voir ce qui circule sur votre réseau pour comprendre mais aussi déboguer quand les choses tournent mal. Cet outil s'appelle Wireshark.
Finalement, nous allons développer en python un serveur web rudimentaire. Cela nous servira par la suite car python sera notre langage de prédilection dans ce MOOC.
En résumé, voici d'autres points abordés dans cette séance :
Même si vous ne savez pas comment l'Internet fonctionne, vous avez probablement entendu parler de HTTP. C'est un protocole très populaire pour transporter les informations entre les serveurs Web et votre navigateur. Grâce à lui, vous pouvez avoir des nouvelles de votre grand-mère sur Facebook, connaitre la recette de la tarte aux poireaux ou même regarder un film sur Netflix.
Nous n'allons pas aller aussi loin dans la sophistication des services. Nous allons faire un serveur beaucoup plus sommaire mais qui va nous apprendre beaucoup sur son fonctionnement. Pour ce faire, nous allons lancer un émulateur réseau dans notre machine virtuelle. Pour ce faire :
Dernière chose : pour exécuter le programme, vous devez cliquer sur la flèche verte en haut à gauche. Elle se transforme en un rond rouge avec une croix blanche. Voilà ! on est prêt à explorer le monde merveilleux des protocoles de l'internet.
Double-cliquez sur l'image de l'ordinateur de gauche (WebClient) : le terminal s'ouvre. Saisir :
export DISPLAY=:0.0 firefox &
Le caractère & permet de continuer à taper des commandes dans la fenêtre sans arrêter le programme démarré (exécution de la commande en arrière plan). Parfois, même souvent, la première exécution plante.
Dans la barre d'adresses du navigateur tapez http://10.10.10.1
Quest-ce que vous obtenez ?
Rien, car j'ai oublié de taper "export DISPLAY:0.0". Une page web avec du texte enrichi. Une page d'erreur. Un login sur un terminal distant. La page d'accueil de Google.
Que représente 10.10.10.1 ?
Une adresse IPv4. Une référence à un document particulier. Une adresse IPv6. Une séquence binaire.
On va disséquer ce que l'on a reçu. Firefox dispose d'un outil d'analyse des données échangées.
La partie basse de cette fenêtre donne les échanges qui ont eu lieu. Parfois, une seule ligne apparait. En cliquant dessus, le contenu s'affiche. Cela commence par la réponse suivie de la requête qui l'a initiée. En cliquant sur le bouton Raw headers, vous pouvez vous rapprocher encore plus des bits qui ont circulé sur le réseau.
À l'aide du standard RFC 7231 décrivant le protocole HTTP utilisé par le navigateur, cherchez quelle est la raison du code 404 :
Not Found
Qui est responsable de l'erreur ?
le client. le serveur.
Allez-vous oser lire un standard ? Ça à l'air tellement ennuyeux ! Même si vous ne comprenez pas tout, cela donne des indications pour comprendre comment fonctionne un protocole.
La version 1.1 du protocole HTTP (Hyper Text Transmission Protocol) est spécifiée par le RFC 7230. Nous allons regarder une petite description en anglais de l'architecture et des formats des messages.