Summary

  • RFC 6690 defined application/link-format, a compact resource representation based on the Web Linking model in RFC 5988. It registered /.well-known/core under the well-known URI framework as the default entry point for a constrained server's links.
  • A returned link can name a resource and describe it with rt for resource type, if for interface, ct for content format, and sz for a maximum-size estimate. A client can ask for a filtered list, but the server is free to omit filtering or organize the links behind another entry point.
  • The link list lets a client choose where to send its next request. The target resource's response supplies the reading or result. CoAP later made resource discovery part of its constrained transfer model.

A machine cannot ask the receptionist

The Web could let people follow visible links. A small controller tucked into a heating system has no screen and no person to browse on its behalf. It must discover which resource represents a temperature sensor, a light meter or a switch while conserving memory and traffic. RFC 6690 describes this machine-to-machine problem against a world of eight-bit microcontrollers and low-power networks. Static paths work until a device is replaced, a resource moves or a new type joins the system. Then a controller with yesterday's address book starts knocking at the wrong door.

The standard placed a known door at /.well-known/core. A server implementing the format supports that resource on the relevant protocol's default port. A GET returns a payload of links, possibly zero bytes if there are none. In the RFC's example, a response can contain </sensors/temp>;rt="temperature-c";if="sensor" beside a link to a light sensor. Those few bytes give a client a target and hints about what it may find there. The client can follow the chosen URI with another request.

That sequence matters more than the word “discovery.” The first GET obtains a map. The second reaches a resource. A listed light sensor can be unreachable later, return a different reading, or require an access decision at the target. The map is useful precisely because it concentrates the search step at a stable address while leaving each actual resource at its own address.

The link moved out of the header

RFC 5988 gave Web Linking a typed relation between a context and a target. RFC 6690 took the familiar HTTP Link header syntax and made it a resource representation with its own media type, application/link-format. Commas separate link descriptions; each target appears between angle brackets, followed by attributes. That compact text can be parsed without an XML tree or a heavier catalog format. The published payload can also be cached or moved through systems that handle representations rather than inspect response headers.

Each attribute answers a different question. rt is an application-defined resource type: a noun such as a temperature reading. if describes the interface used to interact with it, and the same interface can serve several resource types. ct indicates a content format. sz estimates the maximum size of a representation returned by GET, useful when a small client must decide whether a transfer can fit. An rt string is not a human label; the standard uses title for that. A server's choice of attributes gives the client a way to choose, without making every link a promise that the next exchange will succeed.

An absent rel has a defined default: hosts. That says the link's context server hosts the target. An explicit relation or anchor can describe another connection, including a resource on another server. A client must preserve that context; stripping the relation and collecting bare URIs would make a remote description look like a local hosted resource. The difference is small in bytes and large in meaning.

The front desk can be short

The well-known resource is an entry point, not a demand to publish every sensor in one enormous response. RFC 6690 lets the application choose which links appear and how they are organized. It can list a collection such as /sensors, then place individual members behind that collection's own link-format response. A small node need not dump its entire address book whenever any client asks what it has.

Clients may also ask a focused question: GET /.well-known/core?rt=light-lux requests links whose resource type matches light-lux. The specification permits filtering but does not require a server to implement it. A client cannot mistake silence after a filtered query for proof that no matching resource exists until it knows how that server handles the query. The RFC's examples use resource type and interface description as search handles; these are vocabulary chosen by applications, not a worldwide list of every device model.

Some sensors sleep, and some networks cannot afford a direct query to every endpoint. RFC 6690 therefore sketches a resource directory that can collect links from other servers. It leaves the directory's full behavior to separate specifications. This is a practical division of work. The constrained node can publish its small description; a more capable node can maintain a searchable view. The address in the directory still leads back to the resource that must answer the real request.

A map with a custodian

The 2012 format is a sharp example of the Internet's small agreements doing useful work. RFC 5785 supplied the well-known URI convention; RFC 5988 supplied the link relation model; RFC 6690 gave constrained servers a compact payload and a common entry point. RFC 7252, published in 2014, incorporated resource discovery into CoAP's model for constrained nodes. The sequence did not make one giant registry of every sensor. It made one local place where a client could begin.

The operator of that place decides what to list. A server can tailor discovery to the requester's identity and protect the discovery endpoint, but a hidden URI alone cannot protect an actuator that someone can guess. The standard says a server may return different link lists to different clients; the target's access control still carries the decision when a client tries to use it. A link can also point to a false resource if the source is untrusted, so a client that needs a known source must authenticate it.

The official records establish the syntax, the registered entry point and the intended discovery sequence. A named building deployment would need dated device firmware, its actual /.well-known/core response and the subsequent sensor exchange to show that this design ran there. The controller in our opening gets a route from the small front desk. The light reading comes from the sensor on the other side of the door.