Aller au contenu principal

7. Discovery (Découverte)

7.1. Service Discovery (Découverte de Service)

Dans le cadre de la découverte des services offerts par un serveur CoAP, un client doit se renseigner sur le point de terminaison utilisé par un serveur.

Un client peut découvrir un serveur en (connaissant ou) apprenant un URI qui référence une ressource dans l'espace de noms du serveur. Alternativement, un client pourrait utiliser CoAP multicast (voir Section 8) et l'adresse multicast "All CoAP Nodes" pour trouver des serveurs CoAP.

À moins que le sous-composant port dans un URI "coap" ou "coaps" n'indique le port UDP sur lequel se trouve le serveur CoAP, le serveur est supposé être accessible au port par défaut.

Un serveur qui offre des services de découverte de ressources DOIT supporter le numéro de port par défaut CoAP 5683 (pour la découverte de ressources et pour les ressources auxquelles il donne accès), et DEVRAIT supporter le numéro de port par défaut 5684 pour CoAP sécurisé par DTLS. De plus, d'autres points de terminaison peuvent être hébergés sur d'autres ports, par exemple dans l'espace de ports dynamiques.

Note d'implémentation: Lorsqu'un serveur CoAP est hébergé par un nœud 6LoWPAN, l'efficacité de compression d'en-tête est améliorée lorsqu'il supporte également un numéro de port dans l'espace de ports UDP compressé défini dans [RFC4944] et [RFC6282] dans la plage 61616-61631. (Notez que, comme son port UDP diffère du port par défaut, c'est un point de terminaison différent d'un serveur au port par défaut.)

7.2. Resource Discovery (Découverte de Ressources)

La découverte des ressources offertes par un point de terminaison CoAP est extrêmement importante dans les applications machine à machine où il n'y a pas d'humains dans la boucle et les interfaces statiques entraînent une fragilité. Pour maximiser l'interopérabilité dans un environnement CoRE, un point de terminaison CoAP DEVRAIT supporter le format de lien CoRE des ressources découvrables comme décrit dans [RFC6690] et le rendre disponible au chemin de découverte par défaut "/.well-known/core". De même, les hôtes devraient offrir Web Linking [RFC5988] sur leurs serveurs HTTP et le rendre disponible au même chemin de découverte par défaut, sauf si une configuration manuelle est souhaitée. C'est au serveur de décider quelles ressources sont rendues découvrables (le cas échéant).

7.2.1. 'ct' Attribute (Attribut 'ct')

Cette section définit un nouvel attribut Web Linking [RFC5988] pour une utilisation avec [RFC6690]. L'attribut de code de format de contenu "ct" fournit une indication sur les formats de contenu que cette ressource retourne. Notez que ceci n'est qu'une indication, et elle ne remplace pas l'option Content-Format d'une réponse CoAP obtenue en demandant réellement la représentation de la ressource. La valeur est au format de code d'identifiant CoAP en tant qu'entier ASCII décimal et DOIT être dans la plage 0-65535 (entier non signé 16 bits). Par exemple, "application/xml" serait indiqué comme "ct=41". Si aucun attribut de code de format de contenu n'est présent, alors rien ne peut être supposé sur le type. L'attribut de code de format de contenu PEUT inclure une séquence séparée par des espaces de codes de format de contenu, indiquant que plusieurs formats de contenu sont disponibles. La syntaxe de la valeur de l'attribut est résumée dans la production "ct-value" dans la Figure 12, où les définitions de "cardinal", "SP" et "DQUOTE" sont comme dans [RFC6690].

ct-value =  cardinal
/ DQUOTE cardinal *( 1*SP cardinal ) DQUOTE

Figure 12