Passa al contenuto principale

7. Discovery (Scoperta)

7.1. Service Discovery (Scoperta del Servizio)

Come parte della scoperta dei servizi offerti da un server CoAP, un client deve conoscere l'endpoint utilizzato da un server.

Un client potrebbe scoprire un server (conoscendo o) apprendendo un URI che fa riferimento a una risorsa nello spazio dei nomi del server. In alternativa, un client potrebbe utilizzare CoAP multicast (vedere Sezione 8) e l'indirizzo multicast "All CoAP Nodes" per trovare server CoAP.

A meno che il sottocomponente port in un URI "coap" o "coaps" non indichi la porta UDP su cui si trova il server CoAP, si presume che il server sia raggiungibile alla porta predefinita.

Un server che offre servizi di scoperta delle risorse DEVE supportare il numero di porta predefinito CoAP 5683 (per la scoperta delle risorse e per le risorse a cui fornisce accesso), e DOVREBBE supportare il numero di porta predefinito 5684 per CoAP protetto da DTLS. Inoltre, altri endpoint possono essere ospitati su altre porte, ad esempio nello spazio delle porte dinamiche.

Nota di implementazione: Quando un server CoAP è ospitato da un nodo 6LoWPAN, l'efficienza di compressione dell'intestazione è migliorata quando supporta anche un numero di porta nello spazio delle porte UDP compresse definito in [RFC4944] e [RFC6282] nell'intervallo 61616-61631. (Si noti che, poiché la sua porta UDP differisce dalla porta predefinita, è un endpoint diverso da un server alla porta predefinita.)

7.2. Resource Discovery (Scoperta delle Risorse)

La scoperta delle risorse offerte da un endpoint CoAP è estremamente importante nelle applicazioni machine-to-machine dove non ci sono esseri umani nel ciclo e le interfacce statiche portano a fragilità. Per massimizzare l'interoperabilità in un ambiente CoRE, un endpoint CoAP DOVREBBE supportare il formato di collegamento CoRE delle risorse scopribili come descritto in [RFC6690] e renderlo disponibile al percorso di scoperta predefinito "/.well-known/core". Allo stesso modo, gli host dovrebbero offrire Web Linking [RFC5988] sui loro server HTTP e renderlo disponibile allo stesso percorso di scoperta predefinito, a meno che non sia desiderata una configurazione manuale. Spetta al server decidere quali risorse sono rese scopribili (se presenti).

7.2.1. 'ct' Attribute (Attributo 'ct')

Questa sezione definisce un nuovo attributo Web Linking [RFC5988] da utilizzare con [RFC6690]. L'attributo del codice di formato del contenuto "ct" fornisce un suggerimento sui formati di contenuto restituiti da questa risorsa. Si noti che questo è solo un suggerimento e non sostituisce l'opzione Content-Format di una risposta CoAP ottenuta richiedendo effettivamente la rappresentazione della risorsa. Il valore è nel formato del codice identificatore CoAP come intero ASCII decimale e DEVE essere nell'intervallo 0-65535 (intero senza segno a 16 bit). Ad esempio, "application/xml" sarebbe indicato come "ct=41". Se non è presente alcun attributo del codice di formato del contenuto, non si può presumere nulla sul tipo. L'attributo del codice di formato del contenuto PUÒ includere una sequenza separata da spazi di codici di formato del contenuto, indicando che sono disponibili più formati di contenuto. La sintassi del valore dell'attributo è riassunta nella produzione "ct-value" nella Figura 12, dove le definizioni di "cardinal", "SP" e "DQUOTE" sono come in [RFC6690].

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

Figura 12