Résumé

  • La RFC 6690 a transformé le modèle de liens de la RFC 5988 en une représentation compacte, application/link-format. Elle a enregistré /.well-known/core dans le cadre des URI bien connues comme point de départ de la découverte.
  • Un lien peut préciser le type de ressource avec rt, l’interface avec if, le format du contenu avec ct et une estimation de taille maximale avec sz. Le filtrage par requête reste facultatif pour le serveur.
  • La liste indique où envoyer la demande suivante. La mesure ou le résultat vient d’une réponse de la ressource elle-même. CoAP a ensuite intégré la découverte des ressources à son modèle pour les nœuds contraints.

Une machine sans réceptionniste

Sur le Web ordinaire, une personne suit des liens visibles. Dans une installation technique, un contrôleur n’a ni écran ni employé pour chercher un thermomètre ou un détecteur de lumière. La RFC 6690 décrit des microcontrôleurs huit bits, une mémoire limitée et des réseaux économes en énergie. Une liste de chemins figée dans chaque contrôleur devient fausse dès qu’un capteur est remplacé ou qu’une ressource change de place. L’appareil continue alors de frapper à l’ancienne adresse.

Le standard fixe une seule porte d’entrée : /.well-known/core. Un serveur qui met en œuvre la RFC fournit cette ressource sur le port par défaut du protocole concerné. Un GET renvoie un corps au format CoRE Link Format ; s’il n’y a rien à annoncer, le corps peut être vide. L’exemple </sensors/temp>;rt="temperature-c";if="sensor" tient dans une courte chaîne : chemin, catégorie de ressource et type d’interface. Le client peut y repérer un capteur, puis envoyer une autre demande à l’URI choisie.

Les deux demandes répondent à deux questions. La première obtient une carte ; la seconde atteint la chose cherchée. Une carte peut annoncer un capteur éteint, un chemin devenu inaccessible ou une fonction soumise à autorisation. La découverte est utile parce qu’elle concentre le travail de recherche à un endroit stable, tout en laissant chaque ressource répondre à sa propre adresse.

Le lien quitte l’en-tête

La RFC 5988 liait un contexte à une cible par une relation typée. La RFC 6690 emprunte la syntaxe du champ HTTP Link, puis la fait voyager comme représentation d’une ressource avec le type de média application/link-format. Une URI cible se place entre chevrons, ses attributs suivent, et des virgules séparent plusieurs descriptions. Pour un petit serveur, cette grammaire se lit sans construire un arbre XML. Pour le client, le guichet peut être demandé directement au lieu d’être récupéré dans l’en-tête d’une autre réponse.

Les attributs courts n’ont pas le même sens. rt indique un type sémantique choisi par l’application, comme une mesure de température. if indique une interface pour interagir avec la cible ; plusieurs types de ressources peuvent utiliser la même interface. ct renseigne le format du contenu. sz estime la taille maximale de ce que GET renverrait, élément utile à une machine qui doit compter sa mémoire ou prévoir un transfert en blocs. Un rt n’est pas un nom lisible destiné à l’usager : le champ title répond à ce besoin.

Sans rel explicite, la relation prend la valeur hosts. Elle dit que le serveur constituant le contexte héberge la cible. Une relation ou un anchor explicite peut placer la cible dans un autre contexte, voire sur un autre serveur. Extraire seulement les URI d’une liste et jeter leurs relations ferait passer une description externe pour une ressource locale. Les quelques caractères économisés par le format n’effacent donc pas la question du détenteur de l’adresse.

Un guichet assez petit pour le réseau

Le serveur n’est pas obligé d’énumérer tous ses capteurs à plat dans /.well-known/core. L’application décide des liens présents et de leur organisation. Elle peut annoncer /sensors comme collection, puis laisser cette collection décrire les capteurs individuels. Chaque demande de découverte évite ainsi de recevoir tout l’inventaire du bâtiment.

Un client peut aussi chercher GET /.well-known/core?rt=light-lux. La RFC permet au serveur d’appliquer ce filtre au type de ressource ; elle ne l’y oblige pas. Devant une réponse vide, il faut savoir si le serveur a réellement appliqué le critère, s’il publie peu de liens ou s’il présente une vue différente à ce demandeur. rt et if sont des vocabulaires d’application. Aucun catalogue universel de modèles d’appareils ne sort de cette seule syntaxe.

Les capteurs peuvent dormir, et un réseau étroit ne souhaite pas être interrogé par tous les clients à tout moment. La RFC esquisse alors un répertoire de ressources : une entité plus capable recueille les liens d’autres serveurs et offre une interface de recherche. Elle laisse les détails de ce répertoire à des spécifications ultérieures. Le serveur d’origine fournit sa description ; le répertoire en garde une copie ; le client choisit une cible ; enfin la ressource répond. Le répertoire peut vieillir pendant que l’appareil change.

La carte a son propre gardien

Cette petite architecture assemble des accords successifs. La RFC 5785 fournit l’emplacement bien connu ; la RFC 5988 fournit les relations entre liens ; la RFC 6690 apporte une représentation compacte pour les machines contraintes. Publiée en 2014, la RFC 7252 place la découverte dans le protocole CoAP. Le résultat est un point de départ local sur chaque serveur, pas un registre central de tous les capteurs.

Le serveur choisit ce qu’il annonce. Il peut protéger son guichet et produire des listes différentes selon l’identité du client. Mais cacher un lien ne bloque pas celui qui connaît ou devine déjà l’URI ; la ressource doit encore juger la demande qui lui parvient. Si l’identité de l’auteur de la carte compte, le client doit authentifier sa source. Guichet, répertoire et ressource sont des lieux de décision distincts.

Les quatre textes officiels établissent le format, l’adresse enregistrée et l’enchaînement prévu. Pour prouver l’usage par un bâtiment nommé, il faudrait le micrologiciel daté, une réponse /.well-known/core capturée et l’échange suivant avec le capteur. Notre contrôleur a trouvé l’adresse au guichet. La lumière mesurée vient de l’appareil derrière la porte.