Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:laboratoare:2025:lab4 [2025/10/12 20:53]
dan.tudose [Messages, Types, and Reliability]
iothings:laboratoare:2025:lab4 [2025/10/12 20:58] (current)
dan.tudose
Line 71: Line 71:
  
 Because it rides over UDP by default, CoAP specifies conservative retransmission backoff, leaky‑bucket style pacing, and limits on simultaneous confirmable messages. Implementations typically expose tunables for **ACK_TIMEOUT**,​ **ACK_RANDOM_FACTOR**,​ and **MAX_RETRANSMIT**. The aim is politeness on shared, lossy links: back off early, avoid bursts, and prefer NON traffic when eventual consistency suffices. Because it rides over UDP by default, CoAP specifies conservative retransmission backoff, leaky‑bucket style pacing, and limits on simultaneous confirmable messages. Implementations typically expose tunables for **ACK_TIMEOUT**,​ **ACK_RANDOM_FACTOR**,​ and **MAX_RETRANSMIT**. The aim is politeness on shared, lossy links: back off early, avoid bursts, and prefer NON traffic when eventual consistency suffices.
- 
-===== Design Tips for Real Deployments ===== 
- 
-Plan the resource tree as if you were designing a public API. Use nouns for resources, reserve verbs for state changes, and stick to predictable shapes so intermediaries can cache intelligently. Choose compact encodings (CBOR) for high‑volume telemetry but keep human‑readable JSON for diagnostics. Embrace **ETags** and **Max‑Age** to cut chatter; adopt **Observe** for state that changes often; and reach for **Block‑Wise** when transferring anything larger than your typical MTU. For security, default to **OSCORE** when proxies are involved, and to **DTLS/​TLS** when you control both endpoints and want a protected channel. Document your **Content‑Format** numbers and keep a registry in your codebase to avoid mismatches during updates. 
- 
-===== Example Exchange ===== 
- 
-Below is a minimal round‑trip. The client fetches a temperature resource and receives a piggybacked response. Encoding is shown schematically rather than byte‑exact:​ 
- 
-<​code>​ 
-Client → Server 
-CON, MID=0x4A3B, Token=0xC1 
-Code=GET 
-Uri-Path: "​sensors"​ 
-Uri-Path: "​temp"​ 
-Accept: application/​cbor 
- 
-Server → Client 
-ACK (to 0x4A3B), Token=0xC1 
-Code=2.05 Content 
-Content-Format:​ application/​cbor 
-Payload: { "​t":​ 21.6, "​u":​ "​C"​ } 
-</​code>​ 
- 
-Subsequent updates could use Observe so the server pushes new readings as they happen, each carrying the same token and an incremented Observe sequence value. 
- 
-===== Troubleshooting Checklist (Short) ===== 
- 
-  - Ordered List Item If a client waits forever, verify message types: a CON should elicit an ACK or a separate response; mismatched tokens often indicate a stale or retransmitted request. 
-  - Ordered List Item When payloads seem truncated, confirm **Block2** negotiation and size exponents on both ends. 
-  - Ordered List Item Cache weirdness is frequently an **ETag** or **Max‑Age** problem; change the representation without changing the tag and your intermediaries will happily serve old data. 
-  - Ordered List Item Interop failures through proxies usually trace to **Content‑Format** vs **Content‑Type** differences;​ ensure your mappings are explicit and consistent. 
- 
-===== When to Choose CoAP (and When Not To) ===== 
- 
-Pick CoAP when you need web‑style resource semantics on severely constrained devices, when UDP is available and cheap, and when gateways, caches, and multicast discovery will simplify your topology. It shines for sensor/​actuator fleets, smart buildings, and industrial telemetry with intermittent connectivity. Prefer HTTP/HTTP/2 or gRPC when you require continuous high‑throughput streams, large messages without chunking, or when infrastructure mandates strictly connection‑oriented flows and rich middleware that already speaks HTTP at every hop. 
- 
-===== Key Standards to Know ===== 
- 
-  *  **RFC 7252** — base CoAP specification (methods, message formats, reliability). 
-  *  **RFC 7641** — Observe (server‑initiated notifications). 
-  *  **RFC 7959** — Block‑Wise transfers (chunking). 
-  *  **RFC 8323** — CoAP over TCP, TLS, and WebSockets. 
-  *  **RFC 8613** — OSCORE (object security, end‑to‑end protection). 
-  *  **CoRE Link Format / /​.well-known/​core/​** — discovery and typed links. 
  
  
iothings/laboratoare/2025/lab4.1760291615.txt.gz · Last modified: 2025/10/12 20:53 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0