CoAP
IT 위키
더 많은 작업
- Constrained Application Protocol
- 처리 능력과 전력, 네트워크 대역이 제한된 사물인터넷 기기를 위해 만들어진 경량 응용 계층 프로토콜
- 사물인터넷 의 센서·액추에이터처럼 메모리가 수십 KB 수준이고 배터리로 동작하는
기기에서 HTTP 를 그대로 쓰기 어렵다는 문제에서 출발했다.
- IETF 가 RFC 7252 로 표준화했다.
- REST 모델을 따른다. 자원을 URI 로 가리키고 GET·POST·PUT·DELETE 메소드로 다룬다.
HTTP 와 개념이 같아 프록시를 두면 서로 변환할 수 있다.
- 전송 계층으로 UDP 를 쓴다. 헤더가 4바이트로 작고 연결 설정 과정이 없어
오버헤드가 적다. 대신 신뢰성은 프로토콜이 직접 처리한다.
- 보안은 DTLS(Datagram TLS)로 확보한다. TLS 를 UDP 위에서 쓸 수 있게 한 것이다.
| 유형 | 뜻 |
|---|---|
| CON(Confirmable) | 수신 측이 ACK 로 응답해야 하는 메시지. 응답이 없으면 재전송한다 |
| NON(Non-confirmable) | 응답을 요구하지 않는 메시지. 주기적인 센서값 전송에 쓴다 |
| ACK(Acknowledgement) | CON 메시지를 받았음을 알리는 응답 |
| RST(Reset) | 메시지를 처리할 수 없음을 알리는 응답 |
CON/ACK 와 메시지 ID 로 재전송과 중복 제거를 처리하므로, UDP 를 쓰면서도 필요한 만큼의 신뢰성을 얻는다. 요청에 대한 응답은 ACK 에 실어 보내거나(piggyback) 나중에 따로 보낸다.
클라이언트가 GET 요청에 Observe 옵션을 붙이면, 자원의 값이 바뀔 때마다 서버가 응답을 다시 보낸다. 주기적으로 조회하지 않아도 되므로 전력과 트래픽을 아낀다.