CoAP 【Constrained Application Protocol】
概要
CoAP(Constrained Application Protocol)とは、機能や性能が限られた機器でも効率的に通信できるように設計されたアプリケーションプロトコルの一つ。IoTやM2Mでセンサー装置など非力な端末が用いることを想定している。インターネットなどのIPネットワークで用いるアプリケーション層のプロトコル(通信規約)の一つで、仕様を極力簡素化し、CPU性能やメモリ容量の限られた装置でも効率的に動作するよう配慮されている。
伝送効率を考慮して標準ではトランスポート層にUDP(User Datagram Protocol)を利用し、セキュリティ確保が必要な状況ではDTLS(Datagram TLS)により伝送路を暗号化することもできる。標準のポート番号は5683番で、DTLSを用いる場合は5684番を用いる。
メッセージの先頭は制御情報を記したヘッダ領域で、伝送したい内容は続くペイロード部に記載する。ヘッダの先頭4バイトはバージョン(2ビット)、タイプ(2ビット)、トークンの長さ(4ビット)、リクエスト/レスポンスコード(8ビット)、メッセージID(16ビット)で、その後に必要であればトークン(0~8バイト)、オプションが続く。
資源の識別には「coap://」あるいは「coaps://」(DTLS併用の場合)で始まるURIが用いられ、Content-Typeヘッダフィールドで資源の種類(データ形式)を指定できるなど、Web(HTTP)に近い仕様となっている。実際、CoAPプロキシというシステムを介することで簡単にWebシステムと相互接続することができる。
2014年にIETFによってRFC 7252として標準化された。IoTに適したプロトコルとして先行するMQTT(Message Queueing Telemetry Transport)がよく知られるが、こちらは「Pub/Subモデル」と呼ばれる配信モデルでデータを伝送する。CoAPはHTTPに近いため、REST APIなどWeb系の技術でIoTシステムを構築したい場合などに適している。